Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/.gitignore1
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF21
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/about.html28
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/build.properties6
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/eTrice-rt.launch32
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ActorClass.gifbin0 -> 137 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ActorRef.gifbin0 -> 127 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ConjPort.gifbin0 -> 124 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ConjRelayPort.gifbin0 -> 121 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplPort.gifbin0 -> 129 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplRelayPort.gifbin0 -> 128 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/DataClass.gifbin0 -> 125 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/LogicalSystem.gifbin0 -> 141 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/Message.gifbin0 -> 135 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/Operation.gifbin0 -> 156 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/Port.gifbin0 -> 117 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ProtocolClass.gifbin0 -> 123 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/RefinedState.gifbin0 -> 124 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/RelayPort.gifbin0 -> 117 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ReplPort.gifbin0 -> 128 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ReplRelayPort.gifbin0 -> 127 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/RoomModel.gifbin0 -> 145 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/RoomModelImport.gifbin0 -> 157 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/SAP.gifbin0 -> 111 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/SPP.gifbin0 -> 115 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/ServiceImpl.gifbin0 -> 120 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/State.gifbin0 -> 117 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemClass.gifbin0 -> 141 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemRef.gifbin0 -> 127 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/Thumbs.dbbin0 -> 9216 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/etrice.icobin0 -> 1078 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/etrice16.icobin0 -> 894 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/icons/etrice_doc16.icobin0 -> 894 bytes
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/plugin.xml244
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/plugin.xml_gen184
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/AbstractRoomUiModule.java127
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/RoomExecutableExtensionFactory.java28
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/AbstractRoomProposalProvider.java696
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/RoomParser.java341
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g16199
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.tokens96
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomLexer.java6574
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomParser.java45018
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom__.g121
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/internal/RoomActivator.java73
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomModelValidator.java91
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomUiModule.java29
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/IProposalFilter.java21
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/RoomProposalProvider.java110
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomDescriptionLabelProvider.java36
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomLabelProvider.java303
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStateMachineHandler.java26
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStructureHandler.java57
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomOutlineNodeAdapterFactory.java38
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomTransformer.java159
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/quickfix/RoomQuickfixProvider.java30
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/templates/readme.txt1
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/templates/templates.xml46
-rw-r--r--plugins/org.eclipse.etrice.core.room/.gitignore1
-rw-r--r--plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF32
-rw-r--r--plugins/org.eclipse.etrice.core.room/about.html28
-rw-r--r--plugins/org.eclipse.etrice.core.room/build.properties4
-rw-r--r--plugins/org.eclipse.etrice.core.room/gen_room.launch17
-rw-r--r--plugins/org.eclipse.etrice.core.room/plugin.properties8
-rw-r--r--plugins/org.eclipse.etrice.core.room/plugin.xml18
-rw-r--r--plugins/org.eclipse.etrice.core.room/plugin.xml_gen18
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/AbstractRoomRuntimeModule.java132
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore332
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.genmodel267
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.xmi1612
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/RoomStandaloneSetupGenerated.java44
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parseTreeConstruction/RoomParsetreeConstructor.java15545
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomAntlrTokenFileProvider.java15
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomParser.java56
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g6227
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.tokens96
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomLexer.java6574
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomParser.java15967
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom__.g121
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorClass.java282
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerClass.java62
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerRef.java55
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorInstancePath.java47
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorRef.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Attribute.java109
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BaseState.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Binding.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BindingEndPoint.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/CPBranchTransition.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicePoint.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicepointTerminal.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ContinuationTransition.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DataClass.java106
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DetailCode.java47
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/EntryPoint.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExitPoint.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExternalPort.java55
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeType.java85
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeTypedID.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Guard.java55
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Import.java55
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InitialTransition.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InterfaceItem.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LayerConnection.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalSystem.java45
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalThread.java74
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Message.java74
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageFromIf.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageHandler.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/NonInitialTransition.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Operation.java128
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Port.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PortClass.java108
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PrimitiveType.java497
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolClass.java224
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolSemantics.java47
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefSAPoint.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefinedState.java63
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RelaySAPoint.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomClass.java55
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomFactory.java641
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomModel.java159
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomPackage.java6531
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPRef.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPoint.java23
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPRef.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPoint.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsInRule.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsOutRule.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsRule.java74
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ServiceImplementation.java55
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/State.java108
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraph.java98
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphItem.java23
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphNode.java22
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateTerminal.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StructureClass.java62
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubStateTrPointTerminal.java81
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemClass.java62
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemRef.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPoint.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPointTerminal.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Transition.java108
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionPoint.java54
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionTerminal.java23
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Trigger.java74
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TriggeredTransition.java45
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Type.java85
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TypedID.java82
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorClassImpl.java756
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerClassImpl.java208
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerRefImpl.java181
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorInstancePathImpl.java167
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorRefImpl.java176
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/AttributeImpl.java325
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BaseStateImpl.java180
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingEndPointImpl.java243
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingImpl.java269
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/CPBranchTransitionImpl.java197
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicePointImpl.java180
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicepointTerminalImpl.java176
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ContinuationTransitionImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DataClassImpl.java315
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DetailCodeImpl.java167
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/EntryPointImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExitPointImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExternalPortImpl.java177
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypeImpl.java238
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypedIDImpl.java269
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/GuardImpl.java198
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ImportImpl.java181
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InitialTransitionImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InterfaceItemImpl.java248
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LayerConnectionImpl.java270
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalSystemImpl.java169
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalThreadImpl.java244
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageFromIfImpl.java243
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageHandlerImpl.java264
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageImpl.java244
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/NonInitialTransitionImpl.java197
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/OperationImpl.java388
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortClassImpl.java323
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortImpl.java236
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolClassImpl.java633
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolSemanticsImpl.java171
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefSAPointImpl.java176
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefinedStateImpl.java186
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RelaySAPointImpl.java176
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomClassImpl.java181
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomFactoryImpl.java959
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomModelImpl.java439
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomPackageImpl.java3108
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPRefImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPointImpl.java48
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPRefImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPointImpl.java243
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsInRuleImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsOutRuleImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsRuleImpl.java238
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ServiceImplementationImpl.java177
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphImpl.java288
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphItemImpl.java48
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphNodeImpl.java46
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateImpl.java340
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateTerminalImpl.java176
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StructureClassImpl.java208
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubStateTrPointTerminalImpl.java242
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemClassImpl.java208
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemRefImpl.java176
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointImpl.java180
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointTerminalImpl.java176
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionImpl.java340
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionPointImpl.java180
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionTerminalImpl.java48
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggerImpl.java245
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggeredTransitionImpl.java169
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypeImpl.java249
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypedIDImpl.java269
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomAdapterFactory.java1456
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomSwitch.java1722
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/services/RoomGrammarAccess.java4319
-rw-r--r--plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/validation/AbstractRoomJavaValidator.java20
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/GenerateRoom.mwe2129
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.ecorediag2784
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.properties3
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.xtext376
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomPostprocessor.ext57
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomRuntimeModule.java35
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomStandaloneSetup.java29
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/formatting/RoomFormatter.java34
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomFragmentProvider.java487
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomNameProvider.java210
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomQualifiedNameProvider.java53
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/ActorRefFilter.java51
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/FilteringScope.java66
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/RoomScopeProvider.java803
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/RoomJavaValidator.java121
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidationUtil.java436
-rw-r--r--plugins/org.eclipse.etrice.generator.java/.gitignore1
-rw-r--r--plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.xtend.shared.ui.prefs3
-rw-r--r--plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF21
-rw-r--r--plugins/org.eclipse.etrice.generator.java/about.html28
-rw-r--r--plugins/org.eclipse.etrice.generator.java/build.properties4
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/extensions/Extensions.ext190
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaGenerator.java138
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaTransitionChainVisitor.java101
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/ActorClass.xpt140
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/DataClass.xpt48
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/Main.xpt23
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/ProcedureHelpers.xpt55
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/ProtocolClass.xpt222
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/StateMachine.xpt228
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemClass.xpt83
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemRunner.xpt70
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/workflow/RoomGenerator.mwe262
-rw-r--r--plugins/org.eclipse.etrice.generator/.gitignore1
-rw-r--r--plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF41
-rw-r--r--plugins/org.eclipse.etrice.generator/about.html28
-rw-r--r--plugins/org.eclipse.etrice.generator/build.properties14
-rw-r--r--plugins/org.eclipse.etrice.generator/model/etricegen.ecore197
-rw-r--r--plugins/org.eclipse.etrice.generator/model/etricegen.genmodel161
-rw-r--r--plugins/org.eclipse.etrice.generator/model/howto.txt3
-rw-r--r--plugins/org.eclipse.etrice.generator/plugin.properties8
-rw-r--r--plugins/org.eclipse.etrice.generator/plugin.xml21
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ILogger.java21
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/InstanceModelBuilder.java762
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ValidationException.java25
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActiveTrigger.java131
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActorInstance.java54
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/BindingInstance.java48
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ConnectionInstance.java140
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Counter.java72
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenFactory.java172
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenPackage.java2577
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ExpandedActorClass.java233
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/IDiagnostician.java13
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ITransitionChainVisitor.java24
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InstanceBase.java103
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InterfaceItemInstance.java44
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortInstance.java105
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortKind.java239
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Root.java170
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SAPInstance.java54
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SPPInstance.java103
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ServiceImplInstance.java54
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/StructureInstance.java180
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SubSystemInstance.java81
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/TransitionChain.java81
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActiveTriggerImpl.java333
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActorInstanceImpl.java157
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/BindingInstanceImpl.java171
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ConnectionInstanceImpl.java424
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/CounterImpl.java187
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenFactoryImpl.java304
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenPackageImpl.java1120
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ExpandedActorClassImpl.java1191
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InstanceBaseImpl.java254
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InterfaceItemInstanceImpl.java135
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/PortInstanceImpl.java294
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/RootImpl.java590
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SAPInstanceImpl.java158
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SPPInstanceImpl.java318
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ServiceImplInstanceImpl.java160
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/StructureInstanceImpl.java473
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SubSystemInstanceImpl.java241
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/TransitionChainImpl.java302
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenAdapterFactory.java507
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceFactoryImpl.java45
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceImpl.java32
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenSwitch.java557
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActiveTriggerValidator.java28
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActorInstanceValidator.java21
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/BindingInstanceValidator.java23
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ConnectionInstanceValidator.java26
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/CounterValidator.java20
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ExpandedActorClassValidator.java21
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/IDiagnosticianValidator.java19
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ITransitionChainVisitorValidator.java19
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InstanceBaseValidator.java22
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InterfaceItemInstanceValidator.java23
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/PortInstanceValidator.java28
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/RootValidator.java37
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SAPInstanceValidator.java21
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SPPInstanceValidator.java27
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ServiceImplInstanceValidator.java21
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/StructureInstanceValidator.java38
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SubSystemInstanceValidator.java23
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/TransitionChainValidator.java24
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/InstanceModelCreator.java108
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowComponentWithTwoSlots.java44
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowDiagnostician.java64
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/XtendStdlibLogger.java49
-rw-r--r--plugins/org.eclipse.etrice.generator/text/description.txt120
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/.gitignore1
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF24
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/about.html28
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/build.properties5
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/icons/ActorRef.gifbin0 -> 127 bytes
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/icons/Binding.gifbin0 -> 118 bytes
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/icons/LayerConnection.gifbin0 -> 120 bytes
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/icons/Port.gifbin0 -> 117 bytes
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/icons/SPP.gifbin0 -> 115 bytes
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/icons/Structure.gifbin0 -> 137 bytes
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/plugin.xml51
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/Activator.java77
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramAccess.java117
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramTypeProvider.java34
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ImageProvider.java34
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/NoResizeFeature.java42
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ProviderDispatcher.java425
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/commands/PopulateDiagramCommand.java353
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/AbstractPropertyDialog.java267
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/ActorContainerRefPropertyDialog.java150
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/PortPropertyDialog.java260
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/SPPPropertyDialog.java135
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/editor/StructureEditor.java29
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/ActorContainerRefSupport.java751
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/BindingSupport.java337
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/Constants.java22
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/InterfaceItemSupport.java743
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/LayerConnectionSupport.java317
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/PortSupport.java376
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/SPPSupport.java355
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/StructureClassSupport.java334
366 files changed, 182845 insertions, 0 deletions
diff --git a/plugins/org.eclipse.etrice.core.room.ui/.gitignore b/plugins/org.eclipse.etrice.core.room.ui/.gitignore
new file mode 100644
index 000000000..ba077a403
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..f697b2b48
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ROOM DSL UI
+Bundle-Vendor: eTrice (Incubation)
+Bundle-Version: 0.1.0
+Bundle-SymbolicName: org.eclipse.etrice.core.room.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0";visibility:=reexport,
+ org.eclipse.etrice.generator;bundle-version="0.1.0",
+ org.eclipse.etrice.ui.structure;bundle-version="0.1.0",
+ org.eclipse.ui;bundle-version="3.6.0",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui;bundle-version="1.0.1",
+ org.eclipse.xtext.ui.shared;bundle-version="1.0.1",
+ org.eclipse.xtext.builder;bundle-version="1.0.1",
+ org.antlr.runtime;bundle-version="3.0.0"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.etrice.core.ui.contentassist.antlr
+Bundle-Activator: org.eclipse.etrice.core.ui.internal.RoomActivator
diff --git a/plugins/org.eclipse.etrice.core.room.ui/about.html b/plugins/org.eclipse.etrice.core.room.ui/about.html
new file mode 100644
index 000000000..f47dbddbb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room.ui/build.properties b/plugins/org.eclipse.etrice.core.room.ui/build.properties
new file mode 100644
index 000000000..a0c7d1504
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,src-gen/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/
+
diff --git a/plugins/org.eclipse.etrice.core.room.ui/eTrice-rt.launch b/plugins/org.eclipse.etrice.core.room.ui/eTrice-rt.launch
new file mode 100644
index 000000000..cb038eaaa
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/eTrice-rt.launch
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/eTrice-rt"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../eTrice-rt"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -XX:MaxPermSize=256m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ActorClass.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ActorClass.gif
new file mode 100644
index 000000000..ab2f7c013
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ActorClass.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ActorRef.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ActorRef.gif
new file mode 100644
index 000000000..0612a135a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ActorRef.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ConjPort.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjPort.gif
new file mode 100644
index 000000000..3c21537de
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjPort.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ConjRelayPort.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjRelayPort.gif
new file mode 100644
index 000000000..6293f9827
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjRelayPort.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplPort.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplPort.gif
new file mode 100644
index 000000000..128111f1e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplPort.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplRelayPort.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplRelayPort.gif
new file mode 100644
index 000000000..636e40861
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ConjReplRelayPort.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/DataClass.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/DataClass.gif
new file mode 100644
index 000000000..6c3df57bf
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/DataClass.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/LogicalSystem.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/LogicalSystem.gif
new file mode 100644
index 000000000..91618faa9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/LogicalSystem.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/Message.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/Message.gif
new file mode 100644
index 000000000..064806d55
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/Message.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/Operation.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/Operation.gif
new file mode 100644
index 000000000..193a1e9f3
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/Operation.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/Port.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/Port.gif
new file mode 100644
index 000000000..d747901bb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/Port.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ProtocolClass.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ProtocolClass.gif
new file mode 100644
index 000000000..655c2eee2
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ProtocolClass.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/RefinedState.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/RefinedState.gif
new file mode 100644
index 000000000..27860139f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/RefinedState.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/RelayPort.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/RelayPort.gif
new file mode 100644
index 000000000..0f2d60916
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/RelayPort.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ReplPort.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ReplPort.gif
new file mode 100644
index 000000000..67a23f8a3
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ReplPort.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ReplRelayPort.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ReplRelayPort.gif
new file mode 100644
index 000000000..21f40354d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ReplRelayPort.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/RoomModel.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/RoomModel.gif
new file mode 100644
index 000000000..414613ba8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/RoomModel.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/RoomModelImport.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/RoomModelImport.gif
new file mode 100644
index 000000000..dc8d7b36d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/RoomModelImport.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/SAP.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/SAP.gif
new file mode 100644
index 000000000..a2f06152b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/SAP.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/SPP.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/SPP.gif
new file mode 100644
index 000000000..9ee0fb14c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/SPP.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/ServiceImpl.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/ServiceImpl.gif
new file mode 100644
index 000000000..91a2a0727
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/ServiceImpl.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/State.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/State.gif
new file mode 100644
index 000000000..4c98299d9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/State.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemClass.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemClass.gif
new file mode 100644
index 000000000..aa5c18c71
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemClass.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemRef.gif b/plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemRef.gif
new file mode 100644
index 000000000..a4d2ef123
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/SubSystemRef.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/Thumbs.db b/plugins/org.eclipse.etrice.core.room.ui/icons/Thumbs.db
new file mode 100644
index 000000000..cb0f7f3d0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/Thumbs.db
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/etrice.ico b/plugins/org.eclipse.etrice.core.room.ui/icons/etrice.ico
new file mode 100644
index 000000000..3b718314f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/etrice.ico
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/etrice16.ico b/plugins/org.eclipse.etrice.core.room.ui/icons/etrice16.ico
new file mode 100644
index 000000000..22531ba80
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/etrice16.ico
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/icons/etrice_doc16.ico b/plugins/org.eclipse.etrice.core.room.ui/icons/etrice_doc16.ico
new file mode 100644
index 000000000..5d95187c6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/icons/etrice_doc16.ico
Binary files differ
diff --git a/plugins/org.eclipse.etrice.core.room.ui/plugin.xml b/plugins/org.eclipse.etrice.core.room.ui/plugin.xml
new file mode 100644
index 000000000..29658c681
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/plugin.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+ contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+ default="true"
+ extensions="room"
+ icon="icons/etrice_doc16.ico"
+ id="org.eclipse.etrice.core.Room"
+ name="Room Editor">
+ </editor>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+ commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+ commandId="org.eclipse.etrice.core.Room.validate">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension point="org.eclipse.core.expressions.definitions">
+ <definition id="org.eclipse.etrice.core.Room.Editor.opened">
+ <and>
+ <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+ <with variable="activeEditor">
+ <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+ value="org.eclipse.etrice.core.Room"
+ forcePluginActivation="true"/>
+ </with>
+ </and>
+ </definition>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+ id="org.eclipse.etrice.core.Room"
+ name="Room">
+ <keywordReference id="org.eclipse.etrice.core.ui.keyword_Room"/>
+ </page>
+ <page
+ category="org.eclipse.etrice.core.Room"
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+ id="org.eclipse.etrice.core.Room.coloring"
+ name="Syntax Coloring">
+ <keywordReference id="org.eclipse.etrice.core.ui.keyword_Room"/>
+ </page>
+ <page
+ category="org.eclipse.etrice.core.Room"
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+ id="org.eclipse.etrice.core.Room.templates"
+ name="Templates">
+ <keywordReference id="org.eclipse.etrice.core.ui.keyword_Room"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.keywords">
+ <keyword
+ id="org.eclipse.etrice.core.ui.keyword_Room"
+ label="Room"/>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Trigger expensive validation"
+ id="org.eclipse.etrice.core.Room.validate"
+ name="Validate">
+ </command>
+ <command
+ description="open this ActorClass&apos;s structure as diagram"
+ id="org.eclipse.etrice.core.room.ui.editStructure"
+ name="Edit Structure">
+ </command>
+ <command
+ description="open this ActorClass&apos;s state machine as diagram"
+ id="org.eclipse.etrice.core.room.ui.editStateMachine"
+ name="Edit StateMachine">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.edit">
+ <command
+ commandId="org.eclipse.etrice.core.Room.validate"
+ style="push"
+ tooltip="Trigger expensive validation">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+ <command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+ commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+
+<!-- adding resource factories -->
+
+ <extension
+ point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+ type="room">
+ </parser>
+ </extension>
+ <extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+ <resourceServiceProvider
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+ uriExtension="room">
+ </resourceServiceProvider>
+ </extension>
+
+
+
+
+ <!-- Quick Outline -->
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+ commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.eclipse.etrice.core.ui.outline.EditStateMachineHandler"
+ commandId="org.eclipse.etrice.core.room.ui.editStateMachine">
+ </handler>
+ <handler
+ class="org.eclipse.etrice.core.ui.outline.EditStructureHandler"
+ commandId="org.eclipse.etrice.core.room.ui.editStructure">
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Open the quick outline."
+ id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ name="Quick Outline">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.open">
+ <command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ style="push"
+ tooltip="Open Quick Outline">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.etrice.core.Room.Editor.opened"/>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+ <command
+ commandId="org.eclipse.etrice.core.room.ui.editStateMachine"
+ label="Edit StateMachine"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <iterate>
+ <adapt
+ type="org.eclipse.etrice.core.room.ActorClass">
+ </adapt>
+ </iterate>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+ <command
+ commandId="org.eclipse.etrice.core.room.ui.editStructure"
+ label="Edit Structure"
+ style="push">
+ <visibleWhen>
+ <iterate operator="and" ifEmpty="false">
+ <or>
+ <adapt
+ type="org.eclipse.etrice.core.room.ActorClass">
+ </adapt>
+ <adapt
+ type="org.eclipse.etrice.core.room.SubSystemClass">
+ </adapt>
+ <adapt
+ type="org.eclipse.etrice.core.room.LogicalSystem">
+ </adapt>
+ </or>
+ </iterate>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <!-- quickfix marker resolution generator -->
+ <extension
+ point="org.eclipse.ui.ide.markerResolution">
+ <markerResolutionGenerator
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator">
+ </markerResolutionGenerator>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.etrice.core.room.ui/plugin.xml_gen b/plugins/org.eclipse.etrice.core.room.ui/plugin.xml_gen
new file mode 100644
index 000000000..19edeeef8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/plugin.xml_gen
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+ contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+ default="true"
+ extensions="room"
+ id="org.eclipse.etrice.core.Room"
+ name="Room Editor">
+ </editor>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+ commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+ commandId="org.eclipse.etrice.core.Room.validate">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension point="org.eclipse.core.expressions.definitions">
+ <definition id="org.eclipse.etrice.core.Room.Editor.opened">
+ <and>
+ <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+ <with variable="activeEditor">
+ <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+ value="org.eclipse.etrice.core.Room"
+ forcePluginActivation="true"/>
+ </with>
+ </and>
+ </definition>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+ id="org.eclipse.etrice.core.Room"
+ name="Room">
+ <keywordReference id="org.eclipse.etrice.core.ui.keyword_Room"/>
+ </page>
+ <page
+ category="org.eclipse.etrice.core.Room"
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+ id="org.eclipse.etrice.core.Room.coloring"
+ name="Syntax Coloring">
+ <keywordReference id="org.eclipse.etrice.core.ui.keyword_Room"/>
+ </page>
+ <page
+ category="org.eclipse.etrice.core.Room"
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+ id="org.eclipse.etrice.core.Room.templates"
+ name="Templates">
+ <keywordReference id="org.eclipse.etrice.core.ui.keyword_Room"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.keywords">
+ <keyword
+ id="org.eclipse.etrice.core.ui.keyword_Room"
+ label="Room"/>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Trigger expensive validation"
+ id="org.eclipse.etrice.core.Room.validate"
+ name="Validate">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.edit">
+ <command
+ commandId="org.eclipse.etrice.core.Room.validate"
+ style="push"
+ tooltip="Trigger expensive validation">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+ <command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+ commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+
+<!-- adding resource factories -->
+
+ <extension
+ point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+ type="room">
+ </parser>
+ </extension>
+ <extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+ <resourceServiceProvider
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+ uriExtension="room">
+ </resourceServiceProvider>
+ </extension>
+
+
+
+
+ <!-- Quick Outline -->
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+ commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.etrice.core.Room.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Open the quick outline."
+ id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ name="Quick Outline">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.open">
+ <command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ style="push"
+ tooltip="Open Quick Outline">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.etrice.core.Room.Editor.opened"/>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <!-- quickfix marker resolution generator -->
+ <extension
+ point="org.eclipse.ui.ide.markerResolution">
+ <markerResolutionGenerator
+ class="org.eclipse.etrice.core.ui.RoomExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator">
+ </markerResolutionGenerator>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/AbstractRoomUiModule.java b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/AbstractRoomUiModule.java
new file mode 100644
index 000000000..015799d76
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/AbstractRoomUiModule.java
@@ -0,0 +1,127 @@
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.etrice.core.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.etrice.core.ui.RoomUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractRoomUiModule extends DefaultUiModule {
+
+ public AbstractRoomUiModule(AbstractUIPlugin plugin) {
+ super(plugin);
+ }
+
+
+ // contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+ public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+ return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.jface.text.rules.ITokenScanner> bindITokenScanner() {
+ return org.eclipse.xtext.ui.editor.syntaxcoloring.antlr.AntlrTokenScanner.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+ return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.IDamagerRepairer> bindIDamagerRepairer() {
+ return org.eclipse.xtext.ui.editor.FastDamagerRepairer.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public void configureHighlightingLexer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.etrice.core.parser.antlr.internal.InternalRoomLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+ return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+ public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+ return org.eclipse.etrice.core.ui.labeling.RoomLabelProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+ public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.eclipse.etrice.core.ui.labeling.RoomDescriptionLabelProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.outline.TransformerFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.outline.transformer.ISemanticModelTransformer> bindISemanticModelTransformer() {
+ return org.eclipse.etrice.core.ui.outline.RoomTransformer.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.outline.OutlineNodeAdapterFactoryFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.outline.actions.IContentOutlineNodeAdapterFactory> bindIContentOutlineNodeAdapterFactory() {
+ return org.eclipse.etrice.core.ui.outline.RoomOutlineNodeAdapterFactory.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+ return org.eclipse.etrice.core.ui.contentassist.RoomProposalProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+ return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+ return org.eclipse.etrice.core.ui.contentassist.antlr.RoomParser.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomLexer.class));
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public void configureContentAssistLexer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractGlobalScopeProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.builderState.ShadowingResourceDescriptions.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+ return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+ return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+ return org.eclipse.etrice.core.ui.quickfix.RoomQuickfixProvider.class;
+ }
+
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/RoomExecutableExtensionFactory.java b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/RoomExecutableExtensionFactory.java
new file mode 100644
index 000000000..2c5961698
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/RoomExecutableExtensionFactory.java
@@ -0,0 +1,28 @@
+
+/*
+ * generated by Xtext
+ */
+
+package org.eclipse.etrice.core.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+/**
+ *@generated
+ */
+public class RoomExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+ @Override
+ protected Bundle getBundle() {
+ return org.eclipse.etrice.core.ui.internal.RoomActivator.getInstance().getBundle();
+ }
+
+ @Override
+ protected Injector getInjector() {
+ return org.eclipse.etrice.core.ui.internal.RoomActivator.getInstance().getInjector("org.eclipse.etrice.core.Room");
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/AbstractRoomProposalProvider.java b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/AbstractRoomProposalProvider.java
new file mode 100644
index 000000000..46d4e780f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/AbstractRoomProposalProvider.java
@@ -0,0 +1,696 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.etrice.core.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of interface {@link IProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them
+ * with a more concrete subtype.
+ */
+@SuppressWarnings("all")
+public class AbstractRoomProposalProvider extends TerminalsProposalProvider {
+
+ public void completeRoomModel_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRoomModel_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRoomModel_DataClasses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRoomModel_ProtocolClasses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRoomModel_ActorClasses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRoomModel_SubSystemClasses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRoomModel_Systems(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTypedID_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTypedID_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeFreeTypedID_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeFreeTypedID_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeType_Prim(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeType_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeFreeType_Prim(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeFreeType_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDataClass_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDataClass_Base(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDataClass_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDataClass_Attributes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDataClass_Operations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeAttribute_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeAttribute_Size(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeAttribute_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeOperation_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeOperation_Arguments(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeOperation_Returntype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeOperation_DetailCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_Base(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_UserCode1(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_UserCode2(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_IncomingMessages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_OutgoingMessages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_Regular(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_Conjugate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolClass_Semantics(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMessage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMessage_Arguments(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePortClass_UserCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePortClass_Attributes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePortClass_Operations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePortClass_MsgHandlers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMessageHandler_Msg(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMessageHandler_DetailCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeProtocolSemantics_Rules(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSemanticsInRule_Msg(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSemanticsInRule_FollowUps(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSemanticsOutRule_Msg(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSemanticsOutRule_FollowUps(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_Abstract(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void completeActorClass_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_Base(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_IfPorts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_IfSPPs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_UserCode1(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_UserCode2(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_IntPorts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_ExtPorts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_ServiceImplementations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_StrSAPs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_Attributes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_ActorRefs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_Bindings(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_Connections(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_Operations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorClass_StateMachine(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePort_Conjugated(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void completePort_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePort_Multiplicity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePort_Protocol(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeExternalPort_Ifport(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSAPRef_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSAPRef_Protocol(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSPPRef_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSPPRef_Protocol(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeServiceImplementation_Spp(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLogicalSystem_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLogicalSystem_SubSystems(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLogicalSystem_Bindings(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLogicalSystem_Connections(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemRef_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemRef_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemClass_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemClass_RelayPorts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemClass_IfSPPs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemClass_ActorRefs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemClass_Bindings(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemClass_Connections(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubSystemClass_Threads(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLogicalThread_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLogicalThread_Instances(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorInstancePath_Segments(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBinding_Endpoint1(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBinding_Endpoint2(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBindingEndPoint_ActorRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBindingEndPoint_Port(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLayerConnection_From(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLayerConnection_To(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRefSAPoint_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRelaySAPoint_Relay(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSPPoint_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSPPoint_Service(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorRef_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeActorRef_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateGraph_States(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateGraph_TrPoints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateGraph_ChPoints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateGraph_Transitions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateMachine_States(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateMachine_TrPoints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateMachine_ChPoints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateMachine_Transitions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBaseState_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBaseState_EntryCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBaseState_ExitCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBaseState_Subgraph(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRefinedState_Base(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRefinedState_EntryCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRefinedState_ExitCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeRefinedState_Subgraph(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDetailCode_Commands(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTransitionPoint_Handler(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void completeTransitionPoint_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeEntryPoint_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeExitPoint_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeChoicePoint_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeInitialTransition_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeInitialTransition_To(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeInitialTransition_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeContinuationTransition_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeContinuationTransition_From(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeContinuationTransition_To(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeContinuationTransition_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTriggeredTransition_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTriggeredTransition_From(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTriggeredTransition_To(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTriggeredTransition_Triggers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTriggeredTransition_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCPBranchTransition_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCPBranchTransition_From(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCPBranchTransition_To(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCPBranchTransition_Condition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCPBranchTransition_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeStateTerminal_State(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTrPointTerminal_TrPoint(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubStateTrPointTerminal_TrPoint(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeSubStateTrPointTerminal_State(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeChoicepointTerminal_Cp(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTrigger_MsgFromIfPairs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTrigger_Guard(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMessageFromIf_Message(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMessageFromIf_From(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeGuard_Guard(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+
+ public void complete_RoomModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_RoomClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_StructureClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ActorContainerClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_PrimitiveType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_TypedID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_FreeTypedID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Type(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_FreeType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_DataClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Attribute(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Operation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ProtocolClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Message(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_PortClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_MessageHandler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ProtocolSemantics(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SemanticsRule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SemanticsInRule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SemanticsOutRule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ActorClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_InterfaceItem(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Port(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ExternalPort(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SAPRef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SPPRef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ServiceImplementation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_LogicalSystem(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ActorContainerRef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SubSystemRef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SubSystemClass(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_LogicalThread(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ActorInstancePath(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Binding(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_BindingEndPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_LayerConnection(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SAPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_RefSAPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_RelaySAPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SPPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ActorRef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_StateGraphNode(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_StateGraphItem(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_State(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_StateGraph(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_StateMachine(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_BaseState(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_RefinedState(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_DetailCode(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_TrPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_TransitionPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_EntryPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ExitPoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ChoicePoint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Transition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_NonInitialTransition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_InitialTransition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ContinuationTransition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_TriggeredTransition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_CPBranchTransition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_TransitionTerminal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_StateTerminal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_TrPointTerminal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_SubStateTrPointTerminal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ChoicepointTerminal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Trigger(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_MessageFromIf(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Guard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Import(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ImportedFQN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_FQN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/RoomParser.java b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/RoomParser.java
new file mode 100644
index 000000000..f213e117a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/RoomParser.java
@@ -0,0 +1,341 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.etrice.core.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+import org.eclipse.etrice.core.services.RoomGrammarAccess;
+
+public class RoomParser extends AbstractContentAssistParser {
+
+ @Inject
+ private RoomGrammarAccess grammarAccess;
+
+ private Map<AbstractElement, String> nameMappings;
+
+ @Override
+ protected org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomParser createParser() {
+ org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomParser result = new org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomParser(null);
+ result.setGrammarAccess(grammarAccess);
+ return result;
+ }
+
+ @Override
+ protected String getRuleName(AbstractElement element) {
+ if (nameMappings == null) {
+ nameMappings = new HashMap<AbstractElement, String>() {
+ private static final long serialVersionUID = 1L;
+ {
+ put(grammarAccess.getRoomModelAccess().getAlternatives_4(), "rule__RoomModel__Alternatives_4");
+ put(grammarAccess.getRoomClassAccess().getAlternatives(), "rule__RoomClass__Alternatives");
+ put(grammarAccess.getStructureClassAccess().getAlternatives(), "rule__StructureClass__Alternatives");
+ put(grammarAccess.getActorContainerClassAccess().getAlternatives(), "rule__ActorContainerClass__Alternatives");
+ put(grammarAccess.getTypeAccess().getAlternatives(), "rule__Type__Alternatives");
+ put(grammarAccess.getFreeTypeAccess().getAlternatives(), "rule__FreeType__Alternatives");
+ put(grammarAccess.getPortClassAccess().getAlternatives_2(), "rule__PortClass__Alternatives_2");
+ put(grammarAccess.getSemanticsRuleAccess().getAlternatives(), "rule__SemanticsRule__Alternatives");
+ put(grammarAccess.getActorClassAccess().getAlternatives_6_4(), "rule__ActorClass__Alternatives_6_4");
+ put(grammarAccess.getInterfaceItemAccess().getAlternatives(), "rule__InterfaceItem__Alternatives");
+ put(grammarAccess.getActorContainerRefAccess().getAlternatives(), "rule__ActorContainerRef__Alternatives");
+ put(grammarAccess.getSAPointAccess().getAlternatives(), "rule__SAPoint__Alternatives");
+ put(grammarAccess.getStateGraphNodeAccess().getAlternatives(), "rule__StateGraphNode__Alternatives");
+ put(grammarAccess.getStateGraphItemAccess().getAlternatives(), "rule__StateGraphItem__Alternatives");
+ put(grammarAccess.getStateAccess().getAlternatives(), "rule__State__Alternatives");
+ put(grammarAccess.getStateGraphAccess().getAlternatives_1(), "rule__StateGraph__Alternatives_1");
+ put(grammarAccess.getStateMachineAccess().getAlternatives_2(), "rule__StateMachine__Alternatives_2");
+ put(grammarAccess.getTrPointAccess().getAlternatives(), "rule__TrPoint__Alternatives");
+ put(grammarAccess.getTransitionAccess().getAlternatives(), "rule__Transition__Alternatives");
+ put(grammarAccess.getNonInitialTransitionAccess().getAlternatives(), "rule__NonInitialTransition__Alternatives");
+ put(grammarAccess.getTransitionTerminalAccess().getAlternatives(), "rule__TransitionTerminal__Alternatives");
+ put(grammarAccess.getPrimitiveTypeAccess().getAlternatives(), "rule__PrimitiveType__Alternatives");
+ put(grammarAccess.getRoomModelAccess().getGroup(), "rule__RoomModel__Group__0");
+ put(grammarAccess.getTypedIDAccess().getGroup(), "rule__TypedID__Group__0");
+ put(grammarAccess.getFreeTypedIDAccess().getGroup(), "rule__FreeTypedID__Group__0");
+ put(grammarAccess.getDataClassAccess().getGroup(), "rule__DataClass__Group__0");
+ put(grammarAccess.getDataClassAccess().getGroup_2(), "rule__DataClass__Group_2__0");
+ put(grammarAccess.getAttributeAccess().getGroup(), "rule__Attribute__Group__0");
+ put(grammarAccess.getAttributeAccess().getGroup_2(), "rule__Attribute__Group_2__0");
+ put(grammarAccess.getOperationAccess().getGroup(), "rule__Operation__Group__0");
+ put(grammarAccess.getOperationAccess().getGroup_3(), "rule__Operation__Group_3__0");
+ put(grammarAccess.getOperationAccess().getGroup_3_1(), "rule__Operation__Group_3_1__0");
+ put(grammarAccess.getOperationAccess().getGroup_5(), "rule__Operation__Group_5__0");
+ put(grammarAccess.getProtocolClassAccess().getGroup(), "rule__ProtocolClass__Group__0");
+ put(grammarAccess.getProtocolClassAccess().getGroup_2(), "rule__ProtocolClass__Group_2__0");
+ put(grammarAccess.getProtocolClassAccess().getGroup_4(), "rule__ProtocolClass__Group_4__0");
+ put(grammarAccess.getProtocolClassAccess().getGroup_5(), "rule__ProtocolClass__Group_5__0");
+ put(grammarAccess.getProtocolClassAccess().getGroup_14(), "rule__ProtocolClass__Group_14__0");
+ put(grammarAccess.getProtocolClassAccess().getGroup_15(), "rule__ProtocolClass__Group_15__0");
+ put(grammarAccess.getMessageAccess().getGroup(), "rule__Message__Group__0");
+ put(grammarAccess.getMessageAccess().getGroup_3(), "rule__Message__Group_3__0");
+ put(grammarAccess.getMessageAccess().getGroup_3_1(), "rule__Message__Group_3_1__0");
+ put(grammarAccess.getPortClassAccess().getGroup(), "rule__PortClass__Group__0");
+ put(grammarAccess.getPortClassAccess().getGroup_1(), "rule__PortClass__Group_1__0");
+ put(grammarAccess.getMessageHandlerAccess().getGroup(), "rule__MessageHandler__Group__0");
+ put(grammarAccess.getProtocolSemanticsAccess().getGroup(), "rule__ProtocolSemantics__Group__0");
+ put(grammarAccess.getSemanticsInRuleAccess().getGroup(), "rule__SemanticsInRule__Group__0");
+ put(grammarAccess.getSemanticsOutRuleAccess().getGroup(), "rule__SemanticsOutRule__Group__0");
+ put(grammarAccess.getActorClassAccess().getGroup(), "rule__ActorClass__Group__0");
+ put(grammarAccess.getActorClassAccess().getGroup_3(), "rule__ActorClass__Group_3__0");
+ put(grammarAccess.getActorClassAccess().getGroup_5(), "rule__ActorClass__Group_5__0");
+ put(grammarAccess.getActorClassAccess().getGroup_6(), "rule__ActorClass__Group_6__0");
+ put(grammarAccess.getActorClassAccess().getGroup_6_2(), "rule__ActorClass__Group_6_2__0");
+ put(grammarAccess.getActorClassAccess().getGroup_6_3(), "rule__ActorClass__Group_6_3__0");
+ put(grammarAccess.getActorClassAccess().getGroup_7(), "rule__ActorClass__Group_7__0");
+ put(grammarAccess.getPortAccess().getGroup(), "rule__Port__Group__0");
+ put(grammarAccess.getPortAccess().getGroup_3(), "rule__Port__Group_3__0");
+ put(grammarAccess.getExternalPortAccess().getGroup(), "rule__ExternalPort__Group__0");
+ put(grammarAccess.getSAPRefAccess().getGroup(), "rule__SAPRef__Group__0");
+ put(grammarAccess.getSPPRefAccess().getGroup(), "rule__SPPRef__Group__0");
+ put(grammarAccess.getServiceImplementationAccess().getGroup(), "rule__ServiceImplementation__Group__0");
+ put(grammarAccess.getLogicalSystemAccess().getGroup(), "rule__LogicalSystem__Group__0");
+ put(grammarAccess.getSubSystemRefAccess().getGroup(), "rule__SubSystemRef__Group__0");
+ put(grammarAccess.getSubSystemClassAccess().getGroup(), "rule__SubSystemClass__Group__0");
+ put(grammarAccess.getLogicalThreadAccess().getGroup(), "rule__LogicalThread__Group__0");
+ put(grammarAccess.getLogicalThreadAccess().getGroup_4(), "rule__LogicalThread__Group_4__0");
+ put(grammarAccess.getActorInstancePathAccess().getGroup(), "rule__ActorInstancePath__Group__0");
+ put(grammarAccess.getActorInstancePathAccess().getGroup_1(), "rule__ActorInstancePath__Group_1__0");
+ put(grammarAccess.getBindingAccess().getGroup(), "rule__Binding__Group__0");
+ put(grammarAccess.getBindingEndPointAccess().getGroup(), "rule__BindingEndPoint__Group__0");
+ put(grammarAccess.getBindingEndPointAccess().getGroup_0(), "rule__BindingEndPoint__Group_0__0");
+ put(grammarAccess.getLayerConnectionAccess().getGroup(), "rule__LayerConnection__Group__0");
+ put(grammarAccess.getRefSAPointAccess().getGroup(), "rule__RefSAPoint__Group__0");
+ put(grammarAccess.getRelaySAPointAccess().getGroup(), "rule__RelaySAPoint__Group__0");
+ put(grammarAccess.getSPPointAccess().getGroup(), "rule__SPPoint__Group__0");
+ put(grammarAccess.getActorRefAccess().getGroup(), "rule__ActorRef__Group__0");
+ put(grammarAccess.getStateGraphAccess().getGroup(), "rule__StateGraph__Group__0");
+ put(grammarAccess.getStateMachineAccess().getGroup(), "rule__StateMachine__Group__0");
+ put(grammarAccess.getBaseStateAccess().getGroup(), "rule__BaseState__Group__0");
+ put(grammarAccess.getBaseStateAccess().getGroup_3(), "rule__BaseState__Group_3__0");
+ put(grammarAccess.getBaseStateAccess().getGroup_4(), "rule__BaseState__Group_4__0");
+ put(grammarAccess.getBaseStateAccess().getGroup_5(), "rule__BaseState__Group_5__0");
+ put(grammarAccess.getRefinedStateAccess().getGroup(), "rule__RefinedState__Group__0");
+ put(grammarAccess.getRefinedStateAccess().getGroup_3(), "rule__RefinedState__Group_3__0");
+ put(grammarAccess.getRefinedStateAccess().getGroup_4(), "rule__RefinedState__Group_4__0");
+ put(grammarAccess.getRefinedStateAccess().getGroup_5(), "rule__RefinedState__Group_5__0");
+ put(grammarAccess.getDetailCodeAccess().getGroup(), "rule__DetailCode__Group__0");
+ put(grammarAccess.getTransitionPointAccess().getGroup(), "rule__TransitionPoint__Group__0");
+ put(grammarAccess.getEntryPointAccess().getGroup(), "rule__EntryPoint__Group__0");
+ put(grammarAccess.getExitPointAccess().getGroup(), "rule__ExitPoint__Group__0");
+ put(grammarAccess.getChoicePointAccess().getGroup(), "rule__ChoicePoint__Group__0");
+ put(grammarAccess.getInitialTransitionAccess().getGroup(), "rule__InitialTransition__Group__0");
+ put(grammarAccess.getInitialTransitionAccess().getGroup_7(), "rule__InitialTransition__Group_7__0");
+ put(grammarAccess.getContinuationTransitionAccess().getGroup(), "rule__ContinuationTransition__Group__0");
+ put(grammarAccess.getContinuationTransitionAccess().getGroup_7(), "rule__ContinuationTransition__Group_7__0");
+ put(grammarAccess.getTriggeredTransitionAccess().getGroup(), "rule__TriggeredTransition__Group__0");
+ put(grammarAccess.getTriggeredTransitionAccess().getGroup_10(), "rule__TriggeredTransition__Group_10__0");
+ put(grammarAccess.getTriggeredTransitionAccess().getGroup_12(), "rule__TriggeredTransition__Group_12__0");
+ put(grammarAccess.getCPBranchTransitionAccess().getGroup(), "rule__CPBranchTransition__Group__0");
+ put(grammarAccess.getCPBranchTransitionAccess().getGroup_9(), "rule__CPBranchTransition__Group_9__0");
+ put(grammarAccess.getTrPointTerminalAccess().getGroup(), "rule__TrPointTerminal__Group__0");
+ put(grammarAccess.getSubStateTrPointTerminalAccess().getGroup(), "rule__SubStateTrPointTerminal__Group__0");
+ put(grammarAccess.getChoicepointTerminalAccess().getGroup(), "rule__ChoicepointTerminal__Group__0");
+ put(grammarAccess.getTriggerAccess().getGroup(), "rule__Trigger__Group__0");
+ put(grammarAccess.getTriggerAccess().getGroup_2(), "rule__Trigger__Group_2__0");
+ put(grammarAccess.getMessageFromIfAccess().getGroup(), "rule__MessageFromIf__Group__0");
+ put(grammarAccess.getGuardAccess().getGroup(), "rule__Guard__Group__0");
+ put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+ put(grammarAccess.getImportedFQNAccess().getGroup(), "rule__ImportedFQN__Group__0");
+ put(grammarAccess.getImportedFQNAccess().getGroup_1(), "rule__ImportedFQN__Group_1__0");
+ put(grammarAccess.getFQNAccess().getGroup(), "rule__FQN__Group__0");
+ put(grammarAccess.getFQNAccess().getGroup_1(), "rule__FQN__Group_1__0");
+ put(grammarAccess.getRoomModelAccess().getNameAssignment_1(), "rule__RoomModel__NameAssignment_1");
+ put(grammarAccess.getRoomModelAccess().getImportsAssignment_3(), "rule__RoomModel__ImportsAssignment_3");
+ put(grammarAccess.getRoomModelAccess().getDataClassesAssignment_4_0(), "rule__RoomModel__DataClassesAssignment_4_0");
+ put(grammarAccess.getRoomModelAccess().getProtocolClassesAssignment_4_1(), "rule__RoomModel__ProtocolClassesAssignment_4_1");
+ put(grammarAccess.getRoomModelAccess().getActorClassesAssignment_4_2(), "rule__RoomModel__ActorClassesAssignment_4_2");
+ put(grammarAccess.getRoomModelAccess().getSubSystemClassesAssignment_4_3(), "rule__RoomModel__SubSystemClassesAssignment_4_3");
+ put(grammarAccess.getRoomModelAccess().getSystemsAssignment_4_4(), "rule__RoomModel__SystemsAssignment_4_4");
+ put(grammarAccess.getTypedIDAccess().getNameAssignment_0(), "rule__TypedID__NameAssignment_0");
+ put(grammarAccess.getTypedIDAccess().getTypeAssignment_2(), "rule__TypedID__TypeAssignment_2");
+ put(grammarAccess.getFreeTypedIDAccess().getNameAssignment_0(), "rule__FreeTypedID__NameAssignment_0");
+ put(grammarAccess.getFreeTypedIDAccess().getTypeAssignment_2(), "rule__FreeTypedID__TypeAssignment_2");
+ put(grammarAccess.getTypeAccess().getPrimAssignment_0(), "rule__Type__PrimAssignment_0");
+ put(grammarAccess.getTypeAccess().getTypeAssignment_1(), "rule__Type__TypeAssignment_1");
+ put(grammarAccess.getFreeTypeAccess().getPrimAssignment_0(), "rule__FreeType__PrimAssignment_0");
+ put(grammarAccess.getFreeTypeAccess().getTypeAssignment_1(), "rule__FreeType__TypeAssignment_1");
+ put(grammarAccess.getDataClassAccess().getNameAssignment_1(), "rule__DataClass__NameAssignment_1");
+ put(grammarAccess.getDataClassAccess().getBaseAssignment_2_1(), "rule__DataClass__BaseAssignment_2_1");
+ put(grammarAccess.getDataClassAccess().getImportsAssignment_4(), "rule__DataClass__ImportsAssignment_4");
+ put(grammarAccess.getDataClassAccess().getAttributesAssignment_5(), "rule__DataClass__AttributesAssignment_5");
+ put(grammarAccess.getDataClassAccess().getOperationsAssignment_6(), "rule__DataClass__OperationsAssignment_6");
+ put(grammarAccess.getAttributeAccess().getNameAssignment_1(), "rule__Attribute__NameAssignment_1");
+ put(grammarAccess.getAttributeAccess().getSizeAssignment_2_1(), "rule__Attribute__SizeAssignment_2_1");
+ put(grammarAccess.getAttributeAccess().getTypeAssignment_4(), "rule__Attribute__TypeAssignment_4");
+ put(grammarAccess.getOperationAccess().getNameAssignment_1(), "rule__Operation__NameAssignment_1");
+ put(grammarAccess.getOperationAccess().getArgumentsAssignment_3_0(), "rule__Operation__ArgumentsAssignment_3_0");
+ put(grammarAccess.getOperationAccess().getArgumentsAssignment_3_1_1(), "rule__Operation__ArgumentsAssignment_3_1_1");
+ put(grammarAccess.getOperationAccess().getReturntypeAssignment_5_1(), "rule__Operation__ReturntypeAssignment_5_1");
+ put(grammarAccess.getOperationAccess().getDetailCodeAssignment_6(), "rule__Operation__DetailCodeAssignment_6");
+ put(grammarAccess.getProtocolClassAccess().getNameAssignment_1(), "rule__ProtocolClass__NameAssignment_1");
+ put(grammarAccess.getProtocolClassAccess().getBaseAssignment_2_1(), "rule__ProtocolClass__BaseAssignment_2_1");
+ put(grammarAccess.getProtocolClassAccess().getUserCode1Assignment_4_1(), "rule__ProtocolClass__UserCode1Assignment_4_1");
+ put(grammarAccess.getProtocolClassAccess().getUserCode2Assignment_5_1(), "rule__ProtocolClass__UserCode2Assignment_5_1");
+ put(grammarAccess.getProtocolClassAccess().getIncomingMessagesAssignment_8(), "rule__ProtocolClass__IncomingMessagesAssignment_8");
+ put(grammarAccess.getProtocolClassAccess().getOutgoingMessagesAssignment_12(), "rule__ProtocolClass__OutgoingMessagesAssignment_12");
+ put(grammarAccess.getProtocolClassAccess().getRegularAssignment_14_2(), "rule__ProtocolClass__RegularAssignment_14_2");
+ put(grammarAccess.getProtocolClassAccess().getConjugateAssignment_15_2(), "rule__ProtocolClass__ConjugateAssignment_15_2");
+ put(grammarAccess.getProtocolClassAccess().getSemanticsAssignment_16(), "rule__ProtocolClass__SemanticsAssignment_16");
+ put(grammarAccess.getMessageAccess().getNameAssignment_1(), "rule__Message__NameAssignment_1");
+ put(grammarAccess.getMessageAccess().getArgumentsAssignment_3_0(), "rule__Message__ArgumentsAssignment_3_0");
+ put(grammarAccess.getMessageAccess().getArgumentsAssignment_3_1_1(), "rule__Message__ArgumentsAssignment_3_1_1");
+ put(grammarAccess.getPortClassAccess().getUserCodeAssignment_1_1(), "rule__PortClass__UserCodeAssignment_1_1");
+ put(grammarAccess.getPortClassAccess().getAttributesAssignment_2_0(), "rule__PortClass__AttributesAssignment_2_0");
+ put(grammarAccess.getPortClassAccess().getOperationsAssignment_2_1(), "rule__PortClass__OperationsAssignment_2_1");
+ put(grammarAccess.getPortClassAccess().getMsgHandlersAssignment_2_2(), "rule__PortClass__MsgHandlersAssignment_2_2");
+ put(grammarAccess.getMessageHandlerAccess().getMsgAssignment_1(), "rule__MessageHandler__MsgAssignment_1");
+ put(grammarAccess.getMessageHandlerAccess().getDetailCodeAssignment_2(), "rule__MessageHandler__DetailCodeAssignment_2");
+ put(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2(), "rule__ProtocolSemantics__RulesAssignment_2");
+ put(grammarAccess.getSemanticsInRuleAccess().getMsgAssignment_1(), "rule__SemanticsInRule__MsgAssignment_1");
+ put(grammarAccess.getSemanticsInRuleAccess().getFollowUpsAssignment_4(), "rule__SemanticsInRule__FollowUpsAssignment_4");
+ put(grammarAccess.getSemanticsOutRuleAccess().getMsgAssignment_1(), "rule__SemanticsOutRule__MsgAssignment_1");
+ put(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsAssignment_4(), "rule__SemanticsOutRule__FollowUpsAssignment_4");
+ put(grammarAccess.getActorClassAccess().getAbstractAssignment_0(), "rule__ActorClass__AbstractAssignment_0");
+ put(grammarAccess.getActorClassAccess().getNameAssignment_2(), "rule__ActorClass__NameAssignment_2");
+ put(grammarAccess.getActorClassAccess().getBaseAssignment_3_1(), "rule__ActorClass__BaseAssignment_3_1");
+ put(grammarAccess.getActorClassAccess().getIfPortsAssignment_5_2(), "rule__ActorClass__IfPortsAssignment_5_2");
+ put(grammarAccess.getActorClassAccess().getIfSPPsAssignment_5_3(), "rule__ActorClass__IfSPPsAssignment_5_3");
+ put(grammarAccess.getActorClassAccess().getUserCode1Assignment_6_2_1(), "rule__ActorClass__UserCode1Assignment_6_2_1");
+ put(grammarAccess.getActorClassAccess().getUserCode2Assignment_6_3_1(), "rule__ActorClass__UserCode2Assignment_6_3_1");
+ put(grammarAccess.getActorClassAccess().getIntPortsAssignment_6_4_0(), "rule__ActorClass__IntPortsAssignment_6_4_0");
+ put(grammarAccess.getActorClassAccess().getExtPortsAssignment_6_4_1(), "rule__ActorClass__ExtPortsAssignment_6_4_1");
+ put(grammarAccess.getActorClassAccess().getServiceImplementationsAssignment_6_5(), "rule__ActorClass__ServiceImplementationsAssignment_6_5");
+ put(grammarAccess.getActorClassAccess().getStrSAPsAssignment_6_6(), "rule__ActorClass__StrSAPsAssignment_6_6");
+ put(grammarAccess.getActorClassAccess().getAttributesAssignment_6_7(), "rule__ActorClass__AttributesAssignment_6_7");
+ put(grammarAccess.getActorClassAccess().getActorRefsAssignment_6_8(), "rule__ActorClass__ActorRefsAssignment_6_8");
+ put(grammarAccess.getActorClassAccess().getBindingsAssignment_6_9(), "rule__ActorClass__BindingsAssignment_6_9");
+ put(grammarAccess.getActorClassAccess().getConnectionsAssignment_6_10(), "rule__ActorClass__ConnectionsAssignment_6_10");
+ put(grammarAccess.getActorClassAccess().getOperationsAssignment_7_2(), "rule__ActorClass__OperationsAssignment_7_2");
+ put(grammarAccess.getActorClassAccess().getStateMachineAssignment_7_3(), "rule__ActorClass__StateMachineAssignment_7_3");
+ put(grammarAccess.getPortAccess().getConjugatedAssignment_0(), "rule__Port__ConjugatedAssignment_0");
+ put(grammarAccess.getPortAccess().getNameAssignment_2(), "rule__Port__NameAssignment_2");
+ put(grammarAccess.getPortAccess().getMultiplicityAssignment_3_1(), "rule__Port__MultiplicityAssignment_3_1");
+ put(grammarAccess.getPortAccess().getProtocolAssignment_5(), "rule__Port__ProtocolAssignment_5");
+ put(grammarAccess.getExternalPortAccess().getIfportAssignment_2(), "rule__ExternalPort__IfportAssignment_2");
+ put(grammarAccess.getSAPRefAccess().getNameAssignment_1(), "rule__SAPRef__NameAssignment_1");
+ put(grammarAccess.getSAPRefAccess().getProtocolAssignment_3(), "rule__SAPRef__ProtocolAssignment_3");
+ put(grammarAccess.getSPPRefAccess().getNameAssignment_1(), "rule__SPPRef__NameAssignment_1");
+ put(grammarAccess.getSPPRefAccess().getProtocolAssignment_3(), "rule__SPPRef__ProtocolAssignment_3");
+ put(grammarAccess.getServiceImplementationAccess().getSppAssignment_2(), "rule__ServiceImplementation__SppAssignment_2");
+ put(grammarAccess.getLogicalSystemAccess().getNameAssignment_1(), "rule__LogicalSystem__NameAssignment_1");
+ put(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3(), "rule__LogicalSystem__SubSystemsAssignment_3");
+ put(grammarAccess.getLogicalSystemAccess().getBindingsAssignment_4(), "rule__LogicalSystem__BindingsAssignment_4");
+ put(grammarAccess.getLogicalSystemAccess().getConnectionsAssignment_5(), "rule__LogicalSystem__ConnectionsAssignment_5");
+ put(grammarAccess.getSubSystemRefAccess().getNameAssignment_1(), "rule__SubSystemRef__NameAssignment_1");
+ put(grammarAccess.getSubSystemRefAccess().getTypeAssignment_3(), "rule__SubSystemRef__TypeAssignment_3");
+ put(grammarAccess.getSubSystemClassAccess().getNameAssignment_1(), "rule__SubSystemClass__NameAssignment_1");
+ put(grammarAccess.getSubSystemClassAccess().getRelayPortsAssignment_3(), "rule__SubSystemClass__RelayPortsAssignment_3");
+ put(grammarAccess.getSubSystemClassAccess().getIfSPPsAssignment_4(), "rule__SubSystemClass__IfSPPsAssignment_4");
+ put(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5(), "rule__SubSystemClass__ActorRefsAssignment_5");
+ put(grammarAccess.getSubSystemClassAccess().getBindingsAssignment_6(), "rule__SubSystemClass__BindingsAssignment_6");
+ put(grammarAccess.getSubSystemClassAccess().getConnectionsAssignment_7(), "rule__SubSystemClass__ConnectionsAssignment_7");
+ put(grammarAccess.getSubSystemClassAccess().getThreadsAssignment_8(), "rule__SubSystemClass__ThreadsAssignment_8");
+ put(grammarAccess.getLogicalThreadAccess().getNameAssignment_1(), "rule__LogicalThread__NameAssignment_1");
+ put(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_3(), "rule__LogicalThread__InstancesAssignment_3");
+ put(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_4_1(), "rule__LogicalThread__InstancesAssignment_4_1");
+ put(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_0(), "rule__ActorInstancePath__SegmentsAssignment_0");
+ put(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_1_1(), "rule__ActorInstancePath__SegmentsAssignment_1_1");
+ put(grammarAccess.getBindingAccess().getEndpoint1Assignment_1(), "rule__Binding__Endpoint1Assignment_1");
+ put(grammarAccess.getBindingAccess().getEndpoint2Assignment_3(), "rule__Binding__Endpoint2Assignment_3");
+ put(grammarAccess.getBindingEndPointAccess().getActorRefAssignment_0_0(), "rule__BindingEndPoint__ActorRefAssignment_0_0");
+ put(grammarAccess.getBindingEndPointAccess().getPortAssignment_1(), "rule__BindingEndPoint__PortAssignment_1");
+ put(grammarAccess.getLayerConnectionAccess().getFromAssignment_1(), "rule__LayerConnection__FromAssignment_1");
+ put(grammarAccess.getLayerConnectionAccess().getToAssignment_3(), "rule__LayerConnection__ToAssignment_3");
+ put(grammarAccess.getRefSAPointAccess().getRefAssignment_1(), "rule__RefSAPoint__RefAssignment_1");
+ put(grammarAccess.getRelaySAPointAccess().getRelayAssignment_1(), "rule__RelaySAPoint__RelayAssignment_1");
+ put(grammarAccess.getSPPointAccess().getRefAssignment_0(), "rule__SPPoint__RefAssignment_0");
+ put(grammarAccess.getSPPointAccess().getServiceAssignment_2(), "rule__SPPoint__ServiceAssignment_2");
+ put(grammarAccess.getActorRefAccess().getNameAssignment_1(), "rule__ActorRef__NameAssignment_1");
+ put(grammarAccess.getActorRefAccess().getTypeAssignment_3(), "rule__ActorRef__TypeAssignment_3");
+ put(grammarAccess.getStateGraphAccess().getStatesAssignment_1_0(), "rule__StateGraph__StatesAssignment_1_0");
+ put(grammarAccess.getStateGraphAccess().getTrPointsAssignment_1_1(), "rule__StateGraph__TrPointsAssignment_1_1");
+ put(grammarAccess.getStateGraphAccess().getChPointsAssignment_1_2(), "rule__StateGraph__ChPointsAssignment_1_2");
+ put(grammarAccess.getStateGraphAccess().getTransitionsAssignment_1_3(), "rule__StateGraph__TransitionsAssignment_1_3");
+ put(grammarAccess.getStateMachineAccess().getStatesAssignment_2_0(), "rule__StateMachine__StatesAssignment_2_0");
+ put(grammarAccess.getStateMachineAccess().getTrPointsAssignment_2_1(), "rule__StateMachine__TrPointsAssignment_2_1");
+ put(grammarAccess.getStateMachineAccess().getChPointsAssignment_2_2(), "rule__StateMachine__ChPointsAssignment_2_2");
+ put(grammarAccess.getStateMachineAccess().getTransitionsAssignment_2_3(), "rule__StateMachine__TransitionsAssignment_2_3");
+ put(grammarAccess.getBaseStateAccess().getNameAssignment_1(), "rule__BaseState__NameAssignment_1");
+ put(grammarAccess.getBaseStateAccess().getEntryCodeAssignment_3_1(), "rule__BaseState__EntryCodeAssignment_3_1");
+ put(grammarAccess.getBaseStateAccess().getExitCodeAssignment_4_1(), "rule__BaseState__ExitCodeAssignment_4_1");
+ put(grammarAccess.getBaseStateAccess().getSubgraphAssignment_5_1(), "rule__BaseState__SubgraphAssignment_5_1");
+ put(grammarAccess.getRefinedStateAccess().getBaseAssignment_1(), "rule__RefinedState__BaseAssignment_1");
+ put(grammarAccess.getRefinedStateAccess().getEntryCodeAssignment_3_1(), "rule__RefinedState__EntryCodeAssignment_3_1");
+ put(grammarAccess.getRefinedStateAccess().getExitCodeAssignment_4_1(), "rule__RefinedState__ExitCodeAssignment_4_1");
+ put(grammarAccess.getRefinedStateAccess().getSubgraphAssignment_5_1(), "rule__RefinedState__SubgraphAssignment_5_1");
+ put(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1(), "rule__DetailCode__CommandsAssignment_1");
+ put(grammarAccess.getTransitionPointAccess().getHandlerAssignment_0(), "rule__TransitionPoint__HandlerAssignment_0");
+ put(grammarAccess.getTransitionPointAccess().getNameAssignment_2(), "rule__TransitionPoint__NameAssignment_2");
+ put(grammarAccess.getEntryPointAccess().getNameAssignment_1(), "rule__EntryPoint__NameAssignment_1");
+ put(grammarAccess.getExitPointAccess().getNameAssignment_1(), "rule__ExitPoint__NameAssignment_1");
+ put(grammarAccess.getChoicePointAccess().getNameAssignment_1(), "rule__ChoicePoint__NameAssignment_1");
+ put(grammarAccess.getInitialTransitionAccess().getNameAssignment_1(), "rule__InitialTransition__NameAssignment_1");
+ put(grammarAccess.getInitialTransitionAccess().getToAssignment_5(), "rule__InitialTransition__ToAssignment_5");
+ put(grammarAccess.getInitialTransitionAccess().getActionAssignment_7_1(), "rule__InitialTransition__ActionAssignment_7_1");
+ put(grammarAccess.getContinuationTransitionAccess().getNameAssignment_1(), "rule__ContinuationTransition__NameAssignment_1");
+ put(grammarAccess.getContinuationTransitionAccess().getFromAssignment_3(), "rule__ContinuationTransition__FromAssignment_3");
+ put(grammarAccess.getContinuationTransitionAccess().getToAssignment_5(), "rule__ContinuationTransition__ToAssignment_5");
+ put(grammarAccess.getContinuationTransitionAccess().getActionAssignment_7_1(), "rule__ContinuationTransition__ActionAssignment_7_1");
+ put(grammarAccess.getTriggeredTransitionAccess().getNameAssignment_1(), "rule__TriggeredTransition__NameAssignment_1");
+ put(grammarAccess.getTriggeredTransitionAccess().getFromAssignment_3(), "rule__TriggeredTransition__FromAssignment_3");
+ put(grammarAccess.getTriggeredTransitionAccess().getToAssignment_5(), "rule__TriggeredTransition__ToAssignment_5");
+ put(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_9(), "rule__TriggeredTransition__TriggersAssignment_9");
+ put(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_10_1(), "rule__TriggeredTransition__TriggersAssignment_10_1");
+ put(grammarAccess.getTriggeredTransitionAccess().getActionAssignment_12_1(), "rule__TriggeredTransition__ActionAssignment_12_1");
+ put(grammarAccess.getCPBranchTransitionAccess().getNameAssignment_1(), "rule__CPBranchTransition__NameAssignment_1");
+ put(grammarAccess.getCPBranchTransitionAccess().getFromAssignment_3(), "rule__CPBranchTransition__FromAssignment_3");
+ put(grammarAccess.getCPBranchTransitionAccess().getToAssignment_5(), "rule__CPBranchTransition__ToAssignment_5");
+ put(grammarAccess.getCPBranchTransitionAccess().getConditionAssignment_8(), "rule__CPBranchTransition__ConditionAssignment_8");
+ put(grammarAccess.getCPBranchTransitionAccess().getActionAssignment_9_1(), "rule__CPBranchTransition__ActionAssignment_9_1");
+ put(grammarAccess.getStateTerminalAccess().getStateAssignment(), "rule__StateTerminal__StateAssignment");
+ put(grammarAccess.getTrPointTerminalAccess().getTrPointAssignment_1(), "rule__TrPointTerminal__TrPointAssignment_1");
+ put(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointAssignment_0(), "rule__SubStateTrPointTerminal__TrPointAssignment_0");
+ put(grammarAccess.getSubStateTrPointTerminalAccess().getStateAssignment_2(), "rule__SubStateTrPointTerminal__StateAssignment_2");
+ put(grammarAccess.getChoicepointTerminalAccess().getCpAssignment_1(), "rule__ChoicepointTerminal__CpAssignment_1");
+ put(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_1(), "rule__Trigger__MsgFromIfPairsAssignment_1");
+ put(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_2_1(), "rule__Trigger__MsgFromIfPairsAssignment_2_1");
+ put(grammarAccess.getTriggerAccess().getGuardAssignment_3(), "rule__Trigger__GuardAssignment_3");
+ put(grammarAccess.getMessageFromIfAccess().getMessageAssignment_0(), "rule__MessageFromIf__MessageAssignment_0");
+ put(grammarAccess.getMessageFromIfAccess().getFromAssignment_2(), "rule__MessageFromIf__FromAssignment_2");
+ put(grammarAccess.getGuardAccess().getGuardAssignment_1(), "rule__Guard__GuardAssignment_1");
+ put(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1(), "rule__Import__ImportedNamespaceAssignment_1");
+ }
+ };
+ }
+ return nameMappings.get(element);
+ }
+
+ @Override
+ protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+ try {
+ org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomParser typedParser = (org.eclipse.etrice.core.ui.contentassist.antlr.internal.InternalRoomParser) parser;
+ typedParser.entryRuleRoomModel();
+ return typedParser.getFollowElements();
+ } catch(RecognitionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ @Override
+ protected String[] getInitialHiddenTokens() {
+ return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+ }
+
+ public RoomGrammarAccess getGrammarAccess() {
+ return this.grammarAccess;
+ }
+
+ public void setGrammarAccess(RoomGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g
new file mode 100644
index 000000000..b2dae129a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g
@@ -0,0 +1,16199 @@
+/*
+* generated by Xtext
+*/
+grammar InternalRoom;
+
+options {
+ superClass=AbstractInternalContentAssistParser;
+
+}
+
+@lexer::header {
+package org.eclipse.etrice.core.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.etrice.core.ui.contentassist.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.xtext.parsetree.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.etrice.core.services.RoomGrammarAccess;
+
+}
+
+@parser::members {
+
+ private RoomGrammarAccess grammarAccess;
+
+ public void setGrammarAccess(RoomGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+
+ @Override
+ protected Grammar getGrammar() {
+ return grammarAccess.getGrammar();
+ }
+
+ @Override
+ protected String getValueForTokenName(String tokenName) {
+ return tokenName;
+ }
+
+}
+
+
+
+
+// Entry rule entryRuleRoomModel
+entryRuleRoomModel
+:
+{ before(grammarAccess.getRoomModelRule()); }
+ ruleRoomModel
+{ after(grammarAccess.getRoomModelRule()); }
+ EOF
+;
+
+// Rule RoomModel
+ruleRoomModel
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getRoomModelAccess().getGroup()); }
+(rule__RoomModel__Group__0)
+{ after(grammarAccess.getRoomModelAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleStructureClass
+entryRuleStructureClass
+:
+{ before(grammarAccess.getStructureClassRule()); }
+ ruleStructureClass
+{ after(grammarAccess.getStructureClassRule()); }
+ EOF
+;
+
+// Rule StructureClass
+ruleStructureClass
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getStructureClassAccess().getAlternatives()); }
+(rule__StructureClass__Alternatives)
+{ after(grammarAccess.getStructureClassAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleActorContainerClass
+entryRuleActorContainerClass
+:
+{ before(grammarAccess.getActorContainerClassRule()); }
+ ruleActorContainerClass
+{ after(grammarAccess.getActorContainerClassRule()); }
+ EOF
+;
+
+// Rule ActorContainerClass
+ruleActorContainerClass
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getActorContainerClassAccess().getAlternatives()); }
+(rule__ActorContainerClass__Alternatives)
+{ after(grammarAccess.getActorContainerClassAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedID
+entryRuleTypedID
+:
+{ before(grammarAccess.getTypedIDRule()); }
+ ruleTypedID
+{ after(grammarAccess.getTypedIDRule()); }
+ EOF
+;
+
+// Rule TypedID
+ruleTypedID
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTypedIDAccess().getGroup()); }
+(rule__TypedID__Group__0)
+{ after(grammarAccess.getTypedIDAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFreeTypedID
+entryRuleFreeTypedID
+:
+{ before(grammarAccess.getFreeTypedIDRule()); }
+ ruleFreeTypedID
+{ after(grammarAccess.getFreeTypedIDRule()); }
+ EOF
+;
+
+// Rule FreeTypedID
+ruleFreeTypedID
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getFreeTypedIDAccess().getGroup()); }
+(rule__FreeTypedID__Group__0)
+{ after(grammarAccess.getFreeTypedIDAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleType
+entryRuleType
+:
+{ before(grammarAccess.getTypeRule()); }
+ ruleType
+{ after(grammarAccess.getTypeRule()); }
+ EOF
+;
+
+// Rule Type
+ruleType
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTypeAccess().getAlternatives()); }
+(rule__Type__Alternatives)
+{ after(grammarAccess.getTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFreeType
+entryRuleFreeType
+:
+{ before(grammarAccess.getFreeTypeRule()); }
+ ruleFreeType
+{ after(grammarAccess.getFreeTypeRule()); }
+ EOF
+;
+
+// Rule FreeType
+ruleFreeType
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getFreeTypeAccess().getAlternatives()); }
+(rule__FreeType__Alternatives)
+{ after(grammarAccess.getFreeTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataClass
+entryRuleDataClass
+:
+{ before(grammarAccess.getDataClassRule()); }
+ ruleDataClass
+{ after(grammarAccess.getDataClassRule()); }
+ EOF
+;
+
+// Rule DataClass
+ruleDataClass
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getDataClassAccess().getGroup()); }
+(rule__DataClass__Group__0)
+{ after(grammarAccess.getDataClassAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAttribute
+entryRuleAttribute
+:
+{ before(grammarAccess.getAttributeRule()); }
+ ruleAttribute
+{ after(grammarAccess.getAttributeRule()); }
+ EOF
+;
+
+// Rule Attribute
+ruleAttribute
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getAttributeAccess().getGroup()); }
+(rule__Attribute__Group__0)
+{ after(grammarAccess.getAttributeAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOperation
+entryRuleOperation
+:
+{ before(grammarAccess.getOperationRule()); }
+ ruleOperation
+{ after(grammarAccess.getOperationRule()); }
+ EOF
+;
+
+// Rule Operation
+ruleOperation
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getOperationAccess().getGroup()); }
+(rule__Operation__Group__0)
+{ after(grammarAccess.getOperationAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolClass
+entryRuleProtocolClass
+:
+{ before(grammarAccess.getProtocolClassRule()); }
+ ruleProtocolClass
+{ after(grammarAccess.getProtocolClassRule()); }
+ EOF
+;
+
+// Rule ProtocolClass
+ruleProtocolClass
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getProtocolClassAccess().getGroup()); }
+(rule__ProtocolClass__Group__0)
+{ after(grammarAccess.getProtocolClassAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMessage
+entryRuleMessage
+:
+{ before(grammarAccess.getMessageRule()); }
+ ruleMessage
+{ after(grammarAccess.getMessageRule()); }
+ EOF
+;
+
+// Rule Message
+ruleMessage
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getMessageAccess().getGroup()); }
+(rule__Message__Group__0)
+{ after(grammarAccess.getMessageAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePortClass
+entryRulePortClass
+:
+{ before(grammarAccess.getPortClassRule()); }
+ rulePortClass
+{ after(grammarAccess.getPortClassRule()); }
+ EOF
+;
+
+// Rule PortClass
+rulePortClass
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getPortClassAccess().getGroup()); }
+(rule__PortClass__Group__0)
+{ after(grammarAccess.getPortClassAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMessageHandler
+entryRuleMessageHandler
+:
+{ before(grammarAccess.getMessageHandlerRule()); }
+ ruleMessageHandler
+{ after(grammarAccess.getMessageHandlerRule()); }
+ EOF
+;
+
+// Rule MessageHandler
+ruleMessageHandler
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getMessageHandlerAccess().getGroup()); }
+(rule__MessageHandler__Group__0)
+{ after(grammarAccess.getMessageHandlerAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolSemantics
+entryRuleProtocolSemantics
+:
+{ before(grammarAccess.getProtocolSemanticsRule()); }
+ ruleProtocolSemantics
+{ after(grammarAccess.getProtocolSemanticsRule()); }
+ EOF
+;
+
+// Rule ProtocolSemantics
+ruleProtocolSemantics
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getProtocolSemanticsAccess().getGroup()); }
+(rule__ProtocolSemantics__Group__0)
+{ after(grammarAccess.getProtocolSemanticsAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSemanticsRule
+entryRuleSemanticsRule
+:
+{ before(grammarAccess.getSemanticsRuleRule()); }
+ ruleSemanticsRule
+{ after(grammarAccess.getSemanticsRuleRule()); }
+ EOF
+;
+
+// Rule SemanticsRule
+ruleSemanticsRule
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSemanticsRuleAccess().getAlternatives()); }
+(rule__SemanticsRule__Alternatives)
+{ after(grammarAccess.getSemanticsRuleAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSemanticsInRule
+entryRuleSemanticsInRule
+:
+{ before(grammarAccess.getSemanticsInRuleRule()); }
+ ruleSemanticsInRule
+{ after(grammarAccess.getSemanticsInRuleRule()); }
+ EOF
+;
+
+// Rule SemanticsInRule
+ruleSemanticsInRule
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getGroup()); }
+(rule__SemanticsInRule__Group__0)
+{ after(grammarAccess.getSemanticsInRuleAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSemanticsOutRule
+entryRuleSemanticsOutRule
+:
+{ before(grammarAccess.getSemanticsOutRuleRule()); }
+ ruleSemanticsOutRule
+{ after(grammarAccess.getSemanticsOutRuleRule()); }
+ EOF
+;
+
+// Rule SemanticsOutRule
+ruleSemanticsOutRule
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getGroup()); }
+(rule__SemanticsOutRule__Group__0)
+{ after(grammarAccess.getSemanticsOutRuleAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleActorClass
+entryRuleActorClass
+:
+{ before(grammarAccess.getActorClassRule()); }
+ ruleActorClass
+{ after(grammarAccess.getActorClassRule()); }
+ EOF
+;
+
+// Rule ActorClass
+ruleActorClass
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getActorClassAccess().getGroup()); }
+(rule__ActorClass__Group__0)
+{ after(grammarAccess.getActorClassAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRulePort
+entryRulePort
+:
+{ before(grammarAccess.getPortRule()); }
+ rulePort
+{ after(grammarAccess.getPortRule()); }
+ EOF
+;
+
+// Rule Port
+rulePort
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getPortAccess().getGroup()); }
+(rule__Port__Group__0)
+{ after(grammarAccess.getPortAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExternalPort
+entryRuleExternalPort
+:
+{ before(grammarAccess.getExternalPortRule()); }
+ ruleExternalPort
+{ after(grammarAccess.getExternalPortRule()); }
+ EOF
+;
+
+// Rule ExternalPort
+ruleExternalPort
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getExternalPortAccess().getGroup()); }
+(rule__ExternalPort__Group__0)
+{ after(grammarAccess.getExternalPortAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSAPRef
+entryRuleSAPRef
+:
+{ before(grammarAccess.getSAPRefRule()); }
+ ruleSAPRef
+{ after(grammarAccess.getSAPRefRule()); }
+ EOF
+;
+
+// Rule SAPRef
+ruleSAPRef
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSAPRefAccess().getGroup()); }
+(rule__SAPRef__Group__0)
+{ after(grammarAccess.getSAPRefAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSPPRef
+entryRuleSPPRef
+:
+{ before(grammarAccess.getSPPRefRule()); }
+ ruleSPPRef
+{ after(grammarAccess.getSPPRefRule()); }
+ EOF
+;
+
+// Rule SPPRef
+ruleSPPRef
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSPPRefAccess().getGroup()); }
+(rule__SPPRef__Group__0)
+{ after(grammarAccess.getSPPRefAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleServiceImplementation
+entryRuleServiceImplementation
+:
+{ before(grammarAccess.getServiceImplementationRule()); }
+ ruleServiceImplementation
+{ after(grammarAccess.getServiceImplementationRule()); }
+ EOF
+;
+
+// Rule ServiceImplementation
+ruleServiceImplementation
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getServiceImplementationAccess().getGroup()); }
+(rule__ServiceImplementation__Group__0)
+{ after(grammarAccess.getServiceImplementationAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLogicalSystem
+entryRuleLogicalSystem
+:
+{ before(grammarAccess.getLogicalSystemRule()); }
+ ruleLogicalSystem
+{ after(grammarAccess.getLogicalSystemRule()); }
+ EOF
+;
+
+// Rule LogicalSystem
+ruleLogicalSystem
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getLogicalSystemAccess().getGroup()); }
+(rule__LogicalSystem__Group__0)
+{ after(grammarAccess.getLogicalSystemAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleSubSystemRef
+entryRuleSubSystemRef
+:
+{ before(grammarAccess.getSubSystemRefRule()); }
+ ruleSubSystemRef
+{ after(grammarAccess.getSubSystemRefRule()); }
+ EOF
+;
+
+// Rule SubSystemRef
+ruleSubSystemRef
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSubSystemRefAccess().getGroup()); }
+(rule__SubSystemRef__Group__0)
+{ after(grammarAccess.getSubSystemRefAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSubSystemClass
+entryRuleSubSystemClass
+:
+{ before(grammarAccess.getSubSystemClassRule()); }
+ ruleSubSystemClass
+{ after(grammarAccess.getSubSystemClassRule()); }
+ EOF
+;
+
+// Rule SubSystemClass
+ruleSubSystemClass
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSubSystemClassAccess().getGroup()); }
+(rule__SubSystemClass__Group__0)
+{ after(grammarAccess.getSubSystemClassAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLogicalThread
+entryRuleLogicalThread
+:
+{ before(grammarAccess.getLogicalThreadRule()); }
+ ruleLogicalThread
+{ after(grammarAccess.getLogicalThreadRule()); }
+ EOF
+;
+
+// Rule LogicalThread
+ruleLogicalThread
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getLogicalThreadAccess().getGroup()); }
+(rule__LogicalThread__Group__0)
+{ after(grammarAccess.getLogicalThreadAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleActorInstancePath
+entryRuleActorInstancePath
+:
+{ before(grammarAccess.getActorInstancePathRule()); }
+ ruleActorInstancePath
+{ after(grammarAccess.getActorInstancePathRule()); }
+ EOF
+;
+
+// Rule ActorInstancePath
+ruleActorInstancePath
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getActorInstancePathAccess().getGroup()); }
+(rule__ActorInstancePath__Group__0)
+{ after(grammarAccess.getActorInstancePathAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBinding
+entryRuleBinding
+:
+{ before(grammarAccess.getBindingRule()); }
+ ruleBinding
+{ after(grammarAccess.getBindingRule()); }
+ EOF
+;
+
+// Rule Binding
+ruleBinding
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getBindingAccess().getGroup()); }
+(rule__Binding__Group__0)
+{ after(grammarAccess.getBindingAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBindingEndPoint
+entryRuleBindingEndPoint
+:
+{ before(grammarAccess.getBindingEndPointRule()); }
+ ruleBindingEndPoint
+{ after(grammarAccess.getBindingEndPointRule()); }
+ EOF
+;
+
+// Rule BindingEndPoint
+ruleBindingEndPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getBindingEndPointAccess().getGroup()); }
+(rule__BindingEndPoint__Group__0)
+{ after(grammarAccess.getBindingEndPointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLayerConnection
+entryRuleLayerConnection
+:
+{ before(grammarAccess.getLayerConnectionRule()); }
+ ruleLayerConnection
+{ after(grammarAccess.getLayerConnectionRule()); }
+ EOF
+;
+
+// Rule LayerConnection
+ruleLayerConnection
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getLayerConnectionAccess().getGroup()); }
+(rule__LayerConnection__Group__0)
+{ after(grammarAccess.getLayerConnectionAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSAPoint
+entryRuleSAPoint
+:
+{ before(grammarAccess.getSAPointRule()); }
+ ruleSAPoint
+{ after(grammarAccess.getSAPointRule()); }
+ EOF
+;
+
+// Rule SAPoint
+ruleSAPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSAPointAccess().getAlternatives()); }
+(rule__SAPoint__Alternatives)
+{ after(grammarAccess.getSAPointAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRefSAPoint
+entryRuleRefSAPoint
+:
+{ before(grammarAccess.getRefSAPointRule()); }
+ ruleRefSAPoint
+{ after(grammarAccess.getRefSAPointRule()); }
+ EOF
+;
+
+// Rule RefSAPoint
+ruleRefSAPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getRefSAPointAccess().getGroup()); }
+(rule__RefSAPoint__Group__0)
+{ after(grammarAccess.getRefSAPointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRelaySAPoint
+entryRuleRelaySAPoint
+:
+{ before(grammarAccess.getRelaySAPointRule()); }
+ ruleRelaySAPoint
+{ after(grammarAccess.getRelaySAPointRule()); }
+ EOF
+;
+
+// Rule RelaySAPoint
+ruleRelaySAPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getRelaySAPointAccess().getGroup()); }
+(rule__RelaySAPoint__Group__0)
+{ after(grammarAccess.getRelaySAPointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSPPoint
+entryRuleSPPoint
+:
+{ before(grammarAccess.getSPPointRule()); }
+ ruleSPPoint
+{ after(grammarAccess.getSPPointRule()); }
+ EOF
+;
+
+// Rule SPPoint
+ruleSPPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSPPointAccess().getGroup()); }
+(rule__SPPoint__Group__0)
+{ after(grammarAccess.getSPPointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleActorRef
+entryRuleActorRef
+:
+{ before(grammarAccess.getActorRefRule()); }
+ ruleActorRef
+{ after(grammarAccess.getActorRefRule()); }
+ EOF
+;
+
+// Rule ActorRef
+ruleActorRef
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getActorRefAccess().getGroup()); }
+(rule__ActorRef__Group__0)
+{ after(grammarAccess.getActorRefAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStateGraphNode
+entryRuleStateGraphNode
+:
+{ before(grammarAccess.getStateGraphNodeRule()); }
+ ruleStateGraphNode
+{ after(grammarAccess.getStateGraphNodeRule()); }
+ EOF
+;
+
+// Rule StateGraphNode
+ruleStateGraphNode
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getStateGraphNodeAccess().getAlternatives()); }
+(rule__StateGraphNode__Alternatives)
+{ after(grammarAccess.getStateGraphNodeAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleState
+entryRuleState
+:
+{ before(grammarAccess.getStateRule()); }
+ ruleState
+{ after(grammarAccess.getStateRule()); }
+ EOF
+;
+
+// Rule State
+ruleState
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getStateAccess().getAlternatives()); }
+(rule__State__Alternatives)
+{ after(grammarAccess.getStateAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStateGraph
+entryRuleStateGraph
+:
+{ before(grammarAccess.getStateGraphRule()); }
+ ruleStateGraph
+{ after(grammarAccess.getStateGraphRule()); }
+ EOF
+;
+
+// Rule StateGraph
+ruleStateGraph
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getStateGraphAccess().getGroup()); }
+(rule__StateGraph__Group__0)
+{ after(grammarAccess.getStateGraphAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStateMachine
+entryRuleStateMachine
+:
+{ before(grammarAccess.getStateMachineRule()); }
+ ruleStateMachine
+{ after(grammarAccess.getStateMachineRule()); }
+ EOF
+;
+
+// Rule StateMachine
+ruleStateMachine
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getStateMachineAccess().getGroup()); }
+(rule__StateMachine__Group__0)
+{ after(grammarAccess.getStateMachineAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBaseState
+entryRuleBaseState
+:
+{ before(grammarAccess.getBaseStateRule()); }
+ ruleBaseState
+{ after(grammarAccess.getBaseStateRule()); }
+ EOF
+;
+
+// Rule BaseState
+ruleBaseState
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getBaseStateAccess().getGroup()); }
+(rule__BaseState__Group__0)
+{ after(grammarAccess.getBaseStateAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRefinedState
+entryRuleRefinedState
+:
+{ before(grammarAccess.getRefinedStateRule()); }
+ ruleRefinedState
+{ after(grammarAccess.getRefinedStateRule()); }
+ EOF
+;
+
+// Rule RefinedState
+ruleRefinedState
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getRefinedStateAccess().getGroup()); }
+(rule__RefinedState__Group__0)
+{ after(grammarAccess.getRefinedStateAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDetailCode
+entryRuleDetailCode
+:
+{ before(grammarAccess.getDetailCodeRule()); }
+ ruleDetailCode
+{ after(grammarAccess.getDetailCodeRule()); }
+ EOF
+;
+
+// Rule DetailCode
+ruleDetailCode
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getDetailCodeAccess().getGroup()); }
+(rule__DetailCode__Group__0)
+{ after(grammarAccess.getDetailCodeAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTrPoint
+entryRuleTrPoint
+:
+{ before(grammarAccess.getTrPointRule()); }
+ ruleTrPoint
+{ after(grammarAccess.getTrPointRule()); }
+ EOF
+;
+
+// Rule TrPoint
+ruleTrPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTrPointAccess().getAlternatives()); }
+(rule__TrPoint__Alternatives)
+{ after(grammarAccess.getTrPointAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTransitionPoint
+entryRuleTransitionPoint
+:
+{ before(grammarAccess.getTransitionPointRule()); }
+ ruleTransitionPoint
+{ after(grammarAccess.getTransitionPointRule()); }
+ EOF
+;
+
+// Rule TransitionPoint
+ruleTransitionPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTransitionPointAccess().getGroup()); }
+(rule__TransitionPoint__Group__0)
+{ after(grammarAccess.getTransitionPointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEntryPoint
+entryRuleEntryPoint
+:
+{ before(grammarAccess.getEntryPointRule()); }
+ ruleEntryPoint
+{ after(grammarAccess.getEntryPointRule()); }
+ EOF
+;
+
+// Rule EntryPoint
+ruleEntryPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getEntryPointAccess().getGroup()); }
+(rule__EntryPoint__Group__0)
+{ after(grammarAccess.getEntryPointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExitPoint
+entryRuleExitPoint
+:
+{ before(grammarAccess.getExitPointRule()); }
+ ruleExitPoint
+{ after(grammarAccess.getExitPointRule()); }
+ EOF
+;
+
+// Rule ExitPoint
+ruleExitPoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getExitPointAccess().getGroup()); }
+(rule__ExitPoint__Group__0)
+{ after(grammarAccess.getExitPointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChoicePoint
+entryRuleChoicePoint
+:
+{ before(grammarAccess.getChoicePointRule()); }
+ ruleChoicePoint
+{ after(grammarAccess.getChoicePointRule()); }
+ EOF
+;
+
+// Rule ChoicePoint
+ruleChoicePoint
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getChoicePointAccess().getGroup()); }
+(rule__ChoicePoint__Group__0)
+{ after(grammarAccess.getChoicePointAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTransition
+entryRuleTransition
+:
+{ before(grammarAccess.getTransitionRule()); }
+ ruleTransition
+{ after(grammarAccess.getTransitionRule()); }
+ EOF
+;
+
+// Rule Transition
+ruleTransition
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTransitionAccess().getAlternatives()); }
+(rule__Transition__Alternatives)
+{ after(grammarAccess.getTransitionAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNonInitialTransition
+entryRuleNonInitialTransition
+:
+{ before(grammarAccess.getNonInitialTransitionRule()); }
+ ruleNonInitialTransition
+{ after(grammarAccess.getNonInitialTransitionRule()); }
+ EOF
+;
+
+// Rule NonInitialTransition
+ruleNonInitialTransition
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getNonInitialTransitionAccess().getAlternatives()); }
+(rule__NonInitialTransition__Alternatives)
+{ after(grammarAccess.getNonInitialTransitionAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInitialTransition
+entryRuleInitialTransition
+:
+{ before(grammarAccess.getInitialTransitionRule()); }
+ ruleInitialTransition
+{ after(grammarAccess.getInitialTransitionRule()); }
+ EOF
+;
+
+// Rule InitialTransition
+ruleInitialTransition
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getInitialTransitionAccess().getGroup()); }
+(rule__InitialTransition__Group__0)
+{ after(grammarAccess.getInitialTransitionAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleContinuationTransition
+entryRuleContinuationTransition
+:
+{ before(grammarAccess.getContinuationTransitionRule()); }
+ ruleContinuationTransition
+{ after(grammarAccess.getContinuationTransitionRule()); }
+ EOF
+;
+
+// Rule ContinuationTransition
+ruleContinuationTransition
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getGroup()); }
+(rule__ContinuationTransition__Group__0)
+{ after(grammarAccess.getContinuationTransitionAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTriggeredTransition
+entryRuleTriggeredTransition
+:
+{ before(grammarAccess.getTriggeredTransitionRule()); }
+ ruleTriggeredTransition
+{ after(grammarAccess.getTriggeredTransitionRule()); }
+ EOF
+;
+
+// Rule TriggeredTransition
+ruleTriggeredTransition
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getGroup()); }
+(rule__TriggeredTransition__Group__0)
+{ after(grammarAccess.getTriggeredTransitionAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCPBranchTransition
+entryRuleCPBranchTransition
+:
+{ before(grammarAccess.getCPBranchTransitionRule()); }
+ ruleCPBranchTransition
+{ after(grammarAccess.getCPBranchTransitionRule()); }
+ EOF
+;
+
+// Rule CPBranchTransition
+ruleCPBranchTransition
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getGroup()); }
+(rule__CPBranchTransition__Group__0)
+{ after(grammarAccess.getCPBranchTransitionAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTransitionTerminal
+entryRuleTransitionTerminal
+:
+{ before(grammarAccess.getTransitionTerminalRule()); }
+ ruleTransitionTerminal
+{ after(grammarAccess.getTransitionTerminalRule()); }
+ EOF
+;
+
+// Rule TransitionTerminal
+ruleTransitionTerminal
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTransitionTerminalAccess().getAlternatives()); }
+(rule__TransitionTerminal__Alternatives)
+{ after(grammarAccess.getTransitionTerminalAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStateTerminal
+entryRuleStateTerminal
+:
+{ before(grammarAccess.getStateTerminalRule()); }
+ ruleStateTerminal
+{ after(grammarAccess.getStateTerminalRule()); }
+ EOF
+;
+
+// Rule StateTerminal
+ruleStateTerminal
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getStateTerminalAccess().getStateAssignment()); }
+(rule__StateTerminal__StateAssignment)
+{ after(grammarAccess.getStateTerminalAccess().getStateAssignment()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTrPointTerminal
+entryRuleTrPointTerminal
+:
+{ before(grammarAccess.getTrPointTerminalRule()); }
+ ruleTrPointTerminal
+{ after(grammarAccess.getTrPointTerminalRule()); }
+ EOF
+;
+
+// Rule TrPointTerminal
+ruleTrPointTerminal
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTrPointTerminalAccess().getGroup()); }
+(rule__TrPointTerminal__Group__0)
+{ after(grammarAccess.getTrPointTerminalAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSubStateTrPointTerminal
+entryRuleSubStateTrPointTerminal
+:
+{ before(grammarAccess.getSubStateTrPointTerminalRule()); }
+ ruleSubStateTrPointTerminal
+{ after(grammarAccess.getSubStateTrPointTerminalRule()); }
+ EOF
+;
+
+// Rule SubStateTrPointTerminal
+ruleSubStateTrPointTerminal
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getGroup()); }
+(rule__SubStateTrPointTerminal__Group__0)
+{ after(grammarAccess.getSubStateTrPointTerminalAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChoicepointTerminal
+entryRuleChoicepointTerminal
+:
+{ before(grammarAccess.getChoicepointTerminalRule()); }
+ ruleChoicepointTerminal
+{ after(grammarAccess.getChoicepointTerminalRule()); }
+ EOF
+;
+
+// Rule ChoicepointTerminal
+ruleChoicepointTerminal
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getChoicepointTerminalAccess().getGroup()); }
+(rule__ChoicepointTerminal__Group__0)
+{ after(grammarAccess.getChoicepointTerminalAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTrigger
+entryRuleTrigger
+:
+{ before(grammarAccess.getTriggerRule()); }
+ ruleTrigger
+{ after(grammarAccess.getTriggerRule()); }
+ EOF
+;
+
+// Rule Trigger
+ruleTrigger
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTriggerAccess().getGroup()); }
+(rule__Trigger__Group__0)
+{ after(grammarAccess.getTriggerAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMessageFromIf
+entryRuleMessageFromIf
+:
+{ before(grammarAccess.getMessageFromIfRule()); }
+ ruleMessageFromIf
+{ after(grammarAccess.getMessageFromIfRule()); }
+ EOF
+;
+
+// Rule MessageFromIf
+ruleMessageFromIf
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getMessageFromIfAccess().getGroup()); }
+(rule__MessageFromIf__Group__0)
+{ after(grammarAccess.getMessageFromIfAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleGuard
+entryRuleGuard
+:
+{ before(grammarAccess.getGuardRule()); }
+ ruleGuard
+{ after(grammarAccess.getGuardRule()); }
+ EOF
+;
+
+// Rule Guard
+ruleGuard
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getGuardAccess().getGroup()); }
+(rule__Guard__Group__0)
+{ after(grammarAccess.getGuardAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport
+:
+{ before(grammarAccess.getImportRule()); }
+ ruleImport
+{ after(grammarAccess.getImportRule()); }
+ EOF
+;
+
+// Rule Import
+ruleImport
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImportedFQN
+entryRuleImportedFQN
+:
+{ before(grammarAccess.getImportedFQNRule()); }
+ ruleImportedFQN
+{ after(grammarAccess.getImportedFQNRule()); }
+ EOF
+;
+
+// Rule ImportedFQN
+ruleImportedFQN
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getImportedFQNAccess().getGroup()); }
+(rule__ImportedFQN__Group__0)
+{ after(grammarAccess.getImportedFQNAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFQN
+entryRuleFQN
+:
+{ before(grammarAccess.getFQNRule()); }
+ ruleFQN
+{ after(grammarAccess.getFQNRule()); }
+ EOF
+;
+
+// Rule FQN
+ruleFQN
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getFQNAccess().getGroup()); }
+(rule__FQN__Group__0)
+{ after(grammarAccess.getFQNAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+// Rule PrimitiveType
+rulePrimitiveType
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeAccess().getAlternatives()); }
+(rule__PrimitiveType__Alternatives)
+{ after(grammarAccess.getPrimitiveTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+rule__RoomModel__Alternatives_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getDataClassesAssignment_4_0()); }
+(rule__RoomModel__DataClassesAssignment_4_0)
+{ after(grammarAccess.getRoomModelAccess().getDataClassesAssignment_4_0()); }
+)
+
+ |(
+{ before(grammarAccess.getRoomModelAccess().getProtocolClassesAssignment_4_1()); }
+(rule__RoomModel__ProtocolClassesAssignment_4_1)
+{ after(grammarAccess.getRoomModelAccess().getProtocolClassesAssignment_4_1()); }
+)
+
+ |(
+{ before(grammarAccess.getRoomModelAccess().getActorClassesAssignment_4_2()); }
+(rule__RoomModel__ActorClassesAssignment_4_2)
+{ after(grammarAccess.getRoomModelAccess().getActorClassesAssignment_4_2()); }
+)
+
+ |(
+{ before(grammarAccess.getRoomModelAccess().getSubSystemClassesAssignment_4_3()); }
+(rule__RoomModel__SubSystemClassesAssignment_4_3)
+{ after(grammarAccess.getRoomModelAccess().getSubSystemClassesAssignment_4_3()); }
+)
+
+ |(
+{ before(grammarAccess.getRoomModelAccess().getSystemsAssignment_4_4()); }
+(rule__RoomModel__SystemsAssignment_4_4)
+{ after(grammarAccess.getRoomModelAccess().getSystemsAssignment_4_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__StructureClass__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStructureClassAccess().getActorContainerClassParserRuleCall_0()); }
+ ruleActorContainerClass
+{ after(grammarAccess.getStructureClassAccess().getActorContainerClassParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getStructureClassAccess().getLogicalSystemParserRuleCall_1()); }
+ ruleLogicalSystem
+{ after(grammarAccess.getStructureClassAccess().getLogicalSystemParserRuleCall_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorContainerClass__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorContainerClassAccess().getActorClassParserRuleCall_0()); }
+ ruleActorClass
+{ after(grammarAccess.getActorContainerClassAccess().getActorClassParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getActorContainerClassAccess().getSubSystemClassParserRuleCall_1()); }
+ ruleSubSystemClass
+{ after(grammarAccess.getActorContainerClassAccess().getSubSystemClassParserRuleCall_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Type__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypeAccess().getPrimAssignment_0()); }
+(rule__Type__PrimAssignment_0)
+{ after(grammarAccess.getTypeAccess().getPrimAssignment_0()); }
+)
+
+ |(
+{ before(grammarAccess.getTypeAccess().getTypeAssignment_1()); }
+(rule__Type__TypeAssignment_1)
+{ after(grammarAccess.getTypeAccess().getTypeAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeType__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypeAccess().getPrimAssignment_0()); }
+(rule__FreeType__PrimAssignment_0)
+{ after(grammarAccess.getFreeTypeAccess().getPrimAssignment_0()); }
+)
+
+ |(
+{ before(grammarAccess.getFreeTypeAccess().getTypeAssignment_1()); }
+(rule__FreeType__TypeAssignment_1)
+{ after(grammarAccess.getFreeTypeAccess().getTypeAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__Alternatives_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getAttributesAssignment_2_0()); }
+(rule__PortClass__AttributesAssignment_2_0)
+{ after(grammarAccess.getPortClassAccess().getAttributesAssignment_2_0()); }
+)
+
+ |(
+{ before(grammarAccess.getPortClassAccess().getOperationsAssignment_2_1()); }
+(rule__PortClass__OperationsAssignment_2_1)
+{ after(grammarAccess.getPortClassAccess().getOperationsAssignment_2_1()); }
+)
+
+ |(
+{ before(grammarAccess.getPortClassAccess().getMsgHandlersAssignment_2_2()); }
+(rule__PortClass__MsgHandlersAssignment_2_2)
+{ after(grammarAccess.getPortClassAccess().getMsgHandlersAssignment_2_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsRule__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsRuleAccess().getSemanticsInRuleParserRuleCall_0()); }
+ ruleSemanticsInRule
+{ after(grammarAccess.getSemanticsRuleAccess().getSemanticsInRuleParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getSemanticsRuleAccess().getSemanticsOutRuleParserRuleCall_1()); }
+ ruleSemanticsOutRule
+{ after(grammarAccess.getSemanticsRuleAccess().getSemanticsOutRuleParserRuleCall_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Alternatives_6_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getIntPortsAssignment_6_4_0()); }
+(rule__ActorClass__IntPortsAssignment_6_4_0)
+{ after(grammarAccess.getActorClassAccess().getIntPortsAssignment_6_4_0()); }
+)
+
+ |(
+{ before(grammarAccess.getActorClassAccess().getExtPortsAssignment_6_4_1()); }
+(rule__ActorClass__ExtPortsAssignment_6_4_1)
+{ after(grammarAccess.getActorClassAccess().getExtPortsAssignment_6_4_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+rule__SAPoint__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSAPointAccess().getRefSAPointParserRuleCall_0()); }
+ ruleRefSAPoint
+{ after(grammarAccess.getSAPointAccess().getRefSAPointParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getSAPointAccess().getRelaySAPointParserRuleCall_1()); }
+ ruleRelaySAPoint
+{ after(grammarAccess.getSAPointAccess().getRelaySAPointParserRuleCall_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraphNode__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphNodeAccess().getStateParserRuleCall_0()); }
+ ruleState
+{ after(grammarAccess.getStateGraphNodeAccess().getStateParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getStateGraphNodeAccess().getChoicePointParserRuleCall_1()); }
+ ruleChoicePoint
+{ after(grammarAccess.getStateGraphNodeAccess().getChoicePointParserRuleCall_1()); }
+)
+
+ |(
+{ before(grammarAccess.getStateGraphNodeAccess().getTrPointParserRuleCall_2()); }
+ ruleTrPoint
+{ after(grammarAccess.getStateGraphNodeAccess().getTrPointParserRuleCall_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__State__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateAccess().getBaseStateParserRuleCall_0()); }
+ ruleBaseState
+{ after(grammarAccess.getStateAccess().getBaseStateParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getStateAccess().getRefinedStateParserRuleCall_1()); }
+ ruleRefinedState
+{ after(grammarAccess.getStateAccess().getRefinedStateParserRuleCall_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__Alternatives_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphAccess().getStatesAssignment_1_0()); }
+(rule__StateGraph__StatesAssignment_1_0)
+{ after(grammarAccess.getStateGraphAccess().getStatesAssignment_1_0()); }
+)
+
+ |(
+{ before(grammarAccess.getStateGraphAccess().getTrPointsAssignment_1_1()); }
+(rule__StateGraph__TrPointsAssignment_1_1)
+{ after(grammarAccess.getStateGraphAccess().getTrPointsAssignment_1_1()); }
+)
+
+ |(
+{ before(grammarAccess.getStateGraphAccess().getChPointsAssignment_1_2()); }
+(rule__StateGraph__ChPointsAssignment_1_2)
+{ after(grammarAccess.getStateGraphAccess().getChPointsAssignment_1_2()); }
+)
+
+ |(
+{ before(grammarAccess.getStateGraphAccess().getTransitionsAssignment_1_3()); }
+(rule__StateGraph__TransitionsAssignment_1_3)
+{ after(grammarAccess.getStateGraphAccess().getTransitionsAssignment_1_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__Alternatives_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getStatesAssignment_2_0()); }
+(rule__StateMachine__StatesAssignment_2_0)
+{ after(grammarAccess.getStateMachineAccess().getStatesAssignment_2_0()); }
+)
+
+ |(
+{ before(grammarAccess.getStateMachineAccess().getTrPointsAssignment_2_1()); }
+(rule__StateMachine__TrPointsAssignment_2_1)
+{ after(grammarAccess.getStateMachineAccess().getTrPointsAssignment_2_1()); }
+)
+
+ |(
+{ before(grammarAccess.getStateMachineAccess().getChPointsAssignment_2_2()); }
+(rule__StateMachine__ChPointsAssignment_2_2)
+{ after(grammarAccess.getStateMachineAccess().getChPointsAssignment_2_2()); }
+)
+
+ |(
+{ before(grammarAccess.getStateMachineAccess().getTransitionsAssignment_2_3()); }
+(rule__StateMachine__TransitionsAssignment_2_3)
+{ after(grammarAccess.getStateMachineAccess().getTransitionsAssignment_2_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TrPoint__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTrPointAccess().getTransitionPointParserRuleCall_0()); }
+ ruleTransitionPoint
+{ after(grammarAccess.getTrPointAccess().getTransitionPointParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getTrPointAccess().getEntryPointParserRuleCall_1()); }
+ ruleEntryPoint
+{ after(grammarAccess.getTrPointAccess().getEntryPointParserRuleCall_1()); }
+)
+
+ |(
+{ before(grammarAccess.getTrPointAccess().getExitPointParserRuleCall_2()); }
+ ruleExitPoint
+{ after(grammarAccess.getTrPointAccess().getExitPointParserRuleCall_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Transition__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionAccess().getInitialTransitionParserRuleCall_0()); }
+ ruleInitialTransition
+{ after(grammarAccess.getTransitionAccess().getInitialTransitionParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getTransitionAccess().getNonInitialTransitionParserRuleCall_1()); }
+ ruleNonInitialTransition
+{ after(grammarAccess.getTransitionAccess().getNonInitialTransitionParserRuleCall_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__NonInitialTransition__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getNonInitialTransitionAccess().getTriggeredTransitionParserRuleCall_0()); }
+ ruleTriggeredTransition
+{ after(grammarAccess.getNonInitialTransitionAccess().getTriggeredTransitionParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getNonInitialTransitionAccess().getContinuationTransitionParserRuleCall_1()); }
+ ruleContinuationTransition
+{ after(grammarAccess.getNonInitialTransitionAccess().getContinuationTransitionParserRuleCall_1()); }
+)
+
+ |(
+{ before(grammarAccess.getNonInitialTransitionAccess().getCPBranchTransitionParserRuleCall_2()); }
+ ruleCPBranchTransition
+{ after(grammarAccess.getNonInitialTransitionAccess().getCPBranchTransitionParserRuleCall_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TransitionTerminal__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionTerminalAccess().getStateTerminalParserRuleCall_0()); }
+ ruleStateTerminal
+{ after(grammarAccess.getTransitionTerminalAccess().getStateTerminalParserRuleCall_0()); }
+)
+
+ |(
+{ before(grammarAccess.getTransitionTerminalAccess().getTrPointTerminalParserRuleCall_1()); }
+ ruleTrPointTerminal
+{ after(grammarAccess.getTransitionTerminalAccess().getTrPointTerminalParserRuleCall_1()); }
+)
+
+ |(
+{ before(grammarAccess.getTransitionTerminalAccess().getSubStateTrPointTerminalParserRuleCall_2()); }
+ ruleSubStateTrPointTerminal
+{ after(grammarAccess.getTransitionTerminalAccess().getSubStateTrPointTerminalParserRuleCall_2()); }
+)
+
+ |(
+{ before(grammarAccess.getTransitionTerminalAccess().getChoicepointTerminalParserRuleCall_3()); }
+ ruleChoicepointTerminal
+{ after(grammarAccess.getTransitionTerminalAccess().getChoicepointTerminalParserRuleCall_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimitiveType__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0()); }
+( 'void'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1()); }
+( 'int8'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2()); }
+( 'int16'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3()); }
+( 'int32'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4()); }
+( 'uint8'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5()); }
+( 'uint16'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6()); }
+( 'uint32'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7()); }
+( 'float32'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8()); }
+( 'float64'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9()); }
+( 'boolean'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10()); }
+( 'string'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11()); }
+( 'char'
+)
+{ after(grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+rule__RoomModel__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RoomModel__Group__0__Impl
+ rule__RoomModel__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getRoomModelKeyword_0()); }
+
+ 'RoomModel'
+
+{ after(grammarAccess.getRoomModelAccess().getRoomModelKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RoomModel__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RoomModel__Group__1__Impl
+ rule__RoomModel__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getNameAssignment_1()); }
+(rule__RoomModel__NameAssignment_1)
+{ after(grammarAccess.getRoomModelAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RoomModel__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RoomModel__Group__2__Impl
+ rule__RoomModel__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getLeftCurlyBracketKeyword_2()); }
+
+ '{'
+
+{ after(grammarAccess.getRoomModelAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RoomModel__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RoomModel__Group__3__Impl
+ rule__RoomModel__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getImportsAssignment_3()); }
+(rule__RoomModel__ImportsAssignment_3)*
+{ after(grammarAccess.getRoomModelAccess().getImportsAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RoomModel__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RoomModel__Group__4__Impl
+ rule__RoomModel__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getRoomModelAccess().getAlternatives_4()); }
+(rule__RoomModel__Alternatives_4)
+{ after(grammarAccess.getRoomModelAccess().getAlternatives_4()); }
+)
+(
+{ before(grammarAccess.getRoomModelAccess().getAlternatives_4()); }
+(rule__RoomModel__Alternatives_4)*
+{ after(grammarAccess.getRoomModelAccess().getAlternatives_4()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RoomModel__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RoomModel__Group__5__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getRightCurlyBracketKeyword_5()); }
+
+ '}'
+
+{ after(grammarAccess.getRoomModelAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TypedID__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TypedID__Group__0__Impl
+ rule__TypedID__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TypedID__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypedIDAccess().getNameAssignment_0()); }
+(rule__TypedID__NameAssignment_0)
+{ after(grammarAccess.getTypedIDAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TypedID__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TypedID__Group__1__Impl
+ rule__TypedID__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TypedID__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypedIDAccess().getColonKeyword_1()); }
+
+ ':'
+
+{ after(grammarAccess.getTypedIDAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TypedID__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TypedID__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TypedID__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypedIDAccess().getTypeAssignment_2()); }
+(rule__TypedID__TypeAssignment_2)
+{ after(grammarAccess.getTypedIDAccess().getTypeAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__FreeTypedID__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FreeTypedID__Group__0__Impl
+ rule__FreeTypedID__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeTypedID__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypedIDAccess().getNameAssignment_0()); }
+(rule__FreeTypedID__NameAssignment_0)
+{ after(grammarAccess.getFreeTypedIDAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__FreeTypedID__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FreeTypedID__Group__1__Impl
+ rule__FreeTypedID__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeTypedID__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypedIDAccess().getColonKeyword_1()); }
+
+ ':'
+
+{ after(grammarAccess.getFreeTypedIDAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__FreeTypedID__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FreeTypedID__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeTypedID__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypedIDAccess().getTypeAssignment_2()); }
+(rule__FreeTypedID__TypeAssignment_2)
+{ after(grammarAccess.getFreeTypedIDAccess().getTypeAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataClass__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__0__Impl
+ rule__DataClass__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getDataClassKeyword_0()); }
+
+ 'DataClass'
+
+{ after(grammarAccess.getDataClassAccess().getDataClassKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__1__Impl
+ rule__DataClass__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getNameAssignment_1()); }
+(rule__DataClass__NameAssignment_1)
+{ after(grammarAccess.getDataClassAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__2__Impl
+ rule__DataClass__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getGroup_2()); }
+(rule__DataClass__Group_2__0)?
+{ after(grammarAccess.getDataClassAccess().getGroup_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__3__Impl
+ rule__DataClass__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getLeftCurlyBracketKeyword_3()); }
+
+ '{'
+
+{ after(grammarAccess.getDataClassAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__4__Impl
+ rule__DataClass__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getImportsAssignment_4()); }
+(rule__DataClass__ImportsAssignment_4)*
+{ after(grammarAccess.getDataClassAccess().getImportsAssignment_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__5__Impl
+ rule__DataClass__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getDataClassAccess().getAttributesAssignment_5()); }
+(rule__DataClass__AttributesAssignment_5)
+{ after(grammarAccess.getDataClassAccess().getAttributesAssignment_5()); }
+)
+(
+{ before(grammarAccess.getDataClassAccess().getAttributesAssignment_5()); }
+(rule__DataClass__AttributesAssignment_5)*
+{ after(grammarAccess.getDataClassAccess().getAttributesAssignment_5()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__6__Impl
+ rule__DataClass__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getOperationsAssignment_6()); }
+(rule__DataClass__OperationsAssignment_6)*
+{ after(grammarAccess.getDataClassAccess().getOperationsAssignment_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group__7__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getRightCurlyBracketKeyword_7()); }
+
+ '}'
+
+{ after(grammarAccess.getDataClassAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataClass__Group_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group_2__0__Impl
+ rule__DataClass__Group_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getExtendsKeyword_2_0()); }
+
+ 'extends'
+
+{ after(grammarAccess.getDataClassAccess().getExtendsKeyword_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DataClass__Group_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DataClass__Group_2__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__Group_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getBaseAssignment_2_1()); }
+(rule__DataClass__BaseAssignment_2_1)
+{ after(grammarAccess.getDataClassAccess().getBaseAssignment_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Attribute__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group__0__Impl
+ rule__Attribute__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getAttributeKeyword_0()); }
+
+ 'Attribute'
+
+{ after(grammarAccess.getAttributeAccess().getAttributeKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Attribute__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group__1__Impl
+ rule__Attribute__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getNameAssignment_1()); }
+(rule__Attribute__NameAssignment_1)
+{ after(grammarAccess.getAttributeAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Attribute__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group__2__Impl
+ rule__Attribute__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getGroup_2()); }
+(rule__Attribute__Group_2__0)?
+{ after(grammarAccess.getAttributeAccess().getGroup_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Attribute__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group__3__Impl
+ rule__Attribute__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getColonKeyword_3()); }
+
+ ':'
+
+{ after(grammarAccess.getAttributeAccess().getColonKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Attribute__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group__4__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getTypeAssignment_4()); }
+(rule__Attribute__TypeAssignment_4)
+{ after(grammarAccess.getAttributeAccess().getTypeAssignment_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Attribute__Group_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group_2__0__Impl
+ rule__Attribute__Group_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getLeftSquareBracketKeyword_2_0()); }
+
+ '['
+
+{ after(grammarAccess.getAttributeAccess().getLeftSquareBracketKeyword_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Attribute__Group_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group_2__1__Impl
+ rule__Attribute__Group_2__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getSizeAssignment_2_1()); }
+(rule__Attribute__SizeAssignment_2_1)
+{ after(grammarAccess.getAttributeAccess().getSizeAssignment_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Attribute__Group_2__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Attribute__Group_2__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__Group_2__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getRightSquareBracketKeyword_2_2()); }
+
+ ']'
+
+{ after(grammarAccess.getAttributeAccess().getRightSquareBracketKeyword_2_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Operation__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group__0__Impl
+ rule__Operation__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getOperationKeyword_0()); }
+
+ 'Operation'
+
+{ after(grammarAccess.getOperationAccess().getOperationKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group__1__Impl
+ rule__Operation__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getNameAssignment_1()); }
+(rule__Operation__NameAssignment_1)
+{ after(grammarAccess.getOperationAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group__2__Impl
+ rule__Operation__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2()); }
+
+ '('
+
+{ after(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group__3__Impl
+ rule__Operation__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getGroup_3()); }
+(rule__Operation__Group_3__0)?
+{ after(grammarAccess.getOperationAccess().getGroup_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group__4__Impl
+ rule__Operation__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getRightParenthesisKeyword_4()); }
+
+ ')'
+
+{ after(grammarAccess.getOperationAccess().getRightParenthesisKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group__5__Impl
+ rule__Operation__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getGroup_5()); }
+(rule__Operation__Group_5__0)?
+{ after(grammarAccess.getOperationAccess().getGroup_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group__6__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getDetailCodeAssignment_6()); }
+(rule__Operation__DetailCodeAssignment_6)
+{ after(grammarAccess.getOperationAccess().getDetailCodeAssignment_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Operation__Group_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group_3__0__Impl
+ rule__Operation__Group_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getArgumentsAssignment_3_0()); }
+(rule__Operation__ArgumentsAssignment_3_0)
+{ after(grammarAccess.getOperationAccess().getArgumentsAssignment_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group_3__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getGroup_3_1()); }
+(rule__Operation__Group_3_1__0)*
+{ after(grammarAccess.getOperationAccess().getGroup_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Operation__Group_3_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group_3_1__0__Impl
+ rule__Operation__Group_3_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_3_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getCommaKeyword_3_1_0()); }
+
+ ','
+
+{ after(grammarAccess.getOperationAccess().getCommaKeyword_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_3_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group_3_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_3_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getArgumentsAssignment_3_1_1()); }
+(rule__Operation__ArgumentsAssignment_3_1_1)
+{ after(grammarAccess.getOperationAccess().getArgumentsAssignment_3_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Operation__Group_5__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group_5__0__Impl
+ rule__Operation__Group_5__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_5__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getColonKeyword_5_0()); }
+
+ ':'
+
+{ after(grammarAccess.getOperationAccess().getColonKeyword_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_5__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Operation__Group_5__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_5__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getReturntypeAssignment_5_1()); }
+(rule__Operation__ReturntypeAssignment_5_1)
+{ after(grammarAccess.getOperationAccess().getReturntypeAssignment_5_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolClass__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__0__Impl
+ rule__ProtocolClass__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getProtocolClassKeyword_0()); }
+
+ 'ProtocolClass'
+
+{ after(grammarAccess.getProtocolClassAccess().getProtocolClassKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__1__Impl
+ rule__ProtocolClass__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getNameAssignment_1()); }
+(rule__ProtocolClass__NameAssignment_1)
+{ after(grammarAccess.getProtocolClassAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__2__Impl
+ rule__ProtocolClass__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getGroup_2()); }
+(rule__ProtocolClass__Group_2__0)?
+{ after(grammarAccess.getProtocolClassAccess().getGroup_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__3__Impl
+ rule__ProtocolClass__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_3()); }
+
+ '{'
+
+{ after(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__4__Impl
+ rule__ProtocolClass__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getGroup_4()); }
+(rule__ProtocolClass__Group_4__0)?
+{ after(grammarAccess.getProtocolClassAccess().getGroup_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__5__Impl
+ rule__ProtocolClass__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getGroup_5()); }
+(rule__ProtocolClass__Group_5__0)?
+{ after(grammarAccess.getProtocolClassAccess().getGroup_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__6__Impl
+ rule__ProtocolClass__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getIncomingKeyword_6()); }
+
+ 'incoming'
+
+{ after(grammarAccess.getProtocolClassAccess().getIncomingKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__7__Impl
+ rule__ProtocolClass__Group__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_7()); }
+
+ '{'
+
+{ after(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__8__Impl
+ rule__ProtocolClass__Group__9
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getIncomingMessagesAssignment_8()); }
+(rule__ProtocolClass__IncomingMessagesAssignment_8)*
+{ after(grammarAccess.getProtocolClassAccess().getIncomingMessagesAssignment_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__9
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__9__Impl
+ rule__ProtocolClass__Group__10
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__9__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_9()); }
+
+ '}'
+
+{ after(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__10
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__10__Impl
+ rule__ProtocolClass__Group__11
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__10__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getOutgoingKeyword_10()); }
+
+ 'outgoing'
+
+{ after(grammarAccess.getProtocolClassAccess().getOutgoingKeyword_10()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__11
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__11__Impl
+ rule__ProtocolClass__Group__12
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__11__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_11()); }
+
+ '{'
+
+{ after(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__12
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__12__Impl
+ rule__ProtocolClass__Group__13
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__12__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getOutgoingMessagesAssignment_12()); }
+(rule__ProtocolClass__OutgoingMessagesAssignment_12)*
+{ after(grammarAccess.getProtocolClassAccess().getOutgoingMessagesAssignment_12()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__13
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__13__Impl
+ rule__ProtocolClass__Group__14
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__13__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_13()); }
+
+ '}'
+
+{ after(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__14
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__14__Impl
+ rule__ProtocolClass__Group__15
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__14__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getGroup_14()); }
+(rule__ProtocolClass__Group_14__0)?
+{ after(grammarAccess.getProtocolClassAccess().getGroup_14()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__15
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__15__Impl
+ rule__ProtocolClass__Group__16
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__15__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getGroup_15()); }
+(rule__ProtocolClass__Group_15__0)?
+{ after(grammarAccess.getProtocolClassAccess().getGroup_15()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__16
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__16__Impl
+ rule__ProtocolClass__Group__17
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__16__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getSemanticsAssignment_16()); }
+(rule__ProtocolClass__SemanticsAssignment_16)?
+{ after(grammarAccess.getProtocolClassAccess().getSemanticsAssignment_16()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group__17
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group__17__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group__17__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_17()); }
+
+ '}'
+
+{ after(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_17()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolClass__Group_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_2__0__Impl
+ rule__ProtocolClass__Group_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getExtendsKeyword_2_0()); }
+
+ 'extends'
+
+{ after(grammarAccess.getProtocolClassAccess().getExtendsKeyword_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_2__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getBaseAssignment_2_1()); }
+(rule__ProtocolClass__BaseAssignment_2_1)
+{ after(grammarAccess.getProtocolClassAccess().getBaseAssignment_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolClass__Group_4__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_4__0__Impl
+ rule__ProtocolClass__Group_4__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_4__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getUsercode1Keyword_4_0()); }
+
+ 'usercode1'
+
+{ after(grammarAccess.getProtocolClassAccess().getUsercode1Keyword_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group_4__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_4__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_4__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getUserCode1Assignment_4_1()); }
+(rule__ProtocolClass__UserCode1Assignment_4_1)
+{ after(grammarAccess.getProtocolClassAccess().getUserCode1Assignment_4_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolClass__Group_5__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_5__0__Impl
+ rule__ProtocolClass__Group_5__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_5__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getUsercode2Keyword_5_0()); }
+
+ 'usercode2'
+
+{ after(grammarAccess.getProtocolClassAccess().getUsercode2Keyword_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group_5__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_5__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_5__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getUserCode2Assignment_5_1()); }
+(rule__ProtocolClass__UserCode2Assignment_5_1)
+{ after(grammarAccess.getProtocolClassAccess().getUserCode2Assignment_5_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolClass__Group_14__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_14__0__Impl
+ rule__ProtocolClass__Group_14__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_14__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getRegularKeyword_14_0()); }
+
+ 'regular'
+
+{ after(grammarAccess.getProtocolClassAccess().getRegularKeyword_14_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group_14__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_14__1__Impl
+ rule__ProtocolClass__Group_14__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_14__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getPortClassKeyword_14_1()); }
+
+ 'PortClass'
+
+{ after(grammarAccess.getProtocolClassAccess().getPortClassKeyword_14_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group_14__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_14__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_14__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getRegularAssignment_14_2()); }
+(rule__ProtocolClass__RegularAssignment_14_2)
+{ after(grammarAccess.getProtocolClassAccess().getRegularAssignment_14_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ProtocolClass__Group_15__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_15__0__Impl
+ rule__ProtocolClass__Group_15__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_15__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getConjugateKeyword_15_0()); }
+
+ 'conjugate'
+
+{ after(grammarAccess.getProtocolClassAccess().getConjugateKeyword_15_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group_15__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_15__1__Impl
+ rule__ProtocolClass__Group_15__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_15__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getPortClassKeyword_15_1()); }
+
+ 'PortClass'
+
+{ after(grammarAccess.getProtocolClassAccess().getPortClassKeyword_15_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolClass__Group_15__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolClass__Group_15__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__Group_15__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getConjugateAssignment_15_2()); }
+(rule__ProtocolClass__ConjugateAssignment_15_2)
+{ after(grammarAccess.getProtocolClassAccess().getConjugateAssignment_15_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Message__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group__0__Impl
+ rule__Message__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getMessageKeyword_0()); }
+
+ 'Message'
+
+{ after(grammarAccess.getMessageAccess().getMessageKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Message__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group__1__Impl
+ rule__Message__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getNameAssignment_1()); }
+(rule__Message__NameAssignment_1)
+{ after(grammarAccess.getMessageAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Message__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group__2__Impl
+ rule__Message__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getLeftParenthesisKeyword_2()); }
+
+ '('
+
+{ after(grammarAccess.getMessageAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Message__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group__3__Impl
+ rule__Message__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getGroup_3()); }
+(rule__Message__Group_3__0)?
+{ after(grammarAccess.getMessageAccess().getGroup_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Message__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group__4__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getRightParenthesisKeyword_4()); }
+
+ ')'
+
+{ after(grammarAccess.getMessageAccess().getRightParenthesisKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Message__Group_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group_3__0__Impl
+ rule__Message__Group_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getArgumentsAssignment_3_0()); }
+(rule__Message__ArgumentsAssignment_3_0)
+{ after(grammarAccess.getMessageAccess().getArgumentsAssignment_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Message__Group_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group_3__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getGroup_3_1()); }
+(rule__Message__Group_3_1__0)*
+{ after(grammarAccess.getMessageAccess().getGroup_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Message__Group_3_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group_3_1__0__Impl
+ rule__Message__Group_3_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group_3_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getCommaKeyword_3_1_0()); }
+
+ ','
+
+{ after(grammarAccess.getMessageAccess().getCommaKeyword_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Message__Group_3_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Message__Group_3_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__Group_3_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getArgumentsAssignment_3_1_1()); }
+(rule__Message__ArgumentsAssignment_3_1_1)
+{ after(grammarAccess.getMessageAccess().getArgumentsAssignment_3_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PortClass__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PortClass__Group__0__Impl
+ rule__PortClass__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getLeftCurlyBracketKeyword_0()); }
+
+ '{'
+
+{ after(grammarAccess.getPortClassAccess().getLeftCurlyBracketKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PortClass__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PortClass__Group__1__Impl
+ rule__PortClass__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getGroup_1()); }
+(rule__PortClass__Group_1__0)?
+{ after(grammarAccess.getPortClassAccess().getGroup_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PortClass__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PortClass__Group__2__Impl
+ rule__PortClass__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getPortClassAccess().getAlternatives_2()); }
+(rule__PortClass__Alternatives_2)
+{ after(grammarAccess.getPortClassAccess().getAlternatives_2()); }
+)
+(
+{ before(grammarAccess.getPortClassAccess().getAlternatives_2()); }
+(rule__PortClass__Alternatives_2)*
+{ after(grammarAccess.getPortClassAccess().getAlternatives_2()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PortClass__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PortClass__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getRightCurlyBracketKeyword_3()); }
+
+ '}'
+
+{ after(grammarAccess.getPortClassAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__PortClass__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PortClass__Group_1__0__Impl
+ rule__PortClass__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getUsercodeKeyword_1_0()); }
+
+ 'usercode'
+
+{ after(grammarAccess.getPortClassAccess().getUsercodeKeyword_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PortClass__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PortClass__Group_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getUserCodeAssignment_1_1()); }
+(rule__PortClass__UserCodeAssignment_1_1)
+{ after(grammarAccess.getPortClassAccess().getUserCodeAssignment_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MessageHandler__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__MessageHandler__Group__0__Impl
+ rule__MessageHandler__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageHandler__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageHandlerAccess().getHandleKeyword_0()); }
+
+ 'handle'
+
+{ after(grammarAccess.getMessageHandlerAccess().getHandleKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__MessageHandler__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__MessageHandler__Group__1__Impl
+ rule__MessageHandler__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageHandler__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageHandlerAccess().getMsgAssignment_1()); }
+(rule__MessageHandler__MsgAssignment_1)
+{ after(grammarAccess.getMessageHandlerAccess().getMsgAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__MessageHandler__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__MessageHandler__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageHandler__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageHandlerAccess().getDetailCodeAssignment_2()); }
+(rule__MessageHandler__DetailCodeAssignment_2)
+{ after(grammarAccess.getMessageHandlerAccess().getDetailCodeAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ProtocolSemantics__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolSemantics__Group__0__Impl
+ rule__ProtocolSemantics__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolSemantics__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolSemanticsAccess().getSemanticsKeyword_0()); }
+
+ 'semantics'
+
+{ after(grammarAccess.getProtocolSemanticsAccess().getSemanticsKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolSemantics__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolSemantics__Group__1__Impl
+ rule__ProtocolSemantics__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolSemantics__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolSemanticsAccess().getLeftCurlyBracketKeyword_1()); }
+
+ '{'
+
+{ after(grammarAccess.getProtocolSemanticsAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolSemantics__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolSemantics__Group__2__Impl
+ rule__ProtocolSemantics__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolSemantics__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2()); }
+(rule__ProtocolSemantics__RulesAssignment_2)
+{ after(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2()); }
+)
+(
+{ before(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2()); }
+(rule__ProtocolSemantics__RulesAssignment_2)*
+{ after(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolSemantics__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ProtocolSemantics__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolSemantics__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolSemanticsAccess().getRightCurlyBracketKeyword_3()); }
+
+ '}'
+
+{ after(grammarAccess.getProtocolSemanticsAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SemanticsInRule__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsInRule__Group__0__Impl
+ rule__SemanticsInRule__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getInKeyword_0()); }
+
+ 'in'
+
+{ after(grammarAccess.getSemanticsInRuleAccess().getInKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsInRule__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsInRule__Group__1__Impl
+ rule__SemanticsInRule__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getMsgAssignment_1()); }
+(rule__SemanticsInRule__MsgAssignment_1)
+{ after(grammarAccess.getSemanticsInRuleAccess().getMsgAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsInRule__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsInRule__Group__2__Impl
+ rule__SemanticsInRule__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
+
+ '->'
+
+{ after(grammarAccess.getSemanticsInRuleAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsInRule__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsInRule__Group__3__Impl
+ rule__SemanticsInRule__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getLeftCurlyBracketKeyword_3()); }
+
+ '{'
+
+{ after(grammarAccess.getSemanticsInRuleAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsInRule__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsInRule__Group__4__Impl
+ rule__SemanticsInRule__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getFollowUpsAssignment_4()); }
+(rule__SemanticsInRule__FollowUpsAssignment_4)*
+{ after(grammarAccess.getSemanticsInRuleAccess().getFollowUpsAssignment_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsInRule__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsInRule__Group__5__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getRightCurlyBracketKeyword_5()); }
+
+ '}'
+
+{ after(grammarAccess.getSemanticsInRuleAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SemanticsOutRule__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsOutRule__Group__0__Impl
+ rule__SemanticsOutRule__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getOutKeyword_0()); }
+
+ 'out'
+
+{ after(grammarAccess.getSemanticsOutRuleAccess().getOutKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsOutRule__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsOutRule__Group__1__Impl
+ rule__SemanticsOutRule__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getMsgAssignment_1()); }
+(rule__SemanticsOutRule__MsgAssignment_1)
+{ after(grammarAccess.getSemanticsOutRuleAccess().getMsgAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsOutRule__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsOutRule__Group__2__Impl
+ rule__SemanticsOutRule__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
+
+ '->'
+
+{ after(grammarAccess.getSemanticsOutRuleAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsOutRule__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsOutRule__Group__3__Impl
+ rule__SemanticsOutRule__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getLeftCurlyBracketKeyword_3()); }
+
+ '{'
+
+{ after(grammarAccess.getSemanticsOutRuleAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsOutRule__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsOutRule__Group__4__Impl
+ rule__SemanticsOutRule__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsAssignment_4()); }
+(rule__SemanticsOutRule__FollowUpsAssignment_4)*
+{ after(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsAssignment_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SemanticsOutRule__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SemanticsOutRule__Group__5__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getRightCurlyBracketKeyword_5()); }
+
+ '}'
+
+{ after(grammarAccess.getSemanticsOutRuleAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ActorClass__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__0__Impl
+ rule__ActorClass__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getAbstractAssignment_0()); }
+(rule__ActorClass__AbstractAssignment_0)?
+{ after(grammarAccess.getActorClassAccess().getAbstractAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__1__Impl
+ rule__ActorClass__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getActorClassKeyword_1()); }
+
+ 'ActorClass'
+
+{ after(grammarAccess.getActorClassAccess().getActorClassKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__2__Impl
+ rule__ActorClass__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getNameAssignment_2()); }
+(rule__ActorClass__NameAssignment_2)
+{ after(grammarAccess.getActorClassAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__3__Impl
+ rule__ActorClass__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getGroup_3()); }
+(rule__ActorClass__Group_3__0)?
+{ after(grammarAccess.getActorClassAccess().getGroup_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__4__Impl
+ rule__ActorClass__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_4()); }
+
+ '{'
+
+{ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__5__Impl
+ rule__ActorClass__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getGroup_5()); }
+(rule__ActorClass__Group_5__0)?
+{ after(grammarAccess.getActorClassAccess().getGroup_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__6__Impl
+ rule__ActorClass__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getGroup_6()); }
+(rule__ActorClass__Group_6__0)?
+{ after(grammarAccess.getActorClassAccess().getGroup_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__7__Impl
+ rule__ActorClass__Group__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getGroup_7()); }
+(rule__ActorClass__Group_7__0)?
+{ after(grammarAccess.getActorClassAccess().getGroup_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group__8__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_8()); }
+
+ '}'
+
+{ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ActorClass__Group_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_3__0__Impl
+ rule__ActorClass__Group_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getExtendsKeyword_3_0()); }
+
+ 'extends'
+
+{ after(grammarAccess.getActorClassAccess().getExtendsKeyword_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_3__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getBaseAssignment_3_1()); }
+(rule__ActorClass__BaseAssignment_3_1)
+{ after(grammarAccess.getActorClassAccess().getBaseAssignment_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ActorClass__Group_5__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_5__0__Impl
+ rule__ActorClass__Group_5__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_5__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getInterfaceKeyword_5_0()); }
+
+ 'Interface'
+
+{ after(grammarAccess.getActorClassAccess().getInterfaceKeyword_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_5__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_5__1__Impl
+ rule__ActorClass__Group_5__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_5__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+ '{'
+
+{ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_5__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_5__2__Impl
+ rule__ActorClass__Group_5__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_5__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getIfPortsAssignment_5_2()); }
+(rule__ActorClass__IfPortsAssignment_5_2)*
+{ after(grammarAccess.getActorClassAccess().getIfPortsAssignment_5_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_5__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_5__3__Impl
+ rule__ActorClass__Group_5__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_5__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getIfSPPsAssignment_5_3()); }
+(rule__ActorClass__IfSPPsAssignment_5_3)*
+{ after(grammarAccess.getActorClassAccess().getIfSPPsAssignment_5_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_5__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_5__4__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_5__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_5_4()); }
+
+ '}'
+
+{ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ActorClass__Group_6__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__0__Impl
+ rule__ActorClass__Group_6__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getStructureKeyword_6_0()); }
+
+ 'Structure'
+
+{ after(grammarAccess.getActorClassAccess().getStructureKeyword_6_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__1__Impl
+ rule__ActorClass__Group_6__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+ '{'
+
+{ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__2__Impl
+ rule__ActorClass__Group_6__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getGroup_6_2()); }
+(rule__ActorClass__Group_6_2__0)?
+{ after(grammarAccess.getActorClassAccess().getGroup_6_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__3__Impl
+ rule__ActorClass__Group_6__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getGroup_6_3()); }
+(rule__ActorClass__Group_6_3__0)?
+{ after(grammarAccess.getActorClassAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__4__Impl
+ rule__ActorClass__Group_6__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getAlternatives_6_4()); }
+(rule__ActorClass__Alternatives_6_4)*
+{ after(grammarAccess.getActorClassAccess().getAlternatives_6_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__5__Impl
+ rule__ActorClass__Group_6__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getServiceImplementationsAssignment_6_5()); }
+(rule__ActorClass__ServiceImplementationsAssignment_6_5)*
+{ after(grammarAccess.getActorClassAccess().getServiceImplementationsAssignment_6_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__6__Impl
+ rule__ActorClass__Group_6__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getStrSAPsAssignment_6_6()); }
+(rule__ActorClass__StrSAPsAssignment_6_6)*
+{ after(grammarAccess.getActorClassAccess().getStrSAPsAssignment_6_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__7__Impl
+ rule__ActorClass__Group_6__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getAttributesAssignment_6_7()); }
+(rule__ActorClass__AttributesAssignment_6_7)*
+{ after(grammarAccess.getActorClassAccess().getAttributesAssignment_6_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__8__Impl
+ rule__ActorClass__Group_6__9
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getActorRefsAssignment_6_8()); }
+(rule__ActorClass__ActorRefsAssignment_6_8)*
+{ after(grammarAccess.getActorClassAccess().getActorRefsAssignment_6_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__9
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__9__Impl
+ rule__ActorClass__Group_6__10
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__9__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getBindingsAssignment_6_9()); }
+(rule__ActorClass__BindingsAssignment_6_9)*
+{ after(grammarAccess.getActorClassAccess().getBindingsAssignment_6_9()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__10
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__10__Impl
+ rule__ActorClass__Group_6__11
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__10__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getConnectionsAssignment_6_10()); }
+(rule__ActorClass__ConnectionsAssignment_6_10)*
+{ after(grammarAccess.getActorClassAccess().getConnectionsAssignment_6_10()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6__11
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6__11__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6__11__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_6_11()); }
+
+ '}'
+
+{ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_6_11()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ActorClass__Group_6_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6_2__0__Impl
+ rule__ActorClass__Group_6_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getUsercode1Keyword_6_2_0()); }
+
+ 'usercode1'
+
+{ after(grammarAccess.getActorClassAccess().getUsercode1Keyword_6_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6_2__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getUserCode1Assignment_6_2_1()); }
+(rule__ActorClass__UserCode1Assignment_6_2_1)
+{ after(grammarAccess.getActorClassAccess().getUserCode1Assignment_6_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ActorClass__Group_6_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6_3__0__Impl
+ rule__ActorClass__Group_6_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getUsercode2Keyword_6_3_0()); }
+
+ 'usercode2'
+
+{ after(grammarAccess.getActorClassAccess().getUsercode2Keyword_6_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_6_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_6_3__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_6_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getUserCode2Assignment_6_3_1()); }
+(rule__ActorClass__UserCode2Assignment_6_3_1)
+{ after(grammarAccess.getActorClassAccess().getUserCode2Assignment_6_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ActorClass__Group_7__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_7__0__Impl
+ rule__ActorClass__Group_7__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_7__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getBehaviorKeyword_7_0()); }
+
+ 'Behavior'
+
+{ after(grammarAccess.getActorClassAccess().getBehaviorKeyword_7_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_7__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_7__1__Impl
+ rule__ActorClass__Group_7__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_7__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_7_1()); }
+
+ '{'
+
+{ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_7_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_7__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_7__2__Impl
+ rule__ActorClass__Group_7__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_7__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getOperationsAssignment_7_2()); }
+(rule__ActorClass__OperationsAssignment_7_2)*
+{ after(grammarAccess.getActorClassAccess().getOperationsAssignment_7_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_7__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_7__3__Impl
+ rule__ActorClass__Group_7__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_7__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getStateMachineAssignment_7_3()); }
+(rule__ActorClass__StateMachineAssignment_7_3)?
+{ after(grammarAccess.getActorClassAccess().getStateMachineAssignment_7_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorClass__Group_7__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorClass__Group_7__4__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__Group_7__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_7_4()); }
+
+ '}'
+
+{ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_7_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Port__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group__0__Impl
+ rule__Port__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getConjugatedAssignment_0()); }
+(rule__Port__ConjugatedAssignment_0)?
+{ after(grammarAccess.getPortAccess().getConjugatedAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Port__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group__1__Impl
+ rule__Port__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getPortKeyword_1()); }
+
+ 'Port'
+
+{ after(grammarAccess.getPortAccess().getPortKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Port__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group__2__Impl
+ rule__Port__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getNameAssignment_2()); }
+(rule__Port__NameAssignment_2)
+{ after(grammarAccess.getPortAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Port__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group__3__Impl
+ rule__Port__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getGroup_3()); }
+(rule__Port__Group_3__0)?
+{ after(grammarAccess.getPortAccess().getGroup_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Port__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group__4__Impl
+ rule__Port__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getColonKeyword_4()); }
+
+ ':'
+
+{ after(grammarAccess.getPortAccess().getColonKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Port__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group__5__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getProtocolAssignment_5()); }
+(rule__Port__ProtocolAssignment_5)
+{ after(grammarAccess.getPortAccess().getProtocolAssignment_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Port__Group_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group_3__0__Impl
+ rule__Port__Group_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getLeftSquareBracketKeyword_3_0()); }
+
+ '['
+
+{ after(grammarAccess.getPortAccess().getLeftSquareBracketKeyword_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Port__Group_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group_3__1__Impl
+ rule__Port__Group_3__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getMultiplicityAssignment_3_1()); }
+(rule__Port__MultiplicityAssignment_3_1)
+{ after(grammarAccess.getPortAccess().getMultiplicityAssignment_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Port__Group_3__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Port__Group_3__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__Group_3__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getRightSquareBracketKeyword_3_2()); }
+
+ ']'
+
+{ after(grammarAccess.getPortAccess().getRightSquareBracketKeyword_3_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ExternalPort__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ExternalPort__Group__0__Impl
+ rule__ExternalPort__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ExternalPort__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getExternalPortAccess().getExternalKeyword_0()); }
+
+ 'external'
+
+{ after(grammarAccess.getExternalPortAccess().getExternalKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ExternalPort__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ExternalPort__Group__1__Impl
+ rule__ExternalPort__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ExternalPort__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getExternalPortAccess().getPortKeyword_1()); }
+
+ 'Port'
+
+{ after(grammarAccess.getExternalPortAccess().getPortKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ExternalPort__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ExternalPort__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ExternalPort__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getExternalPortAccess().getIfportAssignment_2()); }
+(rule__ExternalPort__IfportAssignment_2)
+{ after(grammarAccess.getExternalPortAccess().getIfportAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SAPRef__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SAPRef__Group__0__Impl
+ rule__SAPRef__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SAPRef__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSAPRefAccess().getSAPKeyword_0()); }
+
+ 'SAP'
+
+{ after(grammarAccess.getSAPRefAccess().getSAPKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SAPRef__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SAPRef__Group__1__Impl
+ rule__SAPRef__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SAPRef__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSAPRefAccess().getNameAssignment_1()); }
+(rule__SAPRef__NameAssignment_1)
+{ after(grammarAccess.getSAPRefAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SAPRef__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SAPRef__Group__2__Impl
+ rule__SAPRef__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SAPRef__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSAPRefAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getSAPRefAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SAPRef__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SAPRef__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SAPRef__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSAPRefAccess().getProtocolAssignment_3()); }
+(rule__SAPRef__ProtocolAssignment_3)
+{ after(grammarAccess.getSAPRefAccess().getProtocolAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SPPRef__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SPPRef__Group__0__Impl
+ rule__SPPRef__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPRef__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPRefAccess().getSPPKeyword_0()); }
+
+ 'SPP'
+
+{ after(grammarAccess.getSPPRefAccess().getSPPKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SPPRef__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SPPRef__Group__1__Impl
+ rule__SPPRef__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPRef__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPRefAccess().getNameAssignment_1()); }
+(rule__SPPRef__NameAssignment_1)
+{ after(grammarAccess.getSPPRefAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SPPRef__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SPPRef__Group__2__Impl
+ rule__SPPRef__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPRef__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPRefAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getSPPRefAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SPPRef__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SPPRef__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPRef__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPRefAccess().getProtocolAssignment_3()); }
+(rule__SPPRef__ProtocolAssignment_3)
+{ after(grammarAccess.getSPPRefAccess().getProtocolAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ServiceImplementation__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ServiceImplementation__Group__0__Impl
+ rule__ServiceImplementation__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ServiceImplementation__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getServiceImplementationAccess().getServiceImplementationKeyword_0()); }
+
+ 'ServiceImplementation'
+
+{ after(grammarAccess.getServiceImplementationAccess().getServiceImplementationKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ServiceImplementation__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ServiceImplementation__Group__1__Impl
+ rule__ServiceImplementation__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ServiceImplementation__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getServiceImplementationAccess().getOfKeyword_1()); }
+
+ 'of'
+
+{ after(grammarAccess.getServiceImplementationAccess().getOfKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ServiceImplementation__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ServiceImplementation__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ServiceImplementation__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getServiceImplementationAccess().getSppAssignment_2()); }
+(rule__ServiceImplementation__SppAssignment_2)
+{ after(grammarAccess.getServiceImplementationAccess().getSppAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LogicalSystem__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalSystem__Group__0__Impl
+ rule__LogicalSystem__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getLogicalSystemKeyword_0()); }
+
+ 'LogicalSystem'
+
+{ after(grammarAccess.getLogicalSystemAccess().getLogicalSystemKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalSystem__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalSystem__Group__1__Impl
+ rule__LogicalSystem__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getNameAssignment_1()); }
+(rule__LogicalSystem__NameAssignment_1)
+{ after(grammarAccess.getLogicalSystemAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalSystem__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalSystem__Group__2__Impl
+ rule__LogicalSystem__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getLeftCurlyBracketKeyword_2()); }
+
+ '{'
+
+{ after(grammarAccess.getLogicalSystemAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalSystem__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalSystem__Group__3__Impl
+ rule__LogicalSystem__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3()); }
+(rule__LogicalSystem__SubSystemsAssignment_3)
+{ after(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3()); }
+)
+(
+{ before(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3()); }
+(rule__LogicalSystem__SubSystemsAssignment_3)*
+{ after(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalSystem__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalSystem__Group__4__Impl
+ rule__LogicalSystem__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getBindingsAssignment_4()); }
+(rule__LogicalSystem__BindingsAssignment_4)*
+{ after(grammarAccess.getLogicalSystemAccess().getBindingsAssignment_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalSystem__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalSystem__Group__5__Impl
+ rule__LogicalSystem__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getConnectionsAssignment_5()); }
+(rule__LogicalSystem__ConnectionsAssignment_5)*
+{ after(grammarAccess.getLogicalSystemAccess().getConnectionsAssignment_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalSystem__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalSystem__Group__6__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getRightCurlyBracketKeyword_6()); }
+
+ '}'
+
+{ after(grammarAccess.getLogicalSystemAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SubSystemRef__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemRef__Group__0__Impl
+ rule__SubSystemRef__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemRef__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemRefAccess().getSubSystemRefKeyword_0()); }
+
+ 'SubSystemRef'
+
+{ after(grammarAccess.getSubSystemRefAccess().getSubSystemRefKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemRef__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemRef__Group__1__Impl
+ rule__SubSystemRef__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemRef__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemRefAccess().getNameAssignment_1()); }
+(rule__SubSystemRef__NameAssignment_1)
+{ after(grammarAccess.getSubSystemRefAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemRef__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemRef__Group__2__Impl
+ rule__SubSystemRef__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemRef__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemRefAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getSubSystemRefAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemRef__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemRef__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemRef__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemRefAccess().getTypeAssignment_3()); }
+(rule__SubSystemRef__TypeAssignment_3)
+{ after(grammarAccess.getSubSystemRefAccess().getTypeAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SubSystemClass__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__0__Impl
+ rule__SubSystemClass__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getSubSystemClassKeyword_0()); }
+
+ 'SubSystemClass'
+
+{ after(grammarAccess.getSubSystemClassAccess().getSubSystemClassKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__1__Impl
+ rule__SubSystemClass__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getNameAssignment_1()); }
+(rule__SubSystemClass__NameAssignment_1)
+{ after(grammarAccess.getSubSystemClassAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__2__Impl
+ rule__SubSystemClass__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getLeftCurlyBracketKeyword_2()); }
+
+ '{'
+
+{ after(grammarAccess.getSubSystemClassAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__3__Impl
+ rule__SubSystemClass__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getRelayPortsAssignment_3()); }
+(rule__SubSystemClass__RelayPortsAssignment_3)*
+{ after(grammarAccess.getSubSystemClassAccess().getRelayPortsAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__4__Impl
+ rule__SubSystemClass__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getIfSPPsAssignment_4()); }
+(rule__SubSystemClass__IfSPPsAssignment_4)*
+{ after(grammarAccess.getSubSystemClassAccess().getIfSPPsAssignment_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__5__Impl
+ rule__SubSystemClass__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5()); }
+(rule__SubSystemClass__ActorRefsAssignment_5)
+{ after(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5()); }
+)
+(
+{ before(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5()); }
+(rule__SubSystemClass__ActorRefsAssignment_5)*
+{ after(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__6__Impl
+ rule__SubSystemClass__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getBindingsAssignment_6()); }
+(rule__SubSystemClass__BindingsAssignment_6)*
+{ after(grammarAccess.getSubSystemClassAccess().getBindingsAssignment_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__7__Impl
+ rule__SubSystemClass__Group__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getConnectionsAssignment_7()); }
+(rule__SubSystemClass__ConnectionsAssignment_7)*
+{ after(grammarAccess.getSubSystemClassAccess().getConnectionsAssignment_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__8__Impl
+ rule__SubSystemClass__Group__9
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getThreadsAssignment_8()); }
+(rule__SubSystemClass__ThreadsAssignment_8)*
+{ after(grammarAccess.getSubSystemClassAccess().getThreadsAssignment_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubSystemClass__Group__9
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubSystemClass__Group__9__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__Group__9__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getRightCurlyBracketKeyword_9()); }
+
+ '}'
+
+{ after(grammarAccess.getSubSystemClassAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LogicalThread__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group__0__Impl
+ rule__LogicalThread__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getLogicalThreadKeyword_0()); }
+
+ 'LogicalThread'
+
+{ after(grammarAccess.getLogicalThreadAccess().getLogicalThreadKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalThread__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group__1__Impl
+ rule__LogicalThread__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getNameAssignment_1()); }
+(rule__LogicalThread__NameAssignment_1)
+{ after(grammarAccess.getLogicalThreadAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalThread__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group__2__Impl
+ rule__LogicalThread__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getLeftCurlyBracketKeyword_2()); }
+
+ '{'
+
+{ after(grammarAccess.getLogicalThreadAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalThread__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group__3__Impl
+ rule__LogicalThread__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_3()); }
+(rule__LogicalThread__InstancesAssignment_3)
+{ after(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalThread__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group__4__Impl
+ rule__LogicalThread__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getGroup_4()); }
+(rule__LogicalThread__Group_4__0)*
+{ after(grammarAccess.getLogicalThreadAccess().getGroup_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalThread__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group__5__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getRightCurlyBracketKeyword_5()); }
+
+ '}'
+
+{ after(grammarAccess.getLogicalThreadAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LogicalThread__Group_4__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group_4__0__Impl
+ rule__LogicalThread__Group_4__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group_4__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getCommaKeyword_4_0()); }
+
+ ','
+
+{ after(grammarAccess.getLogicalThreadAccess().getCommaKeyword_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LogicalThread__Group_4__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LogicalThread__Group_4__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__Group_4__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_4_1()); }
+(rule__LogicalThread__InstancesAssignment_4_1)
+{ after(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_4_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ActorInstancePath__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorInstancePath__Group__0__Impl
+ rule__ActorInstancePath__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorInstancePath__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_0()); }
+(rule__ActorInstancePath__SegmentsAssignment_0)
+{ after(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorInstancePath__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorInstancePath__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorInstancePath__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorInstancePathAccess().getGroup_1()); }
+(rule__ActorInstancePath__Group_1__0)*
+{ after(grammarAccess.getActorInstancePathAccess().getGroup_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ActorInstancePath__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorInstancePath__Group_1__0__Impl
+ rule__ActorInstancePath__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorInstancePath__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorInstancePathAccess().getFullStopKeyword_1_0()); }
+
+ '.'
+
+{ after(grammarAccess.getActorInstancePathAccess().getFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorInstancePath__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorInstancePath__Group_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorInstancePath__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_1_1()); }
+(rule__ActorInstancePath__SegmentsAssignment_1_1)
+{ after(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Binding__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Binding__Group__0__Impl
+ rule__Binding__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Binding__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingAccess().getBindingKeyword_0()); }
+
+ 'Binding'
+
+{ after(grammarAccess.getBindingAccess().getBindingKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Binding__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Binding__Group__1__Impl
+ rule__Binding__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Binding__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingAccess().getEndpoint1Assignment_1()); }
+(rule__Binding__Endpoint1Assignment_1)
+{ after(grammarAccess.getBindingAccess().getEndpoint1Assignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Binding__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Binding__Group__2__Impl
+ rule__Binding__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Binding__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingAccess().getAndKeyword_2()); }
+
+ 'and'
+
+{ after(grammarAccess.getBindingAccess().getAndKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Binding__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Binding__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Binding__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingAccess().getEndpoint2Assignment_3()); }
+(rule__Binding__Endpoint2Assignment_3)
+{ after(grammarAccess.getBindingAccess().getEndpoint2Assignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__BindingEndPoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BindingEndPoint__Group__0__Impl
+ rule__BindingEndPoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BindingEndPoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingEndPointAccess().getGroup_0()); }
+(rule__BindingEndPoint__Group_0__0)?
+{ after(grammarAccess.getBindingEndPointAccess().getGroup_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BindingEndPoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BindingEndPoint__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BindingEndPoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingEndPointAccess().getPortAssignment_1()); }
+(rule__BindingEndPoint__PortAssignment_1)
+{ after(grammarAccess.getBindingEndPointAccess().getPortAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__BindingEndPoint__Group_0__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BindingEndPoint__Group_0__0__Impl
+ rule__BindingEndPoint__Group_0__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BindingEndPoint__Group_0__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingEndPointAccess().getActorRefAssignment_0_0()); }
+(rule__BindingEndPoint__ActorRefAssignment_0_0)
+{ after(grammarAccess.getBindingEndPointAccess().getActorRefAssignment_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BindingEndPoint__Group_0__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BindingEndPoint__Group_0__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BindingEndPoint__Group_0__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingEndPointAccess().getFullStopKeyword_0_1()); }
+
+ '.'
+
+{ after(grammarAccess.getBindingEndPointAccess().getFullStopKeyword_0_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LayerConnection__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LayerConnection__Group__0__Impl
+ rule__LayerConnection__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LayerConnection__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLayerConnectionAccess().getLayerConnectionKeyword_0()); }
+
+ 'LayerConnection'
+
+{ after(grammarAccess.getLayerConnectionAccess().getLayerConnectionKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LayerConnection__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LayerConnection__Group__1__Impl
+ rule__LayerConnection__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LayerConnection__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLayerConnectionAccess().getFromAssignment_1()); }
+(rule__LayerConnection__FromAssignment_1)
+{ after(grammarAccess.getLayerConnectionAccess().getFromAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LayerConnection__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LayerConnection__Group__2__Impl
+ rule__LayerConnection__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LayerConnection__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLayerConnectionAccess().getSatisfied_byKeyword_2()); }
+
+ 'satisfied_by'
+
+{ after(grammarAccess.getLayerConnectionAccess().getSatisfied_byKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__LayerConnection__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__LayerConnection__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LayerConnection__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLayerConnectionAccess().getToAssignment_3()); }
+(rule__LayerConnection__ToAssignment_3)
+{ after(grammarAccess.getLayerConnectionAccess().getToAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RefSAPoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefSAPoint__Group__0__Impl
+ rule__RefSAPoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefSAPoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefSAPointAccess().getRefKeyword_0()); }
+
+ 'ref'
+
+{ after(grammarAccess.getRefSAPointAccess().getRefKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefSAPoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefSAPoint__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefSAPoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefSAPointAccess().getRefAssignment_1()); }
+(rule__RefSAPoint__RefAssignment_1)
+{ after(grammarAccess.getRefSAPointAccess().getRefAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RelaySAPoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RelaySAPoint__Group__0__Impl
+ rule__RelaySAPoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RelaySAPoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRelaySAPointAccess().getRelay_sapKeyword_0()); }
+
+ 'relay_sap'
+
+{ after(grammarAccess.getRelaySAPointAccess().getRelay_sapKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RelaySAPoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RelaySAPoint__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RelaySAPoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRelaySAPointAccess().getRelayAssignment_1()); }
+(rule__RelaySAPoint__RelayAssignment_1)
+{ after(grammarAccess.getRelaySAPointAccess().getRelayAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SPPoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SPPoint__Group__0__Impl
+ rule__SPPoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPointAccess().getRefAssignment_0()); }
+(rule__SPPoint__RefAssignment_0)
+{ after(grammarAccess.getSPPointAccess().getRefAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SPPoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SPPoint__Group__1__Impl
+ rule__SPPoint__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPointAccess().getFullStopKeyword_1()); }
+
+ '.'
+
+{ after(grammarAccess.getSPPointAccess().getFullStopKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SPPoint__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SPPoint__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPoint__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPointAccess().getServiceAssignment_2()); }
+(rule__SPPoint__ServiceAssignment_2)
+{ after(grammarAccess.getSPPointAccess().getServiceAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ActorRef__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorRef__Group__0__Impl
+ rule__ActorRef__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorRef__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorRefAccess().getActorRefKeyword_0()); }
+
+ 'ActorRef'
+
+{ after(grammarAccess.getActorRefAccess().getActorRefKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorRef__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorRef__Group__1__Impl
+ rule__ActorRef__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorRef__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorRefAccess().getNameAssignment_1()); }
+(rule__ActorRef__NameAssignment_1)
+{ after(grammarAccess.getActorRefAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorRef__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorRef__Group__2__Impl
+ rule__ActorRef__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorRef__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorRefAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getActorRefAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ActorRef__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ActorRef__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorRef__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorRefAccess().getTypeAssignment_3()); }
+(rule__ActorRef__TypeAssignment_3)
+{ after(grammarAccess.getActorRefAccess().getTypeAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__StateGraph__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__StateGraph__Group__0__Impl
+ rule__StateGraph__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphAccess().getLeftCurlyBracketKeyword_0()); }
+
+ '{'
+
+{ after(grammarAccess.getStateGraphAccess().getLeftCurlyBracketKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__StateGraph__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__StateGraph__Group__1__Impl
+ rule__StateGraph__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getStateGraphAccess().getAlternatives_1()); }
+(rule__StateGraph__Alternatives_1)
+{ after(grammarAccess.getStateGraphAccess().getAlternatives_1()); }
+)
+(
+{ before(grammarAccess.getStateGraphAccess().getAlternatives_1()); }
+(rule__StateGraph__Alternatives_1)*
+{ after(grammarAccess.getStateGraphAccess().getAlternatives_1()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__StateGraph__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__StateGraph__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphAccess().getRightCurlyBracketKeyword_2()); }
+
+ '}'
+
+{ after(grammarAccess.getStateGraphAccess().getRightCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__StateMachine__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__StateMachine__Group__0__Impl
+ rule__StateMachine__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getStateMachineKeyword_0()); }
+
+ 'StateMachine'
+
+{ after(grammarAccess.getStateMachineAccess().getStateMachineKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__StateMachine__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__StateMachine__Group__1__Impl
+ rule__StateMachine__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_1()); }
+
+ '{'
+
+{ after(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__StateMachine__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__StateMachine__Group__2__Impl
+ rule__StateMachine__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getStateMachineAccess().getAlternatives_2()); }
+(rule__StateMachine__Alternatives_2)
+{ after(grammarAccess.getStateMachineAccess().getAlternatives_2()); }
+)
+(
+{ before(grammarAccess.getStateMachineAccess().getAlternatives_2()); }
+(rule__StateMachine__Alternatives_2)*
+{ after(grammarAccess.getStateMachineAccess().getAlternatives_2()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__StateMachine__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__StateMachine__Group__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_3()); }
+
+ '}'
+
+{ after(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__BaseState__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group__0__Impl
+ rule__BaseState__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getStateKeyword_0()); }
+
+ 'State'
+
+{ after(grammarAccess.getBaseStateAccess().getStateKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group__1__Impl
+ rule__BaseState__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getNameAssignment_1()); }
+(rule__BaseState__NameAssignment_1)
+{ after(grammarAccess.getBaseStateAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group__2__Impl
+ rule__BaseState__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getLeftCurlyBracketKeyword_2()); }
+
+ '{'
+
+{ after(grammarAccess.getBaseStateAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group__3__Impl
+ rule__BaseState__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getGroup_3()); }
+(rule__BaseState__Group_3__0)?
+{ after(grammarAccess.getBaseStateAccess().getGroup_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group__4__Impl
+ rule__BaseState__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getGroup_4()); }
+(rule__BaseState__Group_4__0)?
+{ after(grammarAccess.getBaseStateAccess().getGroup_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group__5__Impl
+ rule__BaseState__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getGroup_5()); }
+(rule__BaseState__Group_5__0)?
+{ after(grammarAccess.getBaseStateAccess().getGroup_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group__6__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getRightCurlyBracketKeyword_6()); }
+
+ '}'
+
+{ after(grammarAccess.getBaseStateAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BaseState__Group_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group_3__0__Impl
+ rule__BaseState__Group_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getEntryKeyword_3_0()); }
+
+ 'entry'
+
+{ after(grammarAccess.getBaseStateAccess().getEntryKeyword_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group_3__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getEntryCodeAssignment_3_1()); }
+(rule__BaseState__EntryCodeAssignment_3_1)
+{ after(grammarAccess.getBaseStateAccess().getEntryCodeAssignment_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__BaseState__Group_4__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group_4__0__Impl
+ rule__BaseState__Group_4__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group_4__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getExitKeyword_4_0()); }
+
+ 'exit'
+
+{ after(grammarAccess.getBaseStateAccess().getExitKeyword_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group_4__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group_4__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group_4__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getExitCodeAssignment_4_1()); }
+(rule__BaseState__ExitCodeAssignment_4_1)
+{ after(grammarAccess.getBaseStateAccess().getExitCodeAssignment_4_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__BaseState__Group_5__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group_5__0__Impl
+ rule__BaseState__Group_5__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group_5__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getSubgraphKeyword_5_0()); }
+
+ 'subgraph'
+
+{ after(grammarAccess.getBaseStateAccess().getSubgraphKeyword_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__BaseState__Group_5__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__BaseState__Group_5__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__Group_5__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getSubgraphAssignment_5_1()); }
+(rule__BaseState__SubgraphAssignment_5_1)
+{ after(grammarAccess.getBaseStateAccess().getSubgraphAssignment_5_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RefinedState__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group__0__Impl
+ rule__RefinedState__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getRefinedStateKeyword_0()); }
+
+ 'RefinedState'
+
+{ after(grammarAccess.getRefinedStateAccess().getRefinedStateKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group__1__Impl
+ rule__RefinedState__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getBaseAssignment_1()); }
+(rule__RefinedState__BaseAssignment_1)
+{ after(grammarAccess.getRefinedStateAccess().getBaseAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group__2__Impl
+ rule__RefinedState__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getLeftCurlyBracketKeyword_2()); }
+
+ '{'
+
+{ after(grammarAccess.getRefinedStateAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group__3__Impl
+ rule__RefinedState__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getGroup_3()); }
+(rule__RefinedState__Group_3__0)?
+{ after(grammarAccess.getRefinedStateAccess().getGroup_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group__4__Impl
+ rule__RefinedState__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getGroup_4()); }
+(rule__RefinedState__Group_4__0)?
+{ after(grammarAccess.getRefinedStateAccess().getGroup_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group__5__Impl
+ rule__RefinedState__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getGroup_5()); }
+(rule__RefinedState__Group_5__0)?
+{ after(grammarAccess.getRefinedStateAccess().getGroup_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group__6__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getRightCurlyBracketKeyword_6()); }
+
+ '}'
+
+{ after(grammarAccess.getRefinedStateAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RefinedState__Group_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group_3__0__Impl
+ rule__RefinedState__Group_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getEntryKeyword_3_0()); }
+
+ 'entry'
+
+{ after(grammarAccess.getRefinedStateAccess().getEntryKeyword_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group_3__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getEntryCodeAssignment_3_1()); }
+(rule__RefinedState__EntryCodeAssignment_3_1)
+{ after(grammarAccess.getRefinedStateAccess().getEntryCodeAssignment_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RefinedState__Group_4__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group_4__0__Impl
+ rule__RefinedState__Group_4__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group_4__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getExitKeyword_4_0()); }
+
+ 'exit'
+
+{ after(grammarAccess.getRefinedStateAccess().getExitKeyword_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group_4__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group_4__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group_4__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getExitCodeAssignment_4_1()); }
+(rule__RefinedState__ExitCodeAssignment_4_1)
+{ after(grammarAccess.getRefinedStateAccess().getExitCodeAssignment_4_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RefinedState__Group_5__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group_5__0__Impl
+ rule__RefinedState__Group_5__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group_5__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getSubgraphKeyword_5_0()); }
+
+ 'subgraph'
+
+{ after(grammarAccess.getRefinedStateAccess().getSubgraphKeyword_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__RefinedState__Group_5__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__RefinedState__Group_5__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__Group_5__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getSubgraphAssignment_5_1()); }
+(rule__RefinedState__SubgraphAssignment_5_1)
+{ after(grammarAccess.getRefinedStateAccess().getSubgraphAssignment_5_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DetailCode__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DetailCode__Group__0__Impl
+ rule__DetailCode__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DetailCode__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDetailCodeAccess().getLeftCurlyBracketKeyword_0()); }
+
+ '{'
+
+{ after(grammarAccess.getDetailCodeAccess().getLeftCurlyBracketKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DetailCode__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DetailCode__Group__1__Impl
+ rule__DetailCode__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DetailCode__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+(
+{ before(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1()); }
+(rule__DetailCode__CommandsAssignment_1)
+{ after(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1()); }
+)
+(
+{ before(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1()); }
+(rule__DetailCode__CommandsAssignment_1)*
+{ after(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1()); }
+)
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DetailCode__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DetailCode__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DetailCode__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDetailCodeAccess().getRightCurlyBracketKeyword_2()); }
+
+ '}'
+
+{ after(grammarAccess.getDetailCodeAccess().getRightCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TransitionPoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TransitionPoint__Group__0__Impl
+ rule__TransitionPoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TransitionPoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionPointAccess().getHandlerAssignment_0()); }
+(rule__TransitionPoint__HandlerAssignment_0)?
+{ after(grammarAccess.getTransitionPointAccess().getHandlerAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TransitionPoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TransitionPoint__Group__1__Impl
+ rule__TransitionPoint__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TransitionPoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionPointAccess().getTransitionPointKeyword_1()); }
+
+ 'TransitionPoint'
+
+{ after(grammarAccess.getTransitionPointAccess().getTransitionPointKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TransitionPoint__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TransitionPoint__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TransitionPoint__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionPointAccess().getNameAssignment_2()); }
+(rule__TransitionPoint__NameAssignment_2)
+{ after(grammarAccess.getTransitionPointAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EntryPoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__EntryPoint__Group__0__Impl
+ rule__EntryPoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__EntryPoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getEntryPointAccess().getEntryPointKeyword_0()); }
+
+ 'EntryPoint'
+
+{ after(grammarAccess.getEntryPointAccess().getEntryPointKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__EntryPoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__EntryPoint__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__EntryPoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getEntryPointAccess().getNameAssignment_1()); }
+(rule__EntryPoint__NameAssignment_1)
+{ after(grammarAccess.getEntryPointAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExitPoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ExitPoint__Group__0__Impl
+ rule__ExitPoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ExitPoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getExitPointAccess().getExitPointKeyword_0()); }
+
+ 'ExitPoint'
+
+{ after(grammarAccess.getExitPointAccess().getExitPointKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ExitPoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ExitPoint__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ExitPoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getExitPointAccess().getNameAssignment_1()); }
+(rule__ExitPoint__NameAssignment_1)
+{ after(grammarAccess.getExitPointAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChoicePoint__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ChoicePoint__Group__0__Impl
+ rule__ChoicePoint__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ChoicePoint__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getChoicePointAccess().getChoicePointKeyword_0()); }
+
+ 'ChoicePoint'
+
+{ after(grammarAccess.getChoicePointAccess().getChoicePointKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ChoicePoint__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ChoicePoint__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ChoicePoint__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getChoicePointAccess().getNameAssignment_1()); }
+(rule__ChoicePoint__NameAssignment_1)
+{ after(grammarAccess.getChoicePointAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InitialTransition__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__0__Impl
+ rule__InitialTransition__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getTransitionKeyword_0()); }
+
+ 'Transition'
+
+{ after(grammarAccess.getInitialTransitionAccess().getTransitionKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__1__Impl
+ rule__InitialTransition__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getNameAssignment_1()); }
+(rule__InitialTransition__NameAssignment_1)?
+{ after(grammarAccess.getInitialTransitionAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__2__Impl
+ rule__InitialTransition__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getInitialTransitionAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__3__Impl
+ rule__InitialTransition__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getInitialKeyword_3()); }
+
+ 'initial'
+
+{ after(grammarAccess.getInitialTransitionAccess().getInitialKeyword_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__4__Impl
+ rule__InitialTransition__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+
+ '->'
+
+{ after(grammarAccess.getInitialTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__5__Impl
+ rule__InitialTransition__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getToAssignment_5()); }
+(rule__InitialTransition__ToAssignment_5)
+{ after(grammarAccess.getInitialTransitionAccess().getToAssignment_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__6__Impl
+ rule__InitialTransition__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+
+ '{'
+
+{ after(grammarAccess.getInitialTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__7__Impl
+ rule__InitialTransition__Group__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getGroup_7()); }
+(rule__InitialTransition__Group_7__0)?
+{ after(grammarAccess.getInitialTransitionAccess().getGroup_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group__8__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getRightCurlyBracketKeyword_8()); }
+
+ '}'
+
+{ after(grammarAccess.getInitialTransitionAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__InitialTransition__Group_7__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group_7__0__Impl
+ rule__InitialTransition__Group_7__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group_7__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getActionKeyword_7_0()); }
+
+ 'action'
+
+{ after(grammarAccess.getInitialTransitionAccess().getActionKeyword_7_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__InitialTransition__Group_7__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__InitialTransition__Group_7__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__Group_7__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getActionAssignment_7_1()); }
+(rule__InitialTransition__ActionAssignment_7_1)
+{ after(grammarAccess.getInitialTransitionAccess().getActionAssignment_7_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ContinuationTransition__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__0__Impl
+ rule__ContinuationTransition__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getTransitionKeyword_0()); }
+
+ 'Transition'
+
+{ after(grammarAccess.getContinuationTransitionAccess().getTransitionKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__1__Impl
+ rule__ContinuationTransition__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getNameAssignment_1()); }
+(rule__ContinuationTransition__NameAssignment_1)?
+{ after(grammarAccess.getContinuationTransitionAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__2__Impl
+ rule__ContinuationTransition__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getContinuationTransitionAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__3__Impl
+ rule__ContinuationTransition__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getFromAssignment_3()); }
+(rule__ContinuationTransition__FromAssignment_3)
+{ after(grammarAccess.getContinuationTransitionAccess().getFromAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__4__Impl
+ rule__ContinuationTransition__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+
+ '->'
+
+{ after(grammarAccess.getContinuationTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__5__Impl
+ rule__ContinuationTransition__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getToAssignment_5()); }
+(rule__ContinuationTransition__ToAssignment_5)
+{ after(grammarAccess.getContinuationTransitionAccess().getToAssignment_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__6__Impl
+ rule__ContinuationTransition__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+
+ '{'
+
+{ after(grammarAccess.getContinuationTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__7__Impl
+ rule__ContinuationTransition__Group__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getGroup_7()); }
+(rule__ContinuationTransition__Group_7__0)?
+{ after(grammarAccess.getContinuationTransitionAccess().getGroup_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group__8__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getRightCurlyBracketKeyword_8()); }
+
+ '}'
+
+{ after(grammarAccess.getContinuationTransitionAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ContinuationTransition__Group_7__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group_7__0__Impl
+ rule__ContinuationTransition__Group_7__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group_7__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getActionKeyword_7_0()); }
+
+ 'action'
+
+{ after(grammarAccess.getContinuationTransitionAccess().getActionKeyword_7_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ContinuationTransition__Group_7__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ContinuationTransition__Group_7__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__Group_7__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getActionAssignment_7_1()); }
+(rule__ContinuationTransition__ActionAssignment_7_1)
+{ after(grammarAccess.getContinuationTransitionAccess().getActionAssignment_7_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TriggeredTransition__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__0__Impl
+ rule__TriggeredTransition__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getTransitionKeyword_0()); }
+
+ 'Transition'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getTransitionKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__1__Impl
+ rule__TriggeredTransition__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getNameAssignment_1()); }
+(rule__TriggeredTransition__NameAssignment_1)?
+{ after(grammarAccess.getTriggeredTransitionAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__2__Impl
+ rule__TriggeredTransition__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__3__Impl
+ rule__TriggeredTransition__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getFromAssignment_3()); }
+(rule__TriggeredTransition__FromAssignment_3)
+{ after(grammarAccess.getTriggeredTransitionAccess().getFromAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__4__Impl
+ rule__TriggeredTransition__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+
+ '->'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__5__Impl
+ rule__TriggeredTransition__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getToAssignment_5()); }
+(rule__TriggeredTransition__ToAssignment_5)
+{ after(grammarAccess.getTriggeredTransitionAccess().getToAssignment_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__6__Impl
+ rule__TriggeredTransition__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+
+ '{'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__7__Impl
+ rule__TriggeredTransition__Group__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getTriggersKeyword_7()); }
+
+ 'triggers'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getTriggersKeyword_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__8__Impl
+ rule__TriggeredTransition__Group__9
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_8()); }
+
+ '{'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__9
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__9__Impl
+ rule__TriggeredTransition__Group__10
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__9__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_9()); }
+(rule__TriggeredTransition__TriggersAssignment_9)
+{ after(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_9()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__10
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__10__Impl
+ rule__TriggeredTransition__Group__11
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__10__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getGroup_10()); }
+(rule__TriggeredTransition__Group_10__0)*
+{ after(grammarAccess.getTriggeredTransitionAccess().getGroup_10()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__11
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__11__Impl
+ rule__TriggeredTransition__Group__12
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__11__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_11()); }
+
+ '}'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__12
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__12__Impl
+ rule__TriggeredTransition__Group__13
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__12__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getGroup_12()); }
+(rule__TriggeredTransition__Group_12__0)?
+{ after(grammarAccess.getTriggeredTransitionAccess().getGroup_12()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group__13
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group__13__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group__13__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_13()); }
+
+ '}'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TriggeredTransition__Group_10__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group_10__0__Impl
+ rule__TriggeredTransition__Group_10__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group_10__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getOrKeyword_10_0()); }
+
+ 'or'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getOrKeyword_10_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group_10__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group_10__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group_10__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_10_1()); }
+(rule__TriggeredTransition__TriggersAssignment_10_1)
+{ after(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_10_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TriggeredTransition__Group_12__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group_12__0__Impl
+ rule__TriggeredTransition__Group_12__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group_12__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getActionKeyword_12_0()); }
+
+ 'action'
+
+{ after(grammarAccess.getTriggeredTransitionAccess().getActionKeyword_12_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TriggeredTransition__Group_12__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TriggeredTransition__Group_12__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__Group_12__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getActionAssignment_12_1()); }
+(rule__TriggeredTransition__ActionAssignment_12_1)
+{ after(grammarAccess.getTriggeredTransitionAccess().getActionAssignment_12_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CPBranchTransition__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__0__Impl
+ rule__CPBranchTransition__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getTransitionKeyword_0()); }
+
+ 'Transition'
+
+{ after(grammarAccess.getCPBranchTransitionAccess().getTransitionKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__1__Impl
+ rule__CPBranchTransition__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getNameAssignment_1()); }
+(rule__CPBranchTransition__NameAssignment_1)?
+{ after(grammarAccess.getCPBranchTransitionAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__2__Impl
+ rule__CPBranchTransition__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getColonKeyword_2()); }
+
+ ':'
+
+{ after(grammarAccess.getCPBranchTransitionAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__3__Impl
+ rule__CPBranchTransition__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getFromAssignment_3()); }
+(rule__CPBranchTransition__FromAssignment_3)
+{ after(grammarAccess.getCPBranchTransitionAccess().getFromAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__4__Impl
+ rule__CPBranchTransition__Group__5
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+
+ '->'
+
+{ after(grammarAccess.getCPBranchTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__5__Impl
+ rule__CPBranchTransition__Group__6
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__5__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getToAssignment_5()); }
+(rule__CPBranchTransition__ToAssignment_5)
+{ after(grammarAccess.getCPBranchTransitionAccess().getToAssignment_5()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__6__Impl
+ rule__CPBranchTransition__Group__7
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__6__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+
+ '{'
+
+{ after(grammarAccess.getCPBranchTransitionAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__7__Impl
+ rule__CPBranchTransition__Group__8
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__7__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getCondKeyword_7()); }
+
+ 'cond'
+
+{ after(grammarAccess.getCPBranchTransitionAccess().getCondKeyword_7()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__8__Impl
+ rule__CPBranchTransition__Group__9
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__8__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getConditionAssignment_8()); }
+(rule__CPBranchTransition__ConditionAssignment_8)
+{ after(grammarAccess.getCPBranchTransitionAccess().getConditionAssignment_8()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__9
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__9__Impl
+ rule__CPBranchTransition__Group__10
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__9__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getGroup_9()); }
+(rule__CPBranchTransition__Group_9__0)?
+{ after(grammarAccess.getCPBranchTransitionAccess().getGroup_9()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group__10
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group__10__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group__10__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getRightCurlyBracketKeyword_10()); }
+
+ '}'
+
+{ after(grammarAccess.getCPBranchTransitionAccess().getRightCurlyBracketKeyword_10()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CPBranchTransition__Group_9__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group_9__0__Impl
+ rule__CPBranchTransition__Group_9__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group_9__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getActionKeyword_9_0()); }
+
+ 'action'
+
+{ after(grammarAccess.getCPBranchTransitionAccess().getActionKeyword_9_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CPBranchTransition__Group_9__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CPBranchTransition__Group_9__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__Group_9__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getActionAssignment_9_1()); }
+(rule__CPBranchTransition__ActionAssignment_9_1)
+{ after(grammarAccess.getCPBranchTransitionAccess().getActionAssignment_9_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TrPointTerminal__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TrPointTerminal__Group__0__Impl
+ rule__TrPointTerminal__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TrPointTerminal__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTrPointTerminalAccess().getMyKeyword_0()); }
+
+ 'my'
+
+{ after(grammarAccess.getTrPointTerminalAccess().getMyKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__TrPointTerminal__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__TrPointTerminal__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TrPointTerminal__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTrPointTerminalAccess().getTrPointAssignment_1()); }
+(rule__TrPointTerminal__TrPointAssignment_1)
+{ after(grammarAccess.getTrPointTerminalAccess().getTrPointAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SubStateTrPointTerminal__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubStateTrPointTerminal__Group__0__Impl
+ rule__SubStateTrPointTerminal__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubStateTrPointTerminal__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointAssignment_0()); }
+(rule__SubStateTrPointTerminal__TrPointAssignment_0)
+{ after(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubStateTrPointTerminal__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubStateTrPointTerminal__Group__1__Impl
+ rule__SubStateTrPointTerminal__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubStateTrPointTerminal__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getOfKeyword_1()); }
+
+ 'of'
+
+{ after(grammarAccess.getSubStateTrPointTerminalAccess().getOfKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__SubStateTrPointTerminal__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__SubStateTrPointTerminal__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubStateTrPointTerminal__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getStateAssignment_2()); }
+(rule__SubStateTrPointTerminal__StateAssignment_2)
+{ after(grammarAccess.getSubStateTrPointTerminalAccess().getStateAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChoicepointTerminal__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ChoicepointTerminal__Group__0__Impl
+ rule__ChoicepointTerminal__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ChoicepointTerminal__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getChoicepointTerminalAccess().getCpKeyword_0()); }
+
+ 'cp'
+
+{ after(grammarAccess.getChoicepointTerminalAccess().getCpKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ChoicepointTerminal__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ChoicepointTerminal__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ChoicepointTerminal__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getChoicepointTerminalAccess().getCpAssignment_1()); }
+(rule__ChoicepointTerminal__CpAssignment_1)
+{ after(grammarAccess.getChoicepointTerminalAccess().getCpAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Trigger__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Trigger__Group__0__Impl
+ rule__Trigger__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getLessThanSignKeyword_0()); }
+
+ '<'
+
+{ after(grammarAccess.getTriggerAccess().getLessThanSignKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Trigger__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Trigger__Group__1__Impl
+ rule__Trigger__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_1()); }
+(rule__Trigger__MsgFromIfPairsAssignment_1)
+{ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Trigger__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Trigger__Group__2__Impl
+ rule__Trigger__Group__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getGroup_2()); }
+(rule__Trigger__Group_2__0)*
+{ after(grammarAccess.getTriggerAccess().getGroup_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Trigger__Group__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Trigger__Group__3__Impl
+ rule__Trigger__Group__4
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__Group__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getGuardAssignment_3()); }
+(rule__Trigger__GuardAssignment_3)?
+{ after(grammarAccess.getTriggerAccess().getGuardAssignment_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Trigger__Group__4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Trigger__Group__4__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__Group__4__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getGreaterThanSignKeyword_4()); }
+
+ '>'
+
+{ after(grammarAccess.getTriggerAccess().getGreaterThanSignKeyword_4()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Trigger__Group_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Trigger__Group_2__0__Impl
+ rule__Trigger__Group_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__Group_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getVerticalLineKeyword_2_0()); }
+
+ '|'
+
+{ after(grammarAccess.getTriggerAccess().getVerticalLineKeyword_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Trigger__Group_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Trigger__Group_2__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__Group_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_2_1()); }
+(rule__Trigger__MsgFromIfPairsAssignment_2_1)
+{ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MessageFromIf__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__MessageFromIf__Group__0__Impl
+ rule__MessageFromIf__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageFromIf__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageFromIfAccess().getMessageAssignment_0()); }
+(rule__MessageFromIf__MessageAssignment_0)
+{ after(grammarAccess.getMessageFromIfAccess().getMessageAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__MessageFromIf__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__MessageFromIf__Group__1__Impl
+ rule__MessageFromIf__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageFromIf__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageFromIfAccess().getColonKeyword_1()); }
+
+ ':'
+
+{ after(grammarAccess.getMessageFromIfAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__MessageFromIf__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__MessageFromIf__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageFromIf__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageFromIfAccess().getFromAssignment_2()); }
+(rule__MessageFromIf__FromAssignment_2)
+{ after(grammarAccess.getMessageFromIfAccess().getFromAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Guard__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Guard__Group__0__Impl
+ rule__Guard__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Guard__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getGuardAccess().getGuardKeyword_0()); }
+
+ 'guard'
+
+{ after(grammarAccess.getGuardAccess().getGuardKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Guard__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Guard__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Guard__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getGuardAccess().getGuardAssignment_1()); }
+(rule__Guard__GuardAssignment_1)
+{ after(grammarAccess.getGuardAccess().getGuardAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Import__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Import__Group__0__Impl
+ rule__Import__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Import__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportKeyword_0()); }
+
+ 'import'
+
+{ after(grammarAccess.getImportAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Import__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Import__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+(rule__Import__ImportedNamespaceAssignment_1)
+{ after(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ImportedFQN__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ImportedFQN__Group__0__Impl
+ rule__ImportedFQN__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ImportedFQN__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getImportedFQNAccess().getFQNParserRuleCall_0()); }
+ ruleFQN
+{ after(grammarAccess.getImportedFQNAccess().getFQNParserRuleCall_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ImportedFQN__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ImportedFQN__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ImportedFQN__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getImportedFQNAccess().getGroup_1()); }
+(rule__ImportedFQN__Group_1__0)?
+{ after(grammarAccess.getImportedFQNAccess().getGroup_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ImportedFQN__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ImportedFQN__Group_1__0__Impl
+ rule__ImportedFQN__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ImportedFQN__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getImportedFQNAccess().getFullStopKeyword_1_0()); }
+
+ '.'
+
+{ after(grammarAccess.getImportedFQNAccess().getFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ImportedFQN__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ImportedFQN__Group_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ImportedFQN__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getImportedFQNAccess().getAsteriskKeyword_1_1()); }
+
+ '*'
+
+{ after(grammarAccess.getImportedFQNAccess().getAsteriskKeyword_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FQN__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FQN__Group__0__Impl
+ rule__FQN__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FQN__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0()); }
+ RULE_ID
+{ after(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__FQN__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FQN__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FQN__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFQNAccess().getGroup_1()); }
+(rule__FQN__Group_1__0)*
+{ after(grammarAccess.getFQNAccess().getGroup_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FQN__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FQN__Group_1__0__Impl
+ rule__FQN__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FQN__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFQNAccess().getFullStopKeyword_1_0()); }
+
+ '.'
+
+{ after(grammarAccess.getFQNAccess().getFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__FQN__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FQN__Group_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FQN__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1()); }
+ RULE_ID
+{ after(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__RoomModel__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0()); }
+ ruleFQN{ after(grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__ImportsAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getImportsImportParserRuleCall_3_0()); }
+ ruleImport{ after(grammarAccess.getRoomModelAccess().getImportsImportParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__DataClassesAssignment_4_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getDataClassesDataClassParserRuleCall_4_0_0()); }
+ ruleDataClass{ after(grammarAccess.getRoomModelAccess().getDataClassesDataClassParserRuleCall_4_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__ProtocolClassesAssignment_4_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getProtocolClassesProtocolClassParserRuleCall_4_1_0()); }
+ ruleProtocolClass{ after(grammarAccess.getRoomModelAccess().getProtocolClassesProtocolClassParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__ActorClassesAssignment_4_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getActorClassesActorClassParserRuleCall_4_2_0()); }
+ ruleActorClass{ after(grammarAccess.getRoomModelAccess().getActorClassesActorClassParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__SubSystemClassesAssignment_4_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getSubSystemClassesSubSystemClassParserRuleCall_4_3_0()); }
+ ruleSubSystemClass{ after(grammarAccess.getRoomModelAccess().getSubSystemClassesSubSystemClassParserRuleCall_4_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RoomModel__SystemsAssignment_4_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRoomModelAccess().getSystemsLogicalSystemParserRuleCall_4_4_0()); }
+ ruleLogicalSystem{ after(grammarAccess.getRoomModelAccess().getSystemsLogicalSystemParserRuleCall_4_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TypedID__NameAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0()); }
+ RULE_ID{ after(grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TypedID__TypeAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypedIDAccess().getTypeTypeParserRuleCall_2_0()); }
+ ruleType{ after(grammarAccess.getTypedIDAccess().getTypeTypeParserRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeTypedID__NameAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0()); }
+ RULE_ID{ after(grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeTypedID__TypeAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypedIDAccess().getTypeFreeTypeParserRuleCall_2_0()); }
+ ruleFreeType{ after(grammarAccess.getFreeTypedIDAccess().getTypeFreeTypeParserRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Type__PrimAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0()); }
+ rulePrimitiveType{ after(grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Type__TypeAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0()); }
+(
+{ before(grammarAccess.getTypeAccess().getTypeDataClassFQNParserRuleCall_1_0_1()); }
+ ruleFQN{ after(grammarAccess.getTypeAccess().getTypeDataClassFQNParserRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeType__PrimAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0()); }
+ rulePrimitiveType{ after(grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FreeType__TypeAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__BaseAssignment_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0()); }
+(
+{ before(grammarAccess.getDataClassAccess().getBaseDataClassFQNParserRuleCall_2_1_0_1()); }
+ ruleFQN{ after(grammarAccess.getDataClassAccess().getBaseDataClassFQNParserRuleCall_2_1_0_1()); }
+)
+{ after(grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__ImportsAssignment_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getImportsImportParserRuleCall_4_0()); }
+ ruleImport{ after(grammarAccess.getDataClassAccess().getImportsImportParserRuleCall_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__AttributesAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getAttributesAttributeParserRuleCall_5_0()); }
+ ruleAttribute{ after(grammarAccess.getDataClassAccess().getAttributesAttributeParserRuleCall_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DataClass__OperationsAssignment_6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDataClassAccess().getOperationsOperationParserRuleCall_6_0()); }
+ ruleOperation{ after(grammarAccess.getDataClassAccess().getOperationsOperationParserRuleCall_6_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__SizeAssignment_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0()); }
+ RULE_INT{ after(grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Attribute__TypeAssignment_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAttributeAccess().getTypeTypeParserRuleCall_4_0()); }
+ ruleType{ after(grammarAccess.getAttributeAccess().getTypeTypeParserRuleCall_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__ArgumentsAssignment_3_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_0_0()); }
+ ruleFreeTypedID{ after(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__ArgumentsAssignment_3_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_1_1_0()); }
+ ruleFreeTypedID{ after(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__ReturntypeAssignment_5_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getReturntypeFreeTypeParserRuleCall_5_1_0()); }
+ ruleFreeType{ after(grammarAccess.getOperationAccess().getReturntypeFreeTypeParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Operation__DetailCodeAssignment_6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getOperationAccess().getDetailCodeDetailCodeParserRuleCall_6_0()); }
+ ruleDetailCode{ after(grammarAccess.getOperationAccess().getDetailCodeDetailCodeParserRuleCall_6_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__BaseAssignment_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0()); }
+(
+{ before(grammarAccess.getProtocolClassAccess().getBaseProtocolClassFQNParserRuleCall_2_1_0_1()); }
+ ruleFQN{ after(grammarAccess.getProtocolClassAccess().getBaseProtocolClassFQNParserRuleCall_2_1_0_1()); }
+)
+{ after(grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__UserCode1Assignment_4_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getUserCode1DetailCodeParserRuleCall_4_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getProtocolClassAccess().getUserCode1DetailCodeParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__UserCode2Assignment_5_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getUserCode2DetailCodeParserRuleCall_5_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getProtocolClassAccess().getUserCode2DetailCodeParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__IncomingMessagesAssignment_8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getIncomingMessagesMessageParserRuleCall_8_0()); }
+ ruleMessage{ after(grammarAccess.getProtocolClassAccess().getIncomingMessagesMessageParserRuleCall_8_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__OutgoingMessagesAssignment_12
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getOutgoingMessagesMessageParserRuleCall_12_0()); }
+ ruleMessage{ after(grammarAccess.getProtocolClassAccess().getOutgoingMessagesMessageParserRuleCall_12_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__RegularAssignment_14_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getRegularPortClassParserRuleCall_14_2_0()); }
+ rulePortClass{ after(grammarAccess.getProtocolClassAccess().getRegularPortClassParserRuleCall_14_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__ConjugateAssignment_15_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getConjugatePortClassParserRuleCall_15_2_0()); }
+ rulePortClass{ after(grammarAccess.getProtocolClassAccess().getConjugatePortClassParserRuleCall_15_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolClass__SemanticsAssignment_16
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolClassAccess().getSemanticsProtocolSemanticsParserRuleCall_16_0()); }
+ ruleProtocolSemantics{ after(grammarAccess.getProtocolClassAccess().getSemanticsProtocolSemanticsParserRuleCall_16_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__ArgumentsAssignment_3_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_0_0()); }
+ ruleTypedID{ after(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Message__ArgumentsAssignment_3_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_1_1_0()); }
+ ruleTypedID{ after(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__UserCodeAssignment_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getUserCodeDetailCodeParserRuleCall_1_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getPortClassAccess().getUserCodeDetailCodeParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__AttributesAssignment_2_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getAttributesAttributeParserRuleCall_2_0_0()); }
+ ruleAttribute{ after(grammarAccess.getPortClassAccess().getAttributesAttributeParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__OperationsAssignment_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getOperationsOperationParserRuleCall_2_1_0()); }
+ ruleOperation{ after(grammarAccess.getPortClassAccess().getOperationsOperationParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PortClass__MsgHandlersAssignment_2_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortClassAccess().getMsgHandlersMessageHandlerParserRuleCall_2_2_0()); }
+ ruleMessageHandler{ after(grammarAccess.getPortClassAccess().getMsgHandlersMessageHandlerParserRuleCall_2_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageHandler__MsgAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0()); }
+(
+{ before(grammarAccess.getMessageHandlerAccess().getMsgMessageIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getMessageHandlerAccess().getMsgMessageIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageHandler__DetailCodeAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageHandlerAccess().getDetailCodeDetailCodeParserRuleCall_2_0()); }
+ ruleDetailCode{ after(grammarAccess.getMessageHandlerAccess().getDetailCodeDetailCodeParserRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ProtocolSemantics__RulesAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getProtocolSemanticsAccess().getRulesSemanticsRuleParserRuleCall_2_0()); }
+ ruleSemanticsRule{ after(grammarAccess.getProtocolSemanticsAccess().getRulesSemanticsRuleParserRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__MsgAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0()); }
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getSemanticsInRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsInRule__FollowUpsAssignment_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsInRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0()); }
+ ruleSemanticsRule{ after(grammarAccess.getSemanticsInRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__MsgAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0()); }
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SemanticsOutRule__FollowUpsAssignment_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0()); }
+ ruleSemanticsRule{ after(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__AbstractAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0()); }
+(
+{ before(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0()); }
+
+ 'abstract'
+
+{ after(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__NameAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0()); }
+ RULE_ID{ after(grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__BaseAssignment_3_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0()); }
+(
+{ before(grammarAccess.getActorClassAccess().getBaseActorClassFQNParserRuleCall_3_1_0_1()); }
+ ruleFQN{ after(grammarAccess.getActorClassAccess().getBaseActorClassFQNParserRuleCall_3_1_0_1()); }
+)
+{ after(grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__IfPortsAssignment_5_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getIfPortsPortParserRuleCall_5_2_0()); }
+ rulePort{ after(grammarAccess.getActorClassAccess().getIfPortsPortParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__IfSPPsAssignment_5_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getIfSPPsSPPRefParserRuleCall_5_3_0()); }
+ ruleSPPRef{ after(grammarAccess.getActorClassAccess().getIfSPPsSPPRefParserRuleCall_5_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__UserCode1Assignment_6_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getUserCode1DetailCodeParserRuleCall_6_2_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getActorClassAccess().getUserCode1DetailCodeParserRuleCall_6_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__UserCode2Assignment_6_3_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getUserCode2DetailCodeParserRuleCall_6_3_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getActorClassAccess().getUserCode2DetailCodeParserRuleCall_6_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__IntPortsAssignment_6_4_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getIntPortsPortParserRuleCall_6_4_0_0()); }
+ rulePort{ after(grammarAccess.getActorClassAccess().getIntPortsPortParserRuleCall_6_4_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__ExtPortsAssignment_6_4_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getExtPortsExternalPortParserRuleCall_6_4_1_0()); }
+ ruleExternalPort{ after(grammarAccess.getActorClassAccess().getExtPortsExternalPortParserRuleCall_6_4_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__ServiceImplementationsAssignment_6_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getServiceImplementationsServiceImplementationParserRuleCall_6_5_0()); }
+ ruleServiceImplementation{ after(grammarAccess.getActorClassAccess().getServiceImplementationsServiceImplementationParserRuleCall_6_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__StrSAPsAssignment_6_6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getStrSAPsSAPRefParserRuleCall_6_6_0()); }
+ ruleSAPRef{ after(grammarAccess.getActorClassAccess().getStrSAPsSAPRefParserRuleCall_6_6_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__AttributesAssignment_6_7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getAttributesAttributeParserRuleCall_6_7_0()); }
+ ruleAttribute{ after(grammarAccess.getActorClassAccess().getAttributesAttributeParserRuleCall_6_7_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__ActorRefsAssignment_6_8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getActorRefsActorRefParserRuleCall_6_8_0()); }
+ ruleActorRef{ after(grammarAccess.getActorClassAccess().getActorRefsActorRefParserRuleCall_6_8_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__BindingsAssignment_6_9
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getBindingsBindingParserRuleCall_6_9_0()); }
+ ruleBinding{ after(grammarAccess.getActorClassAccess().getBindingsBindingParserRuleCall_6_9_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__ConnectionsAssignment_6_10
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getConnectionsLayerConnectionParserRuleCall_6_10_0()); }
+ ruleLayerConnection{ after(grammarAccess.getActorClassAccess().getConnectionsLayerConnectionParserRuleCall_6_10_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__OperationsAssignment_7_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getOperationsOperationParserRuleCall_7_2_0()); }
+ ruleOperation{ after(grammarAccess.getActorClassAccess().getOperationsOperationParserRuleCall_7_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorClass__StateMachineAssignment_7_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorClassAccess().getStateMachineStateMachineParserRuleCall_7_3_0()); }
+ ruleStateMachine{ after(grammarAccess.getActorClassAccess().getStateMachineStateMachineParserRuleCall_7_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__ConjugatedAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0()); }
+(
+{ before(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0()); }
+
+ 'conjugated'
+
+{ after(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__NameAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0()); }
+ RULE_ID{ after(grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__MultiplicityAssignment_3_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0()); }
+ RULE_INT{ after(grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Port__ProtocolAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0()); }
+(
+{ before(grammarAccess.getPortAccess().getProtocolProtocolClassFQNParserRuleCall_5_0_1()); }
+ ruleFQN{ after(grammarAccess.getPortAccess().getProtocolProtocolClassFQNParserRuleCall_5_0_1()); }
+)
+{ after(grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ExternalPort__IfportAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0()); }
+(
+{ before(grammarAccess.getExternalPortAccess().getIfportPortIDTerminalRuleCall_2_0_1()); }
+ RULE_ID{ after(grammarAccess.getExternalPortAccess().getIfportPortIDTerminalRuleCall_2_0_1()); }
+)
+{ after(grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SAPRef__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SAPRef__ProtocolAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0()); }
+(
+{ before(grammarAccess.getSAPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1()); }
+ ruleFQN{ after(grammarAccess.getSAPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPRef__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPRef__ProtocolAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0()); }
+(
+{ before(grammarAccess.getSPPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1()); }
+ ruleFQN{ after(grammarAccess.getSPPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ServiceImplementation__SppAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0()); }
+(
+{ before(grammarAccess.getServiceImplementationAccess().getSppSPPRefIDTerminalRuleCall_2_0_1()); }
+ RULE_ID{ after(grammarAccess.getServiceImplementationAccess().getSppSPPRefIDTerminalRuleCall_2_0_1()); }
+)
+{ after(grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__SubSystemsAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getSubSystemsSubSystemRefParserRuleCall_3_0()); }
+ ruleSubSystemRef{ after(grammarAccess.getLogicalSystemAccess().getSubSystemsSubSystemRefParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__BindingsAssignment_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getBindingsBindingParserRuleCall_4_0()); }
+ ruleBinding{ after(grammarAccess.getLogicalSystemAccess().getBindingsBindingParserRuleCall_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalSystem__ConnectionsAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalSystemAccess().getConnectionsLayerConnectionParserRuleCall_5_0()); }
+ ruleLayerConnection{ after(grammarAccess.getLogicalSystemAccess().getConnectionsLayerConnectionParserRuleCall_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemRef__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemRef__TypeAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0()); }
+(
+{ before(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassFQNParserRuleCall_3_0_1()); }
+ ruleFQN{ after(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassFQNParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__RelayPortsAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getRelayPortsPortParserRuleCall_3_0()); }
+ rulePort{ after(grammarAccess.getSubSystemClassAccess().getRelayPortsPortParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__IfSPPsAssignment_4
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getIfSPPsSPPRefParserRuleCall_4_0()); }
+ ruleSPPRef{ after(grammarAccess.getSubSystemClassAccess().getIfSPPsSPPRefParserRuleCall_4_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__ActorRefsAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getActorRefsActorRefParserRuleCall_5_0()); }
+ ruleActorRef{ after(grammarAccess.getSubSystemClassAccess().getActorRefsActorRefParserRuleCall_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__BindingsAssignment_6
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getBindingsBindingParserRuleCall_6_0()); }
+ ruleBinding{ after(grammarAccess.getSubSystemClassAccess().getBindingsBindingParserRuleCall_6_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__ConnectionsAssignment_7
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getConnectionsLayerConnectionParserRuleCall_7_0()); }
+ ruleLayerConnection{ after(grammarAccess.getSubSystemClassAccess().getConnectionsLayerConnectionParserRuleCall_7_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubSystemClass__ThreadsAssignment_8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubSystemClassAccess().getThreadsLogicalThreadParserRuleCall_8_0()); }
+ ruleLogicalThread{ after(grammarAccess.getSubSystemClassAccess().getThreadsLogicalThreadParserRuleCall_8_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__InstancesAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_3_0()); }
+ ruleActorInstancePath{ after(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LogicalThread__InstancesAssignment_4_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_4_1_0()); }
+ ruleActorInstancePath{ after(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorInstancePath__SegmentsAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0()); }
+ RULE_ID{ after(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorInstancePath__SegmentsAssignment_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0()); }
+ RULE_ID{ after(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Binding__Endpoint1Assignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingAccess().getEndpoint1BindingEndPointParserRuleCall_1_0()); }
+ ruleBindingEndPoint{ after(grammarAccess.getBindingAccess().getEndpoint1BindingEndPointParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Binding__Endpoint2Assignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingAccess().getEndpoint2BindingEndPointParserRuleCall_3_0()); }
+ ruleBindingEndPoint{ after(grammarAccess.getBindingAccess().getEndpoint2BindingEndPointParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BindingEndPoint__ActorRefAssignment_0_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0()); }
+(
+{ before(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefIDTerminalRuleCall_0_0_0_1()); }
+ RULE_ID{ after(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefIDTerminalRuleCall_0_0_0_1()); }
+)
+{ after(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BindingEndPoint__PortAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0()); }
+(
+{ before(grammarAccess.getBindingEndPointAccess().getPortPortIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getBindingEndPointAccess().getPortPortIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LayerConnection__FromAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLayerConnectionAccess().getFromSAPointParserRuleCall_1_0()); }
+ ruleSAPoint{ after(grammarAccess.getLayerConnectionAccess().getFromSAPointParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__LayerConnection__ToAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getLayerConnectionAccess().getToSPPointParserRuleCall_3_0()); }
+ ruleSPPoint{ after(grammarAccess.getLayerConnectionAccess().getToSPPointParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefSAPoint__RefAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0()); }
+(
+{ before(grammarAccess.getRefSAPointAccess().getRefActorContainerRefIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getRefSAPointAccess().getRefActorContainerRefIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RelaySAPoint__RelayAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0()); }
+(
+{ before(grammarAccess.getRelaySAPointAccess().getRelaySPPRefIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getRelaySAPointAccess().getRelaySPPRefIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPoint__RefAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0()); }
+(
+{ before(grammarAccess.getSPPointAccess().getRefActorContainerRefIDTerminalRuleCall_0_0_1()); }
+ RULE_ID{ after(grammarAccess.getSPPointAccess().getRefActorContainerRefIDTerminalRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SPPoint__ServiceAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0()); }
+(
+{ before(grammarAccess.getSPPointAccess().getServiceSPPRefIDTerminalRuleCall_2_0_1()); }
+ RULE_ID{ after(grammarAccess.getSPPointAccess().getServiceSPPRefIDTerminalRuleCall_2_0_1()); }
+)
+{ after(grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorRef__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ActorRef__TypeAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0()); }
+(
+{ before(grammarAccess.getActorRefAccess().getTypeActorClassFQNParserRuleCall_3_0_1()); }
+ ruleFQN{ after(grammarAccess.getActorRefAccess().getTypeActorClassFQNParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__StatesAssignment_1_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphAccess().getStatesStateParserRuleCall_1_0_0()); }
+ ruleState{ after(grammarAccess.getStateGraphAccess().getStatesStateParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__TrPointsAssignment_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphAccess().getTrPointsTrPointParserRuleCall_1_1_0()); }
+ ruleTrPoint{ after(grammarAccess.getStateGraphAccess().getTrPointsTrPointParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__ChPointsAssignment_1_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphAccess().getChPointsChoicePointParserRuleCall_1_2_0()); }
+ ruleChoicePoint{ after(grammarAccess.getStateGraphAccess().getChPointsChoicePointParserRuleCall_1_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateGraph__TransitionsAssignment_1_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateGraphAccess().getTransitionsTransitionParserRuleCall_1_3_0()); }
+ ruleTransition{ after(grammarAccess.getStateGraphAccess().getTransitionsTransitionParserRuleCall_1_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__StatesAssignment_2_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getStatesStateParserRuleCall_2_0_0()); }
+ ruleState{ after(grammarAccess.getStateMachineAccess().getStatesStateParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__TrPointsAssignment_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getTrPointsTrPointParserRuleCall_2_1_0()); }
+ ruleTrPoint{ after(grammarAccess.getStateMachineAccess().getTrPointsTrPointParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__ChPointsAssignment_2_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getChPointsChoicePointParserRuleCall_2_2_0()); }
+ ruleChoicePoint{ after(grammarAccess.getStateMachineAccess().getChPointsChoicePointParserRuleCall_2_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateMachine__TransitionsAssignment_2_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_2_3_0()); }
+ ruleTransition{ after(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_2_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__EntryCodeAssignment_3_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getBaseStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__ExitCodeAssignment_4_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getBaseStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__BaseState__SubgraphAssignment_5_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBaseStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0()); }
+ ruleStateGraph{ after(grammarAccess.getBaseStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__BaseAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0()); }
+(
+{ before(grammarAccess.getRefinedStateAccess().getBaseBaseStateFQNParserRuleCall_1_0_1()); }
+ ruleFQN{ after(grammarAccess.getRefinedStateAccess().getBaseBaseStateFQNParserRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__EntryCodeAssignment_3_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getRefinedStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__ExitCodeAssignment_4_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getRefinedStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__RefinedState__SubgraphAssignment_5_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getRefinedStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0()); }
+ ruleStateGraph{ after(grammarAccess.getRefinedStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DetailCode__CommandsAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0()); }
+ RULE_STRING{ after(grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TransitionPoint__HandlerAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0()); }
+(
+{ before(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0()); }
+
+ 'handler'
+
+{ after(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TransitionPoint__NameAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0()); }
+ RULE_ID{ after(grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__EntryPoint__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ExitPoint__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ChoicePoint__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__ToAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+ ruleTransitionTerminal{ after(grammarAccess.getInitialTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__InitialTransition__ActionAssignment_7_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getInitialTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getInitialTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__FromAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0()); }
+ ruleTransitionTerminal{ after(grammarAccess.getContinuationTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__ToAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+ ruleTransitionTerminal{ after(grammarAccess.getContinuationTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ContinuationTransition__ActionAssignment_7_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getContinuationTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getContinuationTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__FromAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0()); }
+ ruleTransitionTerminal{ after(grammarAccess.getTriggeredTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__ToAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+ ruleTransitionTerminal{ after(grammarAccess.getTriggeredTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__TriggersAssignment_9
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_9_0()); }
+ ruleTrigger{ after(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_9_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__TriggersAssignment_10_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_10_1_0()); }
+ ruleTrigger{ after(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_10_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TriggeredTransition__ActionAssignment_12_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggeredTransitionAccess().getActionDetailCodeParserRuleCall_12_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getTriggeredTransitionAccess().getActionDetailCodeParserRuleCall_12_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__NameAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+ RULE_ID{ after(grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__FromAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0()); }
+ ruleTransitionTerminal{ after(grammarAccess.getCPBranchTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__ToAssignment_5
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+ ruleTransitionTerminal{ after(grammarAccess.getCPBranchTransitionAccess().getToTransitionTerminalParserRuleCall_5_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__ConditionAssignment_8
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getConditionDetailCodeParserRuleCall_8_0()); }
+ ruleDetailCode{ after(grammarAccess.getCPBranchTransitionAccess().getConditionDetailCodeParserRuleCall_8_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CPBranchTransition__ActionAssignment_9_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCPBranchTransitionAccess().getActionDetailCodeParserRuleCall_9_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getCPBranchTransitionAccess().getActionDetailCodeParserRuleCall_9_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__StateTerminal__StateAssignment
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0()); }
+(
+{ before(grammarAccess.getStateTerminalAccess().getStateBaseStateIDTerminalRuleCall_0_1()); }
+ RULE_ID{ after(grammarAccess.getStateTerminalAccess().getStateBaseStateIDTerminalRuleCall_0_1()); }
+)
+{ after(grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__TrPointTerminal__TrPointAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0()); }
+(
+{ before(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubStateTrPointTerminal__TrPointAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0()); }
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_0_0_1()); }
+ RULE_ID{ after(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__SubStateTrPointTerminal__StateAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0()); }
+(
+{ before(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateIDTerminalRuleCall_2_0_1()); }
+ RULE_ID{ after(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateIDTerminalRuleCall_2_0_1()); }
+)
+{ after(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ChoicepointTerminal__CpAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0()); }
+(
+{ before(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointIDTerminalRuleCall_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointIDTerminalRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__MsgFromIfPairsAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_1_0()); }
+ ruleMessageFromIf{ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__MsgFromIfPairsAssignment_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0()); }
+ ruleMessageFromIf{ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Trigger__GuardAssignment_3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTriggerAccess().getGuardGuardParserRuleCall_3_0()); }
+ ruleGuard{ after(grammarAccess.getTriggerAccess().getGuardGuardParserRuleCall_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageFromIf__MessageAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0()); }
+(
+{ before(grammarAccess.getMessageFromIfAccess().getMessageMessageIDTerminalRuleCall_0_0_1()); }
+ RULE_ID{ after(grammarAccess.getMessageFromIfAccess().getMessageMessageIDTerminalRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__MessageFromIf__FromAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0()); }
+(
+{ before(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemIDTerminalRuleCall_2_0_1()); }
+ RULE_ID{ after(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemIDTerminalRuleCall_2_0_1()); }
+)
+{ after(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Guard__GuardAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getGuardAccess().getGuardDetailCodeParserRuleCall_1_0()); }
+ ruleDetailCode{ after(grammarAccess.getGuardAccess().getGuardDetailCodeParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Import__ImportedNamespaceAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0()); }
+ ruleImportedFQN{ after(grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.tokens b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.tokens
new file mode 100644
index 000000000..a518fa4d5
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.tokens
@@ -0,0 +1,96 @@
+RULE_ID=4
+RULE_STRING=6
+RULE_ANY_OTHER=10
+RULE_INT=5
+RULE_WS=9
+RULE_SL_COMMENT=8
+RULE_ML_COMMENT=7
+'semantics'=47
+'usercode1'=39
+'satisfied_by'=69
+'out'=50
+'ProtocolClass'=36
+'string'=21
+'SubSystemClass'=63
+'Message'=44
+'>'=92
+'int16'=13
+'Transition'=83
+'TransitionPoint'=79
+'SubSystemRef'=62
+'LayerConnection'=68
+'.'=65
+'regular'=41
+'import'=95
+'Structure'=53
+'SPP'=58
+'extends'=28
+'and'=67
+'Behavior'=54
+'action'=85
+'{'=24
+'StateMachine'=73
+'ExitPoint'=81
+'Operation'=32
+'void'=11
+'Interface'=52
+'ActorClass'=51
+'my'=89
+'ref'=70
+'('=33
+':'=26
+'guard'=94
+'exit'=76
+'ActorRef'=72
+'conjugated'=98
+'cp'=90
+'of'=60
+','=35
+'in'=48
+']'=31
+'incoming'=37
+'|'=93
+'State'=74
+'int8'=12
+'LogicalSystem'=61
+'LogicalThread'=64
+'DataClass'=27
+'conjugate'=43
+'usercode'=45
+'uint16'=16
+'float64'=19
+'RoomModel'=23
+'relay_sap'=71
+'Port'=55
+'uint32'=17
+'subgraph'=77
+')'=34
+'handle'=46
+'initial'=84
+'entry'=75
+'->'=49
+'Binding'=66
+'ServiceImplementation'=59
+'triggers'=86
+'char'=22
+'ChoicePoint'=82
+'}'=25
+'boolean'=20
+'SAP'=57
+'abstract'=97
+'usercode2'=40
+'EntryPoint'=80
+'int32'=14
+'uint8'=15
+'handler'=99
+'cond'=88
+'external'=56
+'<'=91
+'outgoing'=38
+'float32'=18
+'*'=96
+'or'=87
+'RefinedState'=78
+'['=30
+'PortClass'=42
+'Attribute'=29
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomLexer.java b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomLexer.java
new file mode 100644
index 000000000..da5522c19
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomLexer.java
@@ -0,0 +1,6574 @@
+package org.eclipse.etrice.core.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRoomLexer extends Lexer {
+ public static final int RULE_ID=4;
+ public static final int RULE_ANY_OTHER=10;
+ public static final int T29=29;
+ public static final int T28=28;
+ public static final int T27=27;
+ public static final int T26=26;
+ public static final int T25=25;
+ public static final int T24=24;
+ public static final int EOF=-1;
+ public static final int T23=23;
+ public static final int T22=22;
+ public static final int T21=21;
+ public static final int T20=20;
+ public static final int T38=38;
+ public static final int T37=37;
+ public static final int T39=39;
+ public static final int T34=34;
+ public static final int T33=33;
+ public static final int T36=36;
+ public static final int T35=35;
+ public static final int T30=30;
+ public static final int T32=32;
+ public static final int T31=31;
+ public static final int T49=49;
+ public static final int T48=48;
+ public static final int T43=43;
+ public static final int T42=42;
+ public static final int T41=41;
+ public static final int T40=40;
+ public static final int T47=47;
+ public static final int T46=46;
+ public static final int RULE_ML_COMMENT=7;
+ public static final int T45=45;
+ public static final int T44=44;
+ public static final int RULE_STRING=6;
+ public static final int T50=50;
+ public static final int T59=59;
+ public static final int T52=52;
+ public static final int T51=51;
+ public static final int T54=54;
+ public static final int T53=53;
+ public static final int T56=56;
+ public static final int T55=55;
+ public static final int T58=58;
+ public static final int T57=57;
+ public static final int T75=75;
+ public static final int T76=76;
+ public static final int T73=73;
+ public static final int T74=74;
+ public static final int T79=79;
+ public static final int T77=77;
+ public static final int T78=78;
+ public static final int T72=72;
+ public static final int T71=71;
+ public static final int T70=70;
+ public static final int T62=62;
+ public static final int T63=63;
+ public static final int T64=64;
+ public static final int T65=65;
+ public static final int T66=66;
+ public static final int T67=67;
+ public static final int T68=68;
+ public static final int T69=69;
+ public static final int RULE_INT=5;
+ public static final int T61=61;
+ public static final int T60=60;
+ public static final int T99=99;
+ public static final int T97=97;
+ public static final int T98=98;
+ public static final int T95=95;
+ public static final int T96=96;
+ public static final int T94=94;
+ public static final int Tokens=100;
+ public static final int T93=93;
+ public static final int RULE_SL_COMMENT=8;
+ public static final int T92=92;
+ public static final int T91=91;
+ public static final int T90=90;
+ public static final int T88=88;
+ public static final int T89=89;
+ public static final int T84=84;
+ public static final int T85=85;
+ public static final int T86=86;
+ public static final int T87=87;
+ public static final int T11=11;
+ public static final int T12=12;
+ public static final int T13=13;
+ public static final int T14=14;
+ public static final int RULE_WS=9;
+ public static final int T15=15;
+ public static final int T81=81;
+ public static final int T16=16;
+ public static final int T80=80;
+ public static final int T17=17;
+ public static final int T83=83;
+ public static final int T18=18;
+ public static final int T82=82;
+ public static final int T19=19;
+ public InternalRoomLexer() {;}
+ public InternalRoomLexer(CharStream input) {
+ super(input);
+ }
+ public String getGrammarFileName() { return "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g"; }
+
+ // $ANTLR start T11
+ public final void mT11() throws RecognitionException {
+ try {
+ int _type = T11;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10:5: ( 'void' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10:7: 'void'
+ {
+ match("void");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T11
+
+ // $ANTLR start T12
+ public final void mT12() throws RecognitionException {
+ try {
+ int _type = T12;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11:5: ( 'int8' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11:7: 'int8'
+ {
+ match("int8");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T12
+
+ // $ANTLR start T13
+ public final void mT13() throws RecognitionException {
+ try {
+ int _type = T13;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12:5: ( 'int16' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12:7: 'int16'
+ {
+ match("int16");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T13
+
+ // $ANTLR start T14
+ public final void mT14() throws RecognitionException {
+ try {
+ int _type = T14;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13:5: ( 'int32' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13:7: 'int32'
+ {
+ match("int32");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T14
+
+ // $ANTLR start T15
+ public final void mT15() throws RecognitionException {
+ try {
+ int _type = T15;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14:5: ( 'uint8' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14:7: 'uint8'
+ {
+ match("uint8");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T15
+
+ // $ANTLR start T16
+ public final void mT16() throws RecognitionException {
+ try {
+ int _type = T16;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15:5: ( 'uint16' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15:7: 'uint16'
+ {
+ match("uint16");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T16
+
+ // $ANTLR start T17
+ public final void mT17() throws RecognitionException {
+ try {
+ int _type = T17;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16:5: ( 'uint32' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16:7: 'uint32'
+ {
+ match("uint32");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T17
+
+ // $ANTLR start T18
+ public final void mT18() throws RecognitionException {
+ try {
+ int _type = T18;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:17:5: ( 'float32' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:17:7: 'float32'
+ {
+ match("float32");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T18
+
+ // $ANTLR start T19
+ public final void mT19() throws RecognitionException {
+ try {
+ int _type = T19;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:18:5: ( 'float64' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:18:7: 'float64'
+ {
+ match("float64");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T19
+
+ // $ANTLR start T20
+ public final void mT20() throws RecognitionException {
+ try {
+ int _type = T20;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:19:5: ( 'boolean' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:19:7: 'boolean'
+ {
+ match("boolean");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T20
+
+ // $ANTLR start T21
+ public final void mT21() throws RecognitionException {
+ try {
+ int _type = T21;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:20:5: ( 'string' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:20:7: 'string'
+ {
+ match("string");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T21
+
+ // $ANTLR start T22
+ public final void mT22() throws RecognitionException {
+ try {
+ int _type = T22;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:21:5: ( 'char' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:21:7: 'char'
+ {
+ match("char");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T22
+
+ // $ANTLR start T23
+ public final void mT23() throws RecognitionException {
+ try {
+ int _type = T23;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:22:5: ( 'RoomModel' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:22:7: 'RoomModel'
+ {
+ match("RoomModel");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T23
+
+ // $ANTLR start T24
+ public final void mT24() throws RecognitionException {
+ try {
+ int _type = T24;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:23:5: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:23:7: '{'
+ {
+ match('{');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T24
+
+ // $ANTLR start T25
+ public final void mT25() throws RecognitionException {
+ try {
+ int _type = T25;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:24:5: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:24:7: '}'
+ {
+ match('}');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T25
+
+ // $ANTLR start T26
+ public final void mT26() throws RecognitionException {
+ try {
+ int _type = T26;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:25:5: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:25:7: ':'
+ {
+ match(':');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T26
+
+ // $ANTLR start T27
+ public final void mT27() throws RecognitionException {
+ try {
+ int _type = T27;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:26:5: ( 'DataClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:26:7: 'DataClass'
+ {
+ match("DataClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T27
+
+ // $ANTLR start T28
+ public final void mT28() throws RecognitionException {
+ try {
+ int _type = T28;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:27:5: ( 'extends' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:27:7: 'extends'
+ {
+ match("extends");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T28
+
+ // $ANTLR start T29
+ public final void mT29() throws RecognitionException {
+ try {
+ int _type = T29;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:28:5: ( 'Attribute' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:28:7: 'Attribute'
+ {
+ match("Attribute");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T29
+
+ // $ANTLR start T30
+ public final void mT30() throws RecognitionException {
+ try {
+ int _type = T30;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:29:5: ( '[' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:29:7: '['
+ {
+ match('[');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T30
+
+ // $ANTLR start T31
+ public final void mT31() throws RecognitionException {
+ try {
+ int _type = T31;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:30:5: ( ']' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:30:7: ']'
+ {
+ match(']');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T31
+
+ // $ANTLR start T32
+ public final void mT32() throws RecognitionException {
+ try {
+ int _type = T32;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:31:5: ( 'Operation' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:31:7: 'Operation'
+ {
+ match("Operation");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T32
+
+ // $ANTLR start T33
+ public final void mT33() throws RecognitionException {
+ try {
+ int _type = T33;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:32:5: ( '(' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:32:7: '('
+ {
+ match('(');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T33
+
+ // $ANTLR start T34
+ public final void mT34() throws RecognitionException {
+ try {
+ int _type = T34;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:33:5: ( ')' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:33:7: ')'
+ {
+ match(')');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T34
+
+ // $ANTLR start T35
+ public final void mT35() throws RecognitionException {
+ try {
+ int _type = T35;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:34:5: ( ',' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:34:7: ','
+ {
+ match(',');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T35
+
+ // $ANTLR start T36
+ public final void mT36() throws RecognitionException {
+ try {
+ int _type = T36;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:35:5: ( 'ProtocolClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:35:7: 'ProtocolClass'
+ {
+ match("ProtocolClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T36
+
+ // $ANTLR start T37
+ public final void mT37() throws RecognitionException {
+ try {
+ int _type = T37;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:36:5: ( 'incoming' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:36:7: 'incoming'
+ {
+ match("incoming");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T37
+
+ // $ANTLR start T38
+ public final void mT38() throws RecognitionException {
+ try {
+ int _type = T38;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:37:5: ( 'outgoing' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:37:7: 'outgoing'
+ {
+ match("outgoing");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T38
+
+ // $ANTLR start T39
+ public final void mT39() throws RecognitionException {
+ try {
+ int _type = T39;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:38:5: ( 'usercode1' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:38:7: 'usercode1'
+ {
+ match("usercode1");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T39
+
+ // $ANTLR start T40
+ public final void mT40() throws RecognitionException {
+ try {
+ int _type = T40;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:39:5: ( 'usercode2' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:39:7: 'usercode2'
+ {
+ match("usercode2");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T40
+
+ // $ANTLR start T41
+ public final void mT41() throws RecognitionException {
+ try {
+ int _type = T41;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:40:5: ( 'regular' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:40:7: 'regular'
+ {
+ match("regular");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T41
+
+ // $ANTLR start T42
+ public final void mT42() throws RecognitionException {
+ try {
+ int _type = T42;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:41:5: ( 'PortClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:41:7: 'PortClass'
+ {
+ match("PortClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T42
+
+ // $ANTLR start T43
+ public final void mT43() throws RecognitionException {
+ try {
+ int _type = T43;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:42:5: ( 'conjugate' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:42:7: 'conjugate'
+ {
+ match("conjugate");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T43
+
+ // $ANTLR start T44
+ public final void mT44() throws RecognitionException {
+ try {
+ int _type = T44;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:43:5: ( 'Message' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:43:7: 'Message'
+ {
+ match("Message");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T44
+
+ // $ANTLR start T45
+ public final void mT45() throws RecognitionException {
+ try {
+ int _type = T45;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:44:5: ( 'usercode' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:44:7: 'usercode'
+ {
+ match("usercode");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T45
+
+ // $ANTLR start T46
+ public final void mT46() throws RecognitionException {
+ try {
+ int _type = T46;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:45:5: ( 'handle' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:45:7: 'handle'
+ {
+ match("handle");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T46
+
+ // $ANTLR start T47
+ public final void mT47() throws RecognitionException {
+ try {
+ int _type = T47;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:46:5: ( 'semantics' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:46:7: 'semantics'
+ {
+ match("semantics");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T47
+
+ // $ANTLR start T48
+ public final void mT48() throws RecognitionException {
+ try {
+ int _type = T48;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:47:5: ( 'in' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:47:7: 'in'
+ {
+ match("in");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T48
+
+ // $ANTLR start T49
+ public final void mT49() throws RecognitionException {
+ try {
+ int _type = T49;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:48:5: ( '->' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:48:7: '->'
+ {
+ match("->");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T49
+
+ // $ANTLR start T50
+ public final void mT50() throws RecognitionException {
+ try {
+ int _type = T50;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:49:5: ( 'out' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:49:7: 'out'
+ {
+ match("out");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T50
+
+ // $ANTLR start T51
+ public final void mT51() throws RecognitionException {
+ try {
+ int _type = T51;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:50:5: ( 'ActorClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:50:7: 'ActorClass'
+ {
+ match("ActorClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T51
+
+ // $ANTLR start T52
+ public final void mT52() throws RecognitionException {
+ try {
+ int _type = T52;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:51:5: ( 'Interface' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:51:7: 'Interface'
+ {
+ match("Interface");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T52
+
+ // $ANTLR start T53
+ public final void mT53() throws RecognitionException {
+ try {
+ int _type = T53;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:52:5: ( 'Structure' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:52:7: 'Structure'
+ {
+ match("Structure");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T53
+
+ // $ANTLR start T54
+ public final void mT54() throws RecognitionException {
+ try {
+ int _type = T54;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:53:5: ( 'Behavior' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:53:7: 'Behavior'
+ {
+ match("Behavior");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T54
+
+ // $ANTLR start T55
+ public final void mT55() throws RecognitionException {
+ try {
+ int _type = T55;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:54:5: ( 'Port' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:54:7: 'Port'
+ {
+ match("Port");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T55
+
+ // $ANTLR start T56
+ public final void mT56() throws RecognitionException {
+ try {
+ int _type = T56;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:55:5: ( 'external' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:55:7: 'external'
+ {
+ match("external");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T56
+
+ // $ANTLR start T57
+ public final void mT57() throws RecognitionException {
+ try {
+ int _type = T57;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:56:5: ( 'SAP' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:56:7: 'SAP'
+ {
+ match("SAP");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T57
+
+ // $ANTLR start T58
+ public final void mT58() throws RecognitionException {
+ try {
+ int _type = T58;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:57:5: ( 'SPP' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:57:7: 'SPP'
+ {
+ match("SPP");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T58
+
+ // $ANTLR start T59
+ public final void mT59() throws RecognitionException {
+ try {
+ int _type = T59;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:58:5: ( 'ServiceImplementation' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:58:7: 'ServiceImplementation'
+ {
+ match("ServiceImplementation");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T59
+
+ // $ANTLR start T60
+ public final void mT60() throws RecognitionException {
+ try {
+ int _type = T60;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:59:5: ( 'of' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:59:7: 'of'
+ {
+ match("of");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T60
+
+ // $ANTLR start T61
+ public final void mT61() throws RecognitionException {
+ try {
+ int _type = T61;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:60:5: ( 'LogicalSystem' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:60:7: 'LogicalSystem'
+ {
+ match("LogicalSystem");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T61
+
+ // $ANTLR start T62
+ public final void mT62() throws RecognitionException {
+ try {
+ int _type = T62;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:61:5: ( 'SubSystemRef' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:61:7: 'SubSystemRef'
+ {
+ match("SubSystemRef");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T62
+
+ // $ANTLR start T63
+ public final void mT63() throws RecognitionException {
+ try {
+ int _type = T63;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:62:5: ( 'SubSystemClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:62:7: 'SubSystemClass'
+ {
+ match("SubSystemClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T63
+
+ // $ANTLR start T64
+ public final void mT64() throws RecognitionException {
+ try {
+ int _type = T64;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:63:5: ( 'LogicalThread' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:63:7: 'LogicalThread'
+ {
+ match("LogicalThread");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T64
+
+ // $ANTLR start T65
+ public final void mT65() throws RecognitionException {
+ try {
+ int _type = T65;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:64:5: ( '.' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:64:7: '.'
+ {
+ match('.');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T65
+
+ // $ANTLR start T66
+ public final void mT66() throws RecognitionException {
+ try {
+ int _type = T66;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:65:5: ( 'Binding' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:65:7: 'Binding'
+ {
+ match("Binding");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T66
+
+ // $ANTLR start T67
+ public final void mT67() throws RecognitionException {
+ try {
+ int _type = T67;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:66:5: ( 'and' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:66:7: 'and'
+ {
+ match("and");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T67
+
+ // $ANTLR start T68
+ public final void mT68() throws RecognitionException {
+ try {
+ int _type = T68;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:67:5: ( 'LayerConnection' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:67:7: 'LayerConnection'
+ {
+ match("LayerConnection");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T68
+
+ // $ANTLR start T69
+ public final void mT69() throws RecognitionException {
+ try {
+ int _type = T69;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:68:5: ( 'satisfied_by' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:68:7: 'satisfied_by'
+ {
+ match("satisfied_by");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T69
+
+ // $ANTLR start T70
+ public final void mT70() throws RecognitionException {
+ try {
+ int _type = T70;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:69:5: ( 'ref' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:69:7: 'ref'
+ {
+ match("ref");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T70
+
+ // $ANTLR start T71
+ public final void mT71() throws RecognitionException {
+ try {
+ int _type = T71;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:70:5: ( 'relay_sap' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:70:7: 'relay_sap'
+ {
+ match("relay_sap");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T71
+
+ // $ANTLR start T72
+ public final void mT72() throws RecognitionException {
+ try {
+ int _type = T72;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:71:5: ( 'ActorRef' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:71:7: 'ActorRef'
+ {
+ match("ActorRef");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T72
+
+ // $ANTLR start T73
+ public final void mT73() throws RecognitionException {
+ try {
+ int _type = T73;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:72:5: ( 'StateMachine' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:72:7: 'StateMachine'
+ {
+ match("StateMachine");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T73
+
+ // $ANTLR start T74
+ public final void mT74() throws RecognitionException {
+ try {
+ int _type = T74;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:73:5: ( 'State' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:73:7: 'State'
+ {
+ match("State");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T74
+
+ // $ANTLR start T75
+ public final void mT75() throws RecognitionException {
+ try {
+ int _type = T75;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:74:5: ( 'entry' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:74:7: 'entry'
+ {
+ match("entry");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T75
+
+ // $ANTLR start T76
+ public final void mT76() throws RecognitionException {
+ try {
+ int _type = T76;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:75:5: ( 'exit' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:75:7: 'exit'
+ {
+ match("exit");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T76
+
+ // $ANTLR start T77
+ public final void mT77() throws RecognitionException {
+ try {
+ int _type = T77;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:76:5: ( 'subgraph' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:76:7: 'subgraph'
+ {
+ match("subgraph");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T77
+
+ // $ANTLR start T78
+ public final void mT78() throws RecognitionException {
+ try {
+ int _type = T78;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:77:5: ( 'RefinedState' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:77:7: 'RefinedState'
+ {
+ match("RefinedState");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T78
+
+ // $ANTLR start T79
+ public final void mT79() throws RecognitionException {
+ try {
+ int _type = T79;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:78:5: ( 'TransitionPoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:78:7: 'TransitionPoint'
+ {
+ match("TransitionPoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T79
+
+ // $ANTLR start T80
+ public final void mT80() throws RecognitionException {
+ try {
+ int _type = T80;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:79:5: ( 'EntryPoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:79:7: 'EntryPoint'
+ {
+ match("EntryPoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T80
+
+ // $ANTLR start T81
+ public final void mT81() throws RecognitionException {
+ try {
+ int _type = T81;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:80:5: ( 'ExitPoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:80:7: 'ExitPoint'
+ {
+ match("ExitPoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T81
+
+ // $ANTLR start T82
+ public final void mT82() throws RecognitionException {
+ try {
+ int _type = T82;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:81:5: ( 'ChoicePoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:81:7: 'ChoicePoint'
+ {
+ match("ChoicePoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T82
+
+ // $ANTLR start T83
+ public final void mT83() throws RecognitionException {
+ try {
+ int _type = T83;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:82:5: ( 'Transition' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:82:7: 'Transition'
+ {
+ match("Transition");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T83
+
+ // $ANTLR start T84
+ public final void mT84() throws RecognitionException {
+ try {
+ int _type = T84;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:83:5: ( 'initial' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:83:7: 'initial'
+ {
+ match("initial");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T84
+
+ // $ANTLR start T85
+ public final void mT85() throws RecognitionException {
+ try {
+ int _type = T85;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:84:5: ( 'action' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:84:7: 'action'
+ {
+ match("action");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T85
+
+ // $ANTLR start T86
+ public final void mT86() throws RecognitionException {
+ try {
+ int _type = T86;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:85:5: ( 'triggers' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:85:7: 'triggers'
+ {
+ match("triggers");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T86
+
+ // $ANTLR start T87
+ public final void mT87() throws RecognitionException {
+ try {
+ int _type = T87;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:86:5: ( 'or' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:86:7: 'or'
+ {
+ match("or");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T87
+
+ // $ANTLR start T88
+ public final void mT88() throws RecognitionException {
+ try {
+ int _type = T88;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:87:5: ( 'cond' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:87:7: 'cond'
+ {
+ match("cond");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T88
+
+ // $ANTLR start T89
+ public final void mT89() throws RecognitionException {
+ try {
+ int _type = T89;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:88:5: ( 'my' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:88:7: 'my'
+ {
+ match("my");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T89
+
+ // $ANTLR start T90
+ public final void mT90() throws RecognitionException {
+ try {
+ int _type = T90;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:89:5: ( 'cp' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:89:7: 'cp'
+ {
+ match("cp");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T90
+
+ // $ANTLR start T91
+ public final void mT91() throws RecognitionException {
+ try {
+ int _type = T91;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:90:5: ( '<' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:90:7: '<'
+ {
+ match('<');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T91
+
+ // $ANTLR start T92
+ public final void mT92() throws RecognitionException {
+ try {
+ int _type = T92;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:91:5: ( '>' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:91:7: '>'
+ {
+ match('>');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T92
+
+ // $ANTLR start T93
+ public final void mT93() throws RecognitionException {
+ try {
+ int _type = T93;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:92:5: ( '|' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:92:7: '|'
+ {
+ match('|');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T93
+
+ // $ANTLR start T94
+ public final void mT94() throws RecognitionException {
+ try {
+ int _type = T94;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:93:5: ( 'guard' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:93:7: 'guard'
+ {
+ match("guard");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T94
+
+ // $ANTLR start T95
+ public final void mT95() throws RecognitionException {
+ try {
+ int _type = T95;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:94:5: ( 'import' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:94:7: 'import'
+ {
+ match("import");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T95
+
+ // $ANTLR start T96
+ public final void mT96() throws RecognitionException {
+ try {
+ int _type = T96;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:95:5: ( '*' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:95:7: '*'
+ {
+ match('*');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T96
+
+ // $ANTLR start T97
+ public final void mT97() throws RecognitionException {
+ try {
+ int _type = T97;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:96:5: ( 'abstract' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:96:7: 'abstract'
+ {
+ match("abstract");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T97
+
+ // $ANTLR start T98
+ public final void mT98() throws RecognitionException {
+ try {
+ int _type = T98;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:97:5: ( 'conjugated' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:97:7: 'conjugated'
+ {
+ match("conjugated");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T98
+
+ // $ANTLR start T99
+ public final void mT99() throws RecognitionException {
+ try {
+ int _type = T99;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:98:5: ( 'handler' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:98:7: 'handler'
+ {
+ match("handler");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T99
+
+ // $ANTLR start RULE_ID
+ public final void mRULE_ID() throws RecognitionException {
+ try {
+ int _type = RULE_ID;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16185:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16185:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16185:11: ( '^' )?
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='^') ) {
+ alt1=1;
+ }
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16185:11: '^'
+ {
+ match('^');
+
+ }
+ break;
+
+ }
+
+ if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16185:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop2;
+ }
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ID
+
+ // $ANTLR start RULE_INT
+ public final void mRULE_INT() throws RecognitionException {
+ try {
+ int _type = RULE_INT;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16187:10: ( ( '0' .. '9' )+ )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16187:12: ( '0' .. '9' )+
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16187:12: ( '0' .. '9' )+
+ int cnt3=0;
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16187:13: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt3 >= 1 ) break loop3;
+ EarlyExitException eee =
+ new EarlyExitException(3, input);
+ throw eee;
+ }
+ cnt3++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_INT
+
+ // $ANTLR start RULE_STRING
+ public final void mRULE_STRING() throws RecognitionException {
+ try {
+ int _type = RULE_STRING;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0=='\"') ) {
+ alt6=1;
+ }
+ else if ( (LA6_0=='\'') ) {
+ alt6=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("16189:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+ {
+ match('\"');
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+ loop4:
+ do {
+ int alt4=3;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0=='\\') ) {
+ alt4=1;
+ }
+ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFE')) ) {
+ alt4=2;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:62: ~ ( ( '\\\\' | '\"' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+ match('\"');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:82: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+ {
+ match('\'');
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:87: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+ loop5:
+ do {
+ int alt5=3;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0=='\\') ) {
+ alt5=1;
+ }
+ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFE')) ) {
+ alt5=2;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:88: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16189:129: ~ ( ( '\\\\' | '\\'' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop5;
+ }
+ } while (true);
+
+ match('\'');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_STRING
+
+ // $ANTLR start RULE_ML_COMMENT
+ public final void mRULE_ML_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_ML_COMMENT;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16191:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16191:19: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*");
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16191:24: ( options {greedy=false; } : . )*
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0=='*') ) {
+ int LA7_1 = input.LA(2);
+
+ if ( (LA7_1=='/') ) {
+ alt7=2;
+ }
+ else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFE')) ) {
+ alt7=1;
+ }
+
+
+ }
+ else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFE')) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16191:52: .
+ {
+ matchAny();
+
+ }
+ break;
+
+ default :
+ break loop7;
+ }
+ } while (true);
+
+ match("*/");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ML_COMMENT
+
+ // $ANTLR start RULE_SL_COMMENT
+ public final void mRULE_SL_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_SL_COMMENT;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+ {
+ match("//");
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:24: (~ ( ( '\\n' | '\\r' ) ) )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFE')) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:24: ~ ( ( '\\n' | '\\r' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:40: ( ( '\\r' )? '\\n' )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:41: ( '\\r' )? '\\n'
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:41: ( '\\r' )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0=='\r') ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16193:41: '\\r'
+ {
+ match('\r');
+
+ }
+ break;
+
+ }
+
+ match('\n');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_SL_COMMENT
+
+ // $ANTLR start RULE_WS
+ public final void mRULE_WS() throws RecognitionException {
+ try {
+ int _type = RULE_WS;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16195:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16195:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16195:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ int cnt11=0;
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:
+ {
+ if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt11 >= 1 ) break loop11;
+ EarlyExitException eee =
+ new EarlyExitException(11, input);
+ throw eee;
+ }
+ cnt11++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_WS
+
+ // $ANTLR start RULE_ANY_OTHER
+ public final void mRULE_ANY_OTHER() throws RecognitionException {
+ try {
+ int _type = RULE_ANY_OTHER;
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16197:16: ( . )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16197:18: .
+ {
+ matchAny();
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ANY_OTHER
+
+ public void mTokens() throws RecognitionException {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:8: ( T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt12=96;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0=='v') ) {
+ int LA12_1 = input.LA(2);
+
+ if ( (LA12_1=='o') ) {
+ int LA12_51 = input.LA(3);
+
+ if ( (LA12_51=='i') ) {
+ int LA12_121 = input.LA(4);
+
+ if ( (LA12_121=='d') ) {
+ int LA12_178 = input.LA(5);
+
+ if ( ((LA12_178>='0' && LA12_178<='9')||(LA12_178>='A' && LA12_178<='Z')||LA12_178=='_'||(LA12_178>='a' && LA12_178<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=1;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='i') ) {
+ switch ( input.LA(2) ) {
+ case 'm':
+ {
+ int LA12_53 = input.LA(3);
+
+ if ( (LA12_53=='p') ) {
+ int LA12_122 = input.LA(4);
+
+ if ( (LA12_122=='o') ) {
+ int LA12_179 = input.LA(5);
+
+ if ( (LA12_179=='r') ) {
+ int LA12_235 = input.LA(6);
+
+ if ( (LA12_235=='t') ) {
+ int LA12_289 = input.LA(7);
+
+ if ( ((LA12_289>='0' && LA12_289<='9')||(LA12_289>='A' && LA12_289<='Z')||LA12_289=='_'||(LA12_289>='a' && LA12_289<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=85;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'n':
+ {
+ switch ( input.LA(3) ) {
+ case 'c':
+ {
+ int LA12_123 = input.LA(4);
+
+ if ( (LA12_123=='o') ) {
+ int LA12_180 = input.LA(5);
+
+ if ( (LA12_180=='m') ) {
+ int LA12_236 = input.LA(6);
+
+ if ( (LA12_236=='i') ) {
+ int LA12_290 = input.LA(7);
+
+ if ( (LA12_290=='n') ) {
+ int LA12_342 = input.LA(8);
+
+ if ( (LA12_342=='g') ) {
+ int LA12_388 = input.LA(9);
+
+ if ( ((LA12_388>='0' && LA12_388<='9')||(LA12_388>='A' && LA12_388<='Z')||LA12_388=='_'||(LA12_388>='a' && LA12_388<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=27;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'i':
+ {
+ int LA12_124 = input.LA(4);
+
+ if ( (LA12_124=='t') ) {
+ int LA12_181 = input.LA(5);
+
+ if ( (LA12_181=='i') ) {
+ int LA12_237 = input.LA(6);
+
+ if ( (LA12_237=='a') ) {
+ int LA12_291 = input.LA(7);
+
+ if ( (LA12_291=='l') ) {
+ int LA12_343 = input.LA(8);
+
+ if ( ((LA12_343>='0' && LA12_343<='9')||(LA12_343>='A' && LA12_343<='Z')||LA12_343=='_'||(LA12_343>='a' && LA12_343<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=74;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 't':
+ {
+ switch ( input.LA(4) ) {
+ case '3':
+ {
+ int LA12_182 = input.LA(5);
+
+ if ( (LA12_182=='2') ) {
+ int LA12_238 = input.LA(6);
+
+ if ( ((LA12_238>='0' && LA12_238<='9')||(LA12_238>='A' && LA12_238<='Z')||LA12_238=='_'||(LA12_238>='a' && LA12_238<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=4;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '1':
+ {
+ int LA12_183 = input.LA(5);
+
+ if ( (LA12_183=='6') ) {
+ int LA12_239 = input.LA(6);
+
+ if ( ((LA12_239>='0' && LA12_239<='9')||(LA12_239>='A' && LA12_239<='Z')||LA12_239=='_'||(LA12_239>='a' && LA12_239<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=3;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '8':
+ {
+ int LA12_184 = input.LA(5);
+
+ if ( ((LA12_184>='0' && LA12_184<='9')||(LA12_184>='A' && LA12_184<='Z')||LA12_184=='_'||(LA12_184>='a' && LA12_184<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=2;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=38;}
+
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='u') ) {
+ switch ( input.LA(2) ) {
+ case 'i':
+ {
+ int LA12_55 = input.LA(3);
+
+ if ( (LA12_55=='n') ) {
+ int LA12_127 = input.LA(4);
+
+ if ( (LA12_127=='t') ) {
+ switch ( input.LA(5) ) {
+ case '3':
+ {
+ int LA12_241 = input.LA(6);
+
+ if ( (LA12_241=='2') ) {
+ int LA12_294 = input.LA(7);
+
+ if ( ((LA12_294>='0' && LA12_294<='9')||(LA12_294>='A' && LA12_294<='Z')||LA12_294=='_'||(LA12_294>='a' && LA12_294<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=7;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '1':
+ {
+ int LA12_242 = input.LA(6);
+
+ if ( (LA12_242=='6') ) {
+ int LA12_295 = input.LA(7);
+
+ if ( ((LA12_295>='0' && LA12_295<='9')||(LA12_295>='A' && LA12_295<='Z')||LA12_295=='_'||(LA12_295>='a' && LA12_295<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=6;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '8':
+ {
+ int LA12_243 = input.LA(6);
+
+ if ( ((LA12_243>='0' && LA12_243<='9')||(LA12_243>='A' && LA12_243<='Z')||LA12_243=='_'||(LA12_243>='a' && LA12_243<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=5;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 's':
+ {
+ int LA12_56 = input.LA(3);
+
+ if ( (LA12_56=='e') ) {
+ int LA12_128 = input.LA(4);
+
+ if ( (LA12_128=='r') ) {
+ int LA12_186 = input.LA(5);
+
+ if ( (LA12_186=='c') ) {
+ int LA12_244 = input.LA(6);
+
+ if ( (LA12_244=='o') ) {
+ int LA12_297 = input.LA(7);
+
+ if ( (LA12_297=='d') ) {
+ int LA12_346 = input.LA(8);
+
+ if ( (LA12_346=='e') ) {
+ switch ( input.LA(9) ) {
+ case '1':
+ {
+ int LA12_431 = input.LA(10);
+
+ if ( ((LA12_431>='0' && LA12_431<='9')||(LA12_431>='A' && LA12_431<='Z')||LA12_431=='_'||(LA12_431>='a' && LA12_431<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=29;}
+ }
+ break;
+ case '2':
+ {
+ int LA12_432 = input.LA(10);
+
+ if ( ((LA12_432>='0' && LA12_432<='9')||(LA12_432>='A' && LA12_432<='Z')||LA12_432=='_'||(LA12_432>='a' && LA12_432<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=30;}
+ }
+ break;
+ case '0':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=35;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='f') ) {
+ int LA12_4 = input.LA(2);
+
+ if ( (LA12_4=='l') ) {
+ int LA12_57 = input.LA(3);
+
+ if ( (LA12_57=='o') ) {
+ int LA12_129 = input.LA(4);
+
+ if ( (LA12_129=='a') ) {
+ int LA12_187 = input.LA(5);
+
+ if ( (LA12_187=='t') ) {
+ switch ( input.LA(6) ) {
+ case '3':
+ {
+ int LA12_298 = input.LA(7);
+
+ if ( (LA12_298=='2') ) {
+ int LA12_347 = input.LA(8);
+
+ if ( ((LA12_347>='0' && LA12_347<='9')||(LA12_347>='A' && LA12_347<='Z')||LA12_347=='_'||(LA12_347>='a' && LA12_347<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=8;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '6':
+ {
+ int LA12_299 = input.LA(7);
+
+ if ( (LA12_299=='4') ) {
+ int LA12_348 = input.LA(8);
+
+ if ( ((LA12_348>='0' && LA12_348<='9')||(LA12_348>='A' && LA12_348<='Z')||LA12_348=='_'||(LA12_348>='a' && LA12_348<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=9;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='b') ) {
+ int LA12_5 = input.LA(2);
+
+ if ( (LA12_5=='o') ) {
+ int LA12_58 = input.LA(3);
+
+ if ( (LA12_58=='o') ) {
+ int LA12_130 = input.LA(4);
+
+ if ( (LA12_130=='l') ) {
+ int LA12_188 = input.LA(5);
+
+ if ( (LA12_188=='e') ) {
+ int LA12_246 = input.LA(6);
+
+ if ( (LA12_246=='a') ) {
+ int LA12_300 = input.LA(7);
+
+ if ( (LA12_300=='n') ) {
+ int LA12_349 = input.LA(8);
+
+ if ( ((LA12_349>='0' && LA12_349<='9')||(LA12_349>='A' && LA12_349<='Z')||LA12_349=='_'||(LA12_349>='a' && LA12_349<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=10;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='s') ) {
+ switch ( input.LA(2) ) {
+ case 't':
+ {
+ int LA12_59 = input.LA(3);
+
+ if ( (LA12_59=='r') ) {
+ int LA12_131 = input.LA(4);
+
+ if ( (LA12_131=='i') ) {
+ int LA12_189 = input.LA(5);
+
+ if ( (LA12_189=='n') ) {
+ int LA12_247 = input.LA(6);
+
+ if ( (LA12_247=='g') ) {
+ int LA12_301 = input.LA(7);
+
+ if ( ((LA12_301>='0' && LA12_301<='9')||(LA12_301>='A' && LA12_301<='Z')||LA12_301=='_'||(LA12_301>='a' && LA12_301<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=11;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'e':
+ {
+ int LA12_60 = input.LA(3);
+
+ if ( (LA12_60=='m') ) {
+ int LA12_132 = input.LA(4);
+
+ if ( (LA12_132=='a') ) {
+ int LA12_190 = input.LA(5);
+
+ if ( (LA12_190=='n') ) {
+ int LA12_248 = input.LA(6);
+
+ if ( (LA12_248=='t') ) {
+ int LA12_302 = input.LA(7);
+
+ if ( (LA12_302=='i') ) {
+ int LA12_351 = input.LA(8);
+
+ if ( (LA12_351=='c') ) {
+ int LA12_394 = input.LA(9);
+
+ if ( (LA12_394=='s') ) {
+ int LA12_434 = input.LA(10);
+
+ if ( ((LA12_434>='0' && LA12_434<='9')||(LA12_434>='A' && LA12_434<='Z')||LA12_434=='_'||(LA12_434>='a' && LA12_434<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=37;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'u':
+ {
+ int LA12_61 = input.LA(3);
+
+ if ( (LA12_61=='b') ) {
+ int LA12_133 = input.LA(4);
+
+ if ( (LA12_133=='g') ) {
+ int LA12_191 = input.LA(5);
+
+ if ( (LA12_191=='r') ) {
+ int LA12_249 = input.LA(6);
+
+ if ( (LA12_249=='a') ) {
+ int LA12_303 = input.LA(7);
+
+ if ( (LA12_303=='p') ) {
+ int LA12_352 = input.LA(8);
+
+ if ( (LA12_352=='h') ) {
+ int LA12_395 = input.LA(9);
+
+ if ( ((LA12_395>='0' && LA12_395<='9')||(LA12_395>='A' && LA12_395<='Z')||LA12_395=='_'||(LA12_395>='a' && LA12_395<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=67;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'a':
+ {
+ int LA12_62 = input.LA(3);
+
+ if ( (LA12_62=='t') ) {
+ int LA12_134 = input.LA(4);
+
+ if ( (LA12_134=='i') ) {
+ int LA12_192 = input.LA(5);
+
+ if ( (LA12_192=='s') ) {
+ int LA12_250 = input.LA(6);
+
+ if ( (LA12_250=='f') ) {
+ int LA12_304 = input.LA(7);
+
+ if ( (LA12_304=='i') ) {
+ int LA12_353 = input.LA(8);
+
+ if ( (LA12_353=='e') ) {
+ int LA12_396 = input.LA(9);
+
+ if ( (LA12_396=='d') ) {
+ int LA12_436 = input.LA(10);
+
+ if ( (LA12_436=='_') ) {
+ int LA12_468 = input.LA(11);
+
+ if ( (LA12_468=='b') ) {
+ int LA12_493 = input.LA(12);
+
+ if ( (LA12_493=='y') ) {
+ int LA12_509 = input.LA(13);
+
+ if ( ((LA12_509>='0' && LA12_509<='9')||(LA12_509>='A' && LA12_509<='Z')||LA12_509=='_'||(LA12_509>='a' && LA12_509<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=59;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='c') ) {
+ switch ( input.LA(2) ) {
+ case 'p':
+ {
+ int LA12_63 = input.LA(3);
+
+ if ( ((LA12_63>='0' && LA12_63<='9')||(LA12_63>='A' && LA12_63<='Z')||LA12_63=='_'||(LA12_63>='a' && LA12_63<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=80;}
+ }
+ break;
+ case 'o':
+ {
+ int LA12_64 = input.LA(3);
+
+ if ( (LA12_64=='n') ) {
+ switch ( input.LA(4) ) {
+ case 'd':
+ {
+ int LA12_193 = input.LA(5);
+
+ if ( ((LA12_193>='0' && LA12_193<='9')||(LA12_193>='A' && LA12_193<='Z')||LA12_193=='_'||(LA12_193>='a' && LA12_193<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=78;}
+ }
+ break;
+ case 'j':
+ {
+ int LA12_194 = input.LA(5);
+
+ if ( (LA12_194=='u') ) {
+ int LA12_252 = input.LA(6);
+
+ if ( (LA12_252=='g') ) {
+ int LA12_305 = input.LA(7);
+
+ if ( (LA12_305=='a') ) {
+ int LA12_354 = input.LA(8);
+
+ if ( (LA12_354=='t') ) {
+ int LA12_397 = input.LA(9);
+
+ if ( (LA12_397=='e') ) {
+ switch ( input.LA(10) ) {
+ case 'd':
+ {
+ int LA12_469 = input.LA(11);
+
+ if ( ((LA12_469>='0' && LA12_469<='9')||(LA12_469>='A' && LA12_469<='Z')||LA12_469=='_'||(LA12_469>='a' && LA12_469<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=88;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=33;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'h':
+ {
+ int LA12_65 = input.LA(3);
+
+ if ( (LA12_65=='a') ) {
+ int LA12_137 = input.LA(4);
+
+ if ( (LA12_137=='r') ) {
+ int LA12_195 = input.LA(5);
+
+ if ( ((LA12_195>='0' && LA12_195<='9')||(LA12_195>='A' && LA12_195<='Z')||LA12_195=='_'||(LA12_195>='a' && LA12_195<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=12;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='R') ) {
+ switch ( input.LA(2) ) {
+ case 'o':
+ {
+ int LA12_66 = input.LA(3);
+
+ if ( (LA12_66=='o') ) {
+ int LA12_138 = input.LA(4);
+
+ if ( (LA12_138=='m') ) {
+ int LA12_196 = input.LA(5);
+
+ if ( (LA12_196=='M') ) {
+ int LA12_254 = input.LA(6);
+
+ if ( (LA12_254=='o') ) {
+ int LA12_306 = input.LA(7);
+
+ if ( (LA12_306=='d') ) {
+ int LA12_355 = input.LA(8);
+
+ if ( (LA12_355=='e') ) {
+ int LA12_398 = input.LA(9);
+
+ if ( (LA12_398=='l') ) {
+ int LA12_438 = input.LA(10);
+
+ if ( ((LA12_438>='0' && LA12_438<='9')||(LA12_438>='A' && LA12_438<='Z')||LA12_438=='_'||(LA12_438>='a' && LA12_438<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=13;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'e':
+ {
+ int LA12_67 = input.LA(3);
+
+ if ( (LA12_67=='f') ) {
+ int LA12_139 = input.LA(4);
+
+ if ( (LA12_139=='i') ) {
+ int LA12_197 = input.LA(5);
+
+ if ( (LA12_197=='n') ) {
+ int LA12_255 = input.LA(6);
+
+ if ( (LA12_255=='e') ) {
+ int LA12_307 = input.LA(7);
+
+ if ( (LA12_307=='d') ) {
+ int LA12_356 = input.LA(8);
+
+ if ( (LA12_356=='S') ) {
+ int LA12_399 = input.LA(9);
+
+ if ( (LA12_399=='t') ) {
+ int LA12_439 = input.LA(10);
+
+ if ( (LA12_439=='a') ) {
+ int LA12_472 = input.LA(11);
+
+ if ( (LA12_472=='t') ) {
+ int LA12_495 = input.LA(12);
+
+ if ( (LA12_495=='e') ) {
+ int LA12_510 = input.LA(13);
+
+ if ( ((LA12_510>='0' && LA12_510<='9')||(LA12_510>='A' && LA12_510<='Z')||LA12_510=='_'||(LA12_510>='a' && LA12_510<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=68;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='{') ) {
+ alt12=14;
+ }
+ else if ( (LA12_0=='}') ) {
+ alt12=15;
+ }
+ else if ( (LA12_0==':') ) {
+ alt12=16;
+ }
+ else if ( (LA12_0=='D') ) {
+ int LA12_12 = input.LA(2);
+
+ if ( (LA12_12=='a') ) {
+ int LA12_71 = input.LA(3);
+
+ if ( (LA12_71=='t') ) {
+ int LA12_140 = input.LA(4);
+
+ if ( (LA12_140=='a') ) {
+ int LA12_198 = input.LA(5);
+
+ if ( (LA12_198=='C') ) {
+ int LA12_256 = input.LA(6);
+
+ if ( (LA12_256=='l') ) {
+ int LA12_308 = input.LA(7);
+
+ if ( (LA12_308=='a') ) {
+ int LA12_357 = input.LA(8);
+
+ if ( (LA12_357=='s') ) {
+ int LA12_400 = input.LA(9);
+
+ if ( (LA12_400=='s') ) {
+ int LA12_440 = input.LA(10);
+
+ if ( ((LA12_440>='0' && LA12_440<='9')||(LA12_440>='A' && LA12_440<='Z')||LA12_440=='_'||(LA12_440>='a' && LA12_440<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=17;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='e') ) {
+ switch ( input.LA(2) ) {
+ case 'x':
+ {
+ switch ( input.LA(3) ) {
+ case 't':
+ {
+ int LA12_141 = input.LA(4);
+
+ if ( (LA12_141=='e') ) {
+ switch ( input.LA(5) ) {
+ case 'r':
+ {
+ int LA12_257 = input.LA(6);
+
+ if ( (LA12_257=='n') ) {
+ int LA12_309 = input.LA(7);
+
+ if ( (LA12_309=='a') ) {
+ int LA12_358 = input.LA(8);
+
+ if ( (LA12_358=='l') ) {
+ int LA12_401 = input.LA(9);
+
+ if ( ((LA12_401>='0' && LA12_401<='9')||(LA12_401>='A' && LA12_401<='Z')||LA12_401=='_'||(LA12_401>='a' && LA12_401<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=46;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_258 = input.LA(6);
+
+ if ( (LA12_258=='d') ) {
+ int LA12_310 = input.LA(7);
+
+ if ( (LA12_310=='s') ) {
+ int LA12_359 = input.LA(8);
+
+ if ( ((LA12_359>='0' && LA12_359<='9')||(LA12_359>='A' && LA12_359<='Z')||LA12_359=='_'||(LA12_359>='a' && LA12_359<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=18;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'i':
+ {
+ int LA12_142 = input.LA(4);
+
+ if ( (LA12_142=='t') ) {
+ int LA12_200 = input.LA(5);
+
+ if ( ((LA12_200>='0' && LA12_200<='9')||(LA12_200>='A' && LA12_200<='Z')||LA12_200=='_'||(LA12_200>='a' && LA12_200<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=66;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ break;
+ case 'n':
+ {
+ int LA12_73 = input.LA(3);
+
+ if ( (LA12_73=='t') ) {
+ int LA12_143 = input.LA(4);
+
+ if ( (LA12_143=='r') ) {
+ int LA12_201 = input.LA(5);
+
+ if ( (LA12_201=='y') ) {
+ int LA12_260 = input.LA(6);
+
+ if ( ((LA12_260>='0' && LA12_260<='9')||(LA12_260>='A' && LA12_260<='Z')||LA12_260=='_'||(LA12_260>='a' && LA12_260<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=65;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='A') ) {
+ switch ( input.LA(2) ) {
+ case 't':
+ {
+ int LA12_74 = input.LA(3);
+
+ if ( (LA12_74=='t') ) {
+ int LA12_144 = input.LA(4);
+
+ if ( (LA12_144=='r') ) {
+ int LA12_202 = input.LA(5);
+
+ if ( (LA12_202=='i') ) {
+ int LA12_261 = input.LA(6);
+
+ if ( (LA12_261=='b') ) {
+ int LA12_312 = input.LA(7);
+
+ if ( (LA12_312=='u') ) {
+ int LA12_360 = input.LA(8);
+
+ if ( (LA12_360=='t') ) {
+ int LA12_403 = input.LA(9);
+
+ if ( (LA12_403=='e') ) {
+ int LA12_442 = input.LA(10);
+
+ if ( ((LA12_442>='0' && LA12_442<='9')||(LA12_442>='A' && LA12_442<='Z')||LA12_442=='_'||(LA12_442>='a' && LA12_442<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=19;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'c':
+ {
+ int LA12_75 = input.LA(3);
+
+ if ( (LA12_75=='t') ) {
+ int LA12_145 = input.LA(4);
+
+ if ( (LA12_145=='o') ) {
+ int LA12_203 = input.LA(5);
+
+ if ( (LA12_203=='r') ) {
+ switch ( input.LA(6) ) {
+ case 'C':
+ {
+ int LA12_313 = input.LA(7);
+
+ if ( (LA12_313=='l') ) {
+ int LA12_361 = input.LA(8);
+
+ if ( (LA12_361=='a') ) {
+ int LA12_404 = input.LA(9);
+
+ if ( (LA12_404=='s') ) {
+ int LA12_443 = input.LA(10);
+
+ if ( (LA12_443=='s') ) {
+ int LA12_475 = input.LA(11);
+
+ if ( ((LA12_475>='0' && LA12_475<='9')||(LA12_475>='A' && LA12_475<='Z')||LA12_475=='_'||(LA12_475>='a' && LA12_475<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=41;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'R':
+ {
+ int LA12_314 = input.LA(7);
+
+ if ( (LA12_314=='e') ) {
+ int LA12_362 = input.LA(8);
+
+ if ( (LA12_362=='f') ) {
+ int LA12_405 = input.LA(9);
+
+ if ( ((LA12_405>='0' && LA12_405<='9')||(LA12_405>='A' && LA12_405<='Z')||LA12_405=='_'||(LA12_405>='a' && LA12_405<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=62;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='[') ) {
+ alt12=20;
+ }
+ else if ( (LA12_0==']') ) {
+ alt12=21;
+ }
+ else if ( (LA12_0=='O') ) {
+ int LA12_17 = input.LA(2);
+
+ if ( (LA12_17=='p') ) {
+ int LA12_78 = input.LA(3);
+
+ if ( (LA12_78=='e') ) {
+ int LA12_146 = input.LA(4);
+
+ if ( (LA12_146=='r') ) {
+ int LA12_204 = input.LA(5);
+
+ if ( (LA12_204=='a') ) {
+ int LA12_263 = input.LA(6);
+
+ if ( (LA12_263=='t') ) {
+ int LA12_315 = input.LA(7);
+
+ if ( (LA12_315=='i') ) {
+ int LA12_363 = input.LA(8);
+
+ if ( (LA12_363=='o') ) {
+ int LA12_406 = input.LA(9);
+
+ if ( (LA12_406=='n') ) {
+ int LA12_445 = input.LA(10);
+
+ if ( ((LA12_445>='0' && LA12_445<='9')||(LA12_445>='A' && LA12_445<='Z')||LA12_445=='_'||(LA12_445>='a' && LA12_445<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=22;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='(') ) {
+ alt12=23;
+ }
+ else if ( (LA12_0==')') ) {
+ alt12=24;
+ }
+ else if ( (LA12_0==',') ) {
+ alt12=25;
+ }
+ else if ( (LA12_0=='P') ) {
+ switch ( input.LA(2) ) {
+ case 'r':
+ {
+ int LA12_82 = input.LA(3);
+
+ if ( (LA12_82=='o') ) {
+ int LA12_147 = input.LA(4);
+
+ if ( (LA12_147=='t') ) {
+ int LA12_205 = input.LA(5);
+
+ if ( (LA12_205=='o') ) {
+ int LA12_264 = input.LA(6);
+
+ if ( (LA12_264=='c') ) {
+ int LA12_316 = input.LA(7);
+
+ if ( (LA12_316=='o') ) {
+ int LA12_364 = input.LA(8);
+
+ if ( (LA12_364=='l') ) {
+ int LA12_407 = input.LA(9);
+
+ if ( (LA12_407=='C') ) {
+ int LA12_446 = input.LA(10);
+
+ if ( (LA12_446=='l') ) {
+ int LA12_477 = input.LA(11);
+
+ if ( (LA12_477=='a') ) {
+ int LA12_497 = input.LA(12);
+
+ if ( (LA12_497=='s') ) {
+ int LA12_511 = input.LA(13);
+
+ if ( (LA12_511=='s') ) {
+ int LA12_523 = input.LA(14);
+
+ if ( ((LA12_523>='0' && LA12_523<='9')||(LA12_523>='A' && LA12_523<='Z')||LA12_523=='_'||(LA12_523>='a' && LA12_523<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=26;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'o':
+ {
+ int LA12_83 = input.LA(3);
+
+ if ( (LA12_83=='r') ) {
+ int LA12_148 = input.LA(4);
+
+ if ( (LA12_148=='t') ) {
+ switch ( input.LA(5) ) {
+ case 'C':
+ {
+ int LA12_265 = input.LA(6);
+
+ if ( (LA12_265=='l') ) {
+ int LA12_317 = input.LA(7);
+
+ if ( (LA12_317=='a') ) {
+ int LA12_365 = input.LA(8);
+
+ if ( (LA12_365=='s') ) {
+ int LA12_408 = input.LA(9);
+
+ if ( (LA12_408=='s') ) {
+ int LA12_447 = input.LA(10);
+
+ if ( ((LA12_447>='0' && LA12_447<='9')||(LA12_447>='A' && LA12_447<='Z')||LA12_447=='_'||(LA12_447>='a' && LA12_447<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=32;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=45;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='o') ) {
+ switch ( input.LA(2) ) {
+ case 'r':
+ {
+ int LA12_84 = input.LA(3);
+
+ if ( ((LA12_84>='0' && LA12_84<='9')||(LA12_84>='A' && LA12_84<='Z')||LA12_84=='_'||(LA12_84>='a' && LA12_84<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=77;}
+ }
+ break;
+ case 'u':
+ {
+ int LA12_85 = input.LA(3);
+
+ if ( (LA12_85=='t') ) {
+ switch ( input.LA(4) ) {
+ case 'g':
+ {
+ int LA12_207 = input.LA(5);
+
+ if ( (LA12_207=='o') ) {
+ int LA12_267 = input.LA(6);
+
+ if ( (LA12_267=='i') ) {
+ int LA12_318 = input.LA(7);
+
+ if ( (LA12_318=='n') ) {
+ int LA12_366 = input.LA(8);
+
+ if ( (LA12_366=='g') ) {
+ int LA12_409 = input.LA(9);
+
+ if ( ((LA12_409>='0' && LA12_409<='9')||(LA12_409>='A' && LA12_409<='Z')||LA12_409=='_'||(LA12_409>='a' && LA12_409<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=28;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=40;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'f':
+ {
+ int LA12_86 = input.LA(3);
+
+ if ( ((LA12_86>='0' && LA12_86<='9')||(LA12_86>='A' && LA12_86<='Z')||LA12_86=='_'||(LA12_86>='a' && LA12_86<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=50;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='r') ) {
+ int LA12_23 = input.LA(2);
+
+ if ( (LA12_23=='e') ) {
+ switch ( input.LA(3) ) {
+ case 'g':
+ {
+ int LA12_152 = input.LA(4);
+
+ if ( (LA12_152=='u') ) {
+ int LA12_209 = input.LA(5);
+
+ if ( (LA12_209=='l') ) {
+ int LA12_268 = input.LA(6);
+
+ if ( (LA12_268=='a') ) {
+ int LA12_319 = input.LA(7);
+
+ if ( (LA12_319=='r') ) {
+ int LA12_367 = input.LA(8);
+
+ if ( ((LA12_367>='0' && LA12_367<='9')||(LA12_367>='A' && LA12_367<='Z')||LA12_367=='_'||(LA12_367>='a' && LA12_367<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=31;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'f':
+ {
+ int LA12_153 = input.LA(4);
+
+ if ( ((LA12_153>='0' && LA12_153<='9')||(LA12_153>='A' && LA12_153<='Z')||LA12_153=='_'||(LA12_153>='a' && LA12_153<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=60;}
+ }
+ break;
+ case 'l':
+ {
+ int LA12_154 = input.LA(4);
+
+ if ( (LA12_154=='a') ) {
+ int LA12_211 = input.LA(5);
+
+ if ( (LA12_211=='y') ) {
+ int LA12_269 = input.LA(6);
+
+ if ( (LA12_269=='_') ) {
+ int LA12_320 = input.LA(7);
+
+ if ( (LA12_320=='s') ) {
+ int LA12_368 = input.LA(8);
+
+ if ( (LA12_368=='a') ) {
+ int LA12_411 = input.LA(9);
+
+ if ( (LA12_411=='p') ) {
+ int LA12_449 = input.LA(10);
+
+ if ( ((LA12_449>='0' && LA12_449<='9')||(LA12_449>='A' && LA12_449<='Z')||LA12_449=='_'||(LA12_449>='a' && LA12_449<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=61;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='M') ) {
+ int LA12_24 = input.LA(2);
+
+ if ( (LA12_24=='e') ) {
+ int LA12_88 = input.LA(3);
+
+ if ( (LA12_88=='s') ) {
+ int LA12_155 = input.LA(4);
+
+ if ( (LA12_155=='s') ) {
+ int LA12_212 = input.LA(5);
+
+ if ( (LA12_212=='a') ) {
+ int LA12_270 = input.LA(6);
+
+ if ( (LA12_270=='g') ) {
+ int LA12_321 = input.LA(7);
+
+ if ( (LA12_321=='e') ) {
+ int LA12_369 = input.LA(8);
+
+ if ( ((LA12_369>='0' && LA12_369<='9')||(LA12_369>='A' && LA12_369<='Z')||LA12_369=='_'||(LA12_369>='a' && LA12_369<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=34;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='h') ) {
+ int LA12_25 = input.LA(2);
+
+ if ( (LA12_25=='a') ) {
+ int LA12_89 = input.LA(3);
+
+ if ( (LA12_89=='n') ) {
+ int LA12_156 = input.LA(4);
+
+ if ( (LA12_156=='d') ) {
+ int LA12_213 = input.LA(5);
+
+ if ( (LA12_213=='l') ) {
+ int LA12_271 = input.LA(6);
+
+ if ( (LA12_271=='e') ) {
+ switch ( input.LA(7) ) {
+ case 'r':
+ {
+ int LA12_370 = input.LA(8);
+
+ if ( ((LA12_370>='0' && LA12_370<='9')||(LA12_370>='A' && LA12_370<='Z')||LA12_370=='_'||(LA12_370>='a' && LA12_370<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=89;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=36;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='-') ) {
+ int LA12_26 = input.LA(2);
+
+ if ( (LA12_26=='>') ) {
+ alt12=39;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( (LA12_0=='I') ) {
+ int LA12_27 = input.LA(2);
+
+ if ( (LA12_27=='n') ) {
+ int LA12_91 = input.LA(3);
+
+ if ( (LA12_91=='t') ) {
+ int LA12_157 = input.LA(4);
+
+ if ( (LA12_157=='e') ) {
+ int LA12_214 = input.LA(5);
+
+ if ( (LA12_214=='r') ) {
+ int LA12_272 = input.LA(6);
+
+ if ( (LA12_272=='f') ) {
+ int LA12_323 = input.LA(7);
+
+ if ( (LA12_323=='a') ) {
+ int LA12_372 = input.LA(8);
+
+ if ( (LA12_372=='c') ) {
+ int LA12_414 = input.LA(9);
+
+ if ( (LA12_414=='e') ) {
+ int LA12_450 = input.LA(10);
+
+ if ( ((LA12_450>='0' && LA12_450<='9')||(LA12_450>='A' && LA12_450<='Z')||LA12_450=='_'||(LA12_450>='a' && LA12_450<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=42;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='S') ) {
+ switch ( input.LA(2) ) {
+ case 'A':
+ {
+ int LA12_92 = input.LA(3);
+
+ if ( (LA12_92=='P') ) {
+ int LA12_158 = input.LA(4);
+
+ if ( ((LA12_158>='0' && LA12_158<='9')||(LA12_158>='A' && LA12_158<='Z')||LA12_158=='_'||(LA12_158>='a' && LA12_158<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'P':
+ {
+ int LA12_93 = input.LA(3);
+
+ if ( (LA12_93=='P') ) {
+ int LA12_159 = input.LA(4);
+
+ if ( ((LA12_159>='0' && LA12_159<='9')||(LA12_159>='A' && LA12_159<='Z')||LA12_159=='_'||(LA12_159>='a' && LA12_159<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=48;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'e':
+ {
+ int LA12_94 = input.LA(3);
+
+ if ( (LA12_94=='r') ) {
+ int LA12_160 = input.LA(4);
+
+ if ( (LA12_160=='v') ) {
+ int LA12_217 = input.LA(5);
+
+ if ( (LA12_217=='i') ) {
+ int LA12_273 = input.LA(6);
+
+ if ( (LA12_273=='c') ) {
+ int LA12_324 = input.LA(7);
+
+ if ( (LA12_324=='e') ) {
+ int LA12_373 = input.LA(8);
+
+ if ( (LA12_373=='I') ) {
+ int LA12_415 = input.LA(9);
+
+ if ( (LA12_415=='m') ) {
+ int LA12_451 = input.LA(10);
+
+ if ( (LA12_451=='p') ) {
+ int LA12_481 = input.LA(11);
+
+ if ( (LA12_481=='l') ) {
+ int LA12_498 = input.LA(12);
+
+ if ( (LA12_498=='e') ) {
+ int LA12_512 = input.LA(13);
+
+ if ( (LA12_512=='m') ) {
+ int LA12_524 = input.LA(14);
+
+ if ( (LA12_524=='e') ) {
+ int LA12_533 = input.LA(15);
+
+ if ( (LA12_533=='n') ) {
+ int LA12_539 = input.LA(16);
+
+ if ( (LA12_539=='t') ) {
+ int LA12_543 = input.LA(17);
+
+ if ( (LA12_543=='a') ) {
+ int LA12_546 = input.LA(18);
+
+ if ( (LA12_546=='t') ) {
+ int LA12_547 = input.LA(19);
+
+ if ( (LA12_547=='i') ) {
+ int LA12_548 = input.LA(20);
+
+ if ( (LA12_548=='o') ) {
+ int LA12_549 = input.LA(21);
+
+ if ( (LA12_549=='n') ) {
+ int LA12_550 = input.LA(22);
+
+ if ( ((LA12_550>='0' && LA12_550<='9')||(LA12_550>='A' && LA12_550<='Z')||LA12_550=='_'||(LA12_550>='a' && LA12_550<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=49;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 't':
+ {
+ switch ( input.LA(3) ) {
+ case 'a':
+ {
+ int LA12_161 = input.LA(4);
+
+ if ( (LA12_161=='t') ) {
+ int LA12_218 = input.LA(5);
+
+ if ( (LA12_218=='e') ) {
+ switch ( input.LA(6) ) {
+ case 'M':
+ {
+ int LA12_325 = input.LA(7);
+
+ if ( (LA12_325=='a') ) {
+ int LA12_374 = input.LA(8);
+
+ if ( (LA12_374=='c') ) {
+ int LA12_416 = input.LA(9);
+
+ if ( (LA12_416=='h') ) {
+ int LA12_452 = input.LA(10);
+
+ if ( (LA12_452=='i') ) {
+ int LA12_482 = input.LA(11);
+
+ if ( (LA12_482=='n') ) {
+ int LA12_499 = input.LA(12);
+
+ if ( (LA12_499=='e') ) {
+ int LA12_513 = input.LA(13);
+
+ if ( ((LA12_513>='0' && LA12_513<='9')||(LA12_513>='A' && LA12_513<='Z')||LA12_513=='_'||(LA12_513>='a' && LA12_513<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=63;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=64;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'r':
+ {
+ int LA12_162 = input.LA(4);
+
+ if ( (LA12_162=='u') ) {
+ int LA12_219 = input.LA(5);
+
+ if ( (LA12_219=='c') ) {
+ int LA12_275 = input.LA(6);
+
+ if ( (LA12_275=='t') ) {
+ int LA12_327 = input.LA(7);
+
+ if ( (LA12_327=='u') ) {
+ int LA12_375 = input.LA(8);
+
+ if ( (LA12_375=='r') ) {
+ int LA12_417 = input.LA(9);
+
+ if ( (LA12_417=='e') ) {
+ int LA12_453 = input.LA(10);
+
+ if ( ((LA12_453>='0' && LA12_453<='9')||(LA12_453>='A' && LA12_453<='Z')||LA12_453=='_'||(LA12_453>='a' && LA12_453<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=43;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ break;
+ case 'u':
+ {
+ int LA12_96 = input.LA(3);
+
+ if ( (LA12_96=='b') ) {
+ int LA12_163 = input.LA(4);
+
+ if ( (LA12_163=='S') ) {
+ int LA12_220 = input.LA(5);
+
+ if ( (LA12_220=='y') ) {
+ int LA12_276 = input.LA(6);
+
+ if ( (LA12_276=='s') ) {
+ int LA12_328 = input.LA(7);
+
+ if ( (LA12_328=='t') ) {
+ int LA12_376 = input.LA(8);
+
+ if ( (LA12_376=='e') ) {
+ int LA12_418 = input.LA(9);
+
+ if ( (LA12_418=='m') ) {
+ switch ( input.LA(10) ) {
+ case 'C':
+ {
+ int LA12_484 = input.LA(11);
+
+ if ( (LA12_484=='l') ) {
+ int LA12_500 = input.LA(12);
+
+ if ( (LA12_500=='a') ) {
+ int LA12_514 = input.LA(13);
+
+ if ( (LA12_514=='s') ) {
+ int LA12_526 = input.LA(14);
+
+ if ( (LA12_526=='s') ) {
+ int LA12_534 = input.LA(15);
+
+ if ( ((LA12_534>='0' && LA12_534<='9')||(LA12_534>='A' && LA12_534<='Z')||LA12_534=='_'||(LA12_534>='a' && LA12_534<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=53;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'R':
+ {
+ int LA12_485 = input.LA(11);
+
+ if ( (LA12_485=='e') ) {
+ int LA12_501 = input.LA(12);
+
+ if ( (LA12_501=='f') ) {
+ int LA12_515 = input.LA(13);
+
+ if ( ((LA12_515>='0' && LA12_515<='9')||(LA12_515>='A' && LA12_515<='Z')||LA12_515=='_'||(LA12_515>='a' && LA12_515<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=52;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='B') ) {
+ switch ( input.LA(2) ) {
+ case 'e':
+ {
+ int LA12_97 = input.LA(3);
+
+ if ( (LA12_97=='h') ) {
+ int LA12_164 = input.LA(4);
+
+ if ( (LA12_164=='a') ) {
+ int LA12_221 = input.LA(5);
+
+ if ( (LA12_221=='v') ) {
+ int LA12_277 = input.LA(6);
+
+ if ( (LA12_277=='i') ) {
+ int LA12_329 = input.LA(7);
+
+ if ( (LA12_329=='o') ) {
+ int LA12_377 = input.LA(8);
+
+ if ( (LA12_377=='r') ) {
+ int LA12_419 = input.LA(9);
+
+ if ( ((LA12_419>='0' && LA12_419<='9')||(LA12_419>='A' && LA12_419<='Z')||LA12_419=='_'||(LA12_419>='a' && LA12_419<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=44;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'i':
+ {
+ int LA12_98 = input.LA(3);
+
+ if ( (LA12_98=='n') ) {
+ int LA12_165 = input.LA(4);
+
+ if ( (LA12_165=='d') ) {
+ int LA12_222 = input.LA(5);
+
+ if ( (LA12_222=='i') ) {
+ int LA12_278 = input.LA(6);
+
+ if ( (LA12_278=='n') ) {
+ int LA12_330 = input.LA(7);
+
+ if ( (LA12_330=='g') ) {
+ int LA12_378 = input.LA(8);
+
+ if ( ((LA12_378>='0' && LA12_378<='9')||(LA12_378>='A' && LA12_378<='Z')||LA12_378=='_'||(LA12_378>='a' && LA12_378<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=56;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='L') ) {
+ switch ( input.LA(2) ) {
+ case 'a':
+ {
+ int LA12_99 = input.LA(3);
+
+ if ( (LA12_99=='y') ) {
+ int LA12_166 = input.LA(4);
+
+ if ( (LA12_166=='e') ) {
+ int LA12_223 = input.LA(5);
+
+ if ( (LA12_223=='r') ) {
+ int LA12_279 = input.LA(6);
+
+ if ( (LA12_279=='C') ) {
+ int LA12_331 = input.LA(7);
+
+ if ( (LA12_331=='o') ) {
+ int LA12_379 = input.LA(8);
+
+ if ( (LA12_379=='n') ) {
+ int LA12_421 = input.LA(9);
+
+ if ( (LA12_421=='n') ) {
+ int LA12_456 = input.LA(10);
+
+ if ( (LA12_456=='e') ) {
+ int LA12_486 = input.LA(11);
+
+ if ( (LA12_486=='c') ) {
+ int LA12_502 = input.LA(12);
+
+ if ( (LA12_502=='t') ) {
+ int LA12_516 = input.LA(13);
+
+ if ( (LA12_516=='i') ) {
+ int LA12_528 = input.LA(14);
+
+ if ( (LA12_528=='o') ) {
+ int LA12_535 = input.LA(15);
+
+ if ( (LA12_535=='n') ) {
+ int LA12_541 = input.LA(16);
+
+ if ( ((LA12_541>='0' && LA12_541<='9')||(LA12_541>='A' && LA12_541<='Z')||LA12_541=='_'||(LA12_541>='a' && LA12_541<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=58;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'o':
+ {
+ int LA12_100 = input.LA(3);
+
+ if ( (LA12_100=='g') ) {
+ int LA12_167 = input.LA(4);
+
+ if ( (LA12_167=='i') ) {
+ int LA12_224 = input.LA(5);
+
+ if ( (LA12_224=='c') ) {
+ int LA12_280 = input.LA(6);
+
+ if ( (LA12_280=='a') ) {
+ int LA12_332 = input.LA(7);
+
+ if ( (LA12_332=='l') ) {
+ switch ( input.LA(8) ) {
+ case 'S':
+ {
+ int LA12_422 = input.LA(9);
+
+ if ( (LA12_422=='y') ) {
+ int LA12_457 = input.LA(10);
+
+ if ( (LA12_457=='s') ) {
+ int LA12_487 = input.LA(11);
+
+ if ( (LA12_487=='t') ) {
+ int LA12_503 = input.LA(12);
+
+ if ( (LA12_503=='e') ) {
+ int LA12_517 = input.LA(13);
+
+ if ( (LA12_517=='m') ) {
+ int LA12_529 = input.LA(14);
+
+ if ( ((LA12_529>='0' && LA12_529<='9')||(LA12_529>='A' && LA12_529<='Z')||LA12_529=='_'||(LA12_529>='a' && LA12_529<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=51;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'T':
+ {
+ int LA12_423 = input.LA(9);
+
+ if ( (LA12_423=='h') ) {
+ int LA12_458 = input.LA(10);
+
+ if ( (LA12_458=='r') ) {
+ int LA12_488 = input.LA(11);
+
+ if ( (LA12_488=='e') ) {
+ int LA12_504 = input.LA(12);
+
+ if ( (LA12_504=='a') ) {
+ int LA12_518 = input.LA(13);
+
+ if ( (LA12_518=='d') ) {
+ int LA12_530 = input.LA(14);
+
+ if ( ((LA12_530>='0' && LA12_530<='9')||(LA12_530>='A' && LA12_530<='Z')||LA12_530=='_'||(LA12_530>='a' && LA12_530<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=54;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='.') ) {
+ alt12=55;
+ }
+ else if ( (LA12_0=='a') ) {
+ switch ( input.LA(2) ) {
+ case 'b':
+ {
+ int LA12_102 = input.LA(3);
+
+ if ( (LA12_102=='s') ) {
+ int LA12_168 = input.LA(4);
+
+ if ( (LA12_168=='t') ) {
+ int LA12_225 = input.LA(5);
+
+ if ( (LA12_225=='r') ) {
+ int LA12_281 = input.LA(6);
+
+ if ( (LA12_281=='a') ) {
+ int LA12_333 = input.LA(7);
+
+ if ( (LA12_333=='c') ) {
+ int LA12_381 = input.LA(8);
+
+ if ( (LA12_381=='t') ) {
+ int LA12_424 = input.LA(9);
+
+ if ( ((LA12_424>='0' && LA12_424<='9')||(LA12_424>='A' && LA12_424<='Z')||LA12_424=='_'||(LA12_424>='a' && LA12_424<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=87;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'c':
+ {
+ int LA12_103 = input.LA(3);
+
+ if ( (LA12_103=='t') ) {
+ int LA12_169 = input.LA(4);
+
+ if ( (LA12_169=='i') ) {
+ int LA12_226 = input.LA(5);
+
+ if ( (LA12_226=='o') ) {
+ int LA12_282 = input.LA(6);
+
+ if ( (LA12_282=='n') ) {
+ int LA12_334 = input.LA(7);
+
+ if ( ((LA12_334>='0' && LA12_334<='9')||(LA12_334>='A' && LA12_334<='Z')||LA12_334=='_'||(LA12_334>='a' && LA12_334<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=75;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_104 = input.LA(3);
+
+ if ( (LA12_104=='d') ) {
+ int LA12_170 = input.LA(4);
+
+ if ( ((LA12_170>='0' && LA12_170<='9')||(LA12_170>='A' && LA12_170<='Z')||LA12_170=='_'||(LA12_170>='a' && LA12_170<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=57;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='T') ) {
+ int LA12_33 = input.LA(2);
+
+ if ( (LA12_33=='r') ) {
+ int LA12_105 = input.LA(3);
+
+ if ( (LA12_105=='a') ) {
+ int LA12_171 = input.LA(4);
+
+ if ( (LA12_171=='n') ) {
+ int LA12_228 = input.LA(5);
+
+ if ( (LA12_228=='s') ) {
+ int LA12_283 = input.LA(6);
+
+ if ( (LA12_283=='i') ) {
+ int LA12_335 = input.LA(7);
+
+ if ( (LA12_335=='t') ) {
+ int LA12_383 = input.LA(8);
+
+ if ( (LA12_383=='i') ) {
+ int LA12_425 = input.LA(9);
+
+ if ( (LA12_425=='o') ) {
+ int LA12_460 = input.LA(10);
+
+ if ( (LA12_460=='n') ) {
+ switch ( input.LA(11) ) {
+ case 'P':
+ {
+ int LA12_505 = input.LA(12);
+
+ if ( (LA12_505=='o') ) {
+ int LA12_519 = input.LA(13);
+
+ if ( (LA12_519=='i') ) {
+ int LA12_531 = input.LA(14);
+
+ if ( (LA12_531=='n') ) {
+ int LA12_538 = input.LA(15);
+
+ if ( (LA12_538=='t') ) {
+ int LA12_542 = input.LA(16);
+
+ if ( ((LA12_542>='0' && LA12_542<='9')||(LA12_542>='A' && LA12_542<='Z')||LA12_542=='_'||(LA12_542>='a' && LA12_542<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=69;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=73;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='E') ) {
+ switch ( input.LA(2) ) {
+ case 'x':
+ {
+ int LA12_106 = input.LA(3);
+
+ if ( (LA12_106=='i') ) {
+ int LA12_172 = input.LA(4);
+
+ if ( (LA12_172=='t') ) {
+ int LA12_229 = input.LA(5);
+
+ if ( (LA12_229=='P') ) {
+ int LA12_284 = input.LA(6);
+
+ if ( (LA12_284=='o') ) {
+ int LA12_336 = input.LA(7);
+
+ if ( (LA12_336=='i') ) {
+ int LA12_384 = input.LA(8);
+
+ if ( (LA12_384=='n') ) {
+ int LA12_426 = input.LA(9);
+
+ if ( (LA12_426=='t') ) {
+ int LA12_461 = input.LA(10);
+
+ if ( ((LA12_461>='0' && LA12_461<='9')||(LA12_461>='A' && LA12_461<='Z')||LA12_461=='_'||(LA12_461>='a' && LA12_461<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=71;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_107 = input.LA(3);
+
+ if ( (LA12_107=='t') ) {
+ int LA12_173 = input.LA(4);
+
+ if ( (LA12_173=='r') ) {
+ int LA12_230 = input.LA(5);
+
+ if ( (LA12_230=='y') ) {
+ int LA12_285 = input.LA(6);
+
+ if ( (LA12_285=='P') ) {
+ int LA12_337 = input.LA(7);
+
+ if ( (LA12_337=='o') ) {
+ int LA12_385 = input.LA(8);
+
+ if ( (LA12_385=='i') ) {
+ int LA12_427 = input.LA(9);
+
+ if ( (LA12_427=='n') ) {
+ int LA12_462 = input.LA(10);
+
+ if ( (LA12_462=='t') ) {
+ int LA12_491 = input.LA(11);
+
+ if ( ((LA12_491>='0' && LA12_491<='9')||(LA12_491>='A' && LA12_491<='Z')||LA12_491=='_'||(LA12_491>='a' && LA12_491<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=70;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='C') ) {
+ int LA12_35 = input.LA(2);
+
+ if ( (LA12_35=='h') ) {
+ int LA12_108 = input.LA(3);
+
+ if ( (LA12_108=='o') ) {
+ int LA12_174 = input.LA(4);
+
+ if ( (LA12_174=='i') ) {
+ int LA12_231 = input.LA(5);
+
+ if ( (LA12_231=='c') ) {
+ int LA12_286 = input.LA(6);
+
+ if ( (LA12_286=='e') ) {
+ int LA12_338 = input.LA(7);
+
+ if ( (LA12_338=='P') ) {
+ int LA12_386 = input.LA(8);
+
+ if ( (LA12_386=='o') ) {
+ int LA12_428 = input.LA(9);
+
+ if ( (LA12_428=='i') ) {
+ int LA12_463 = input.LA(10);
+
+ if ( (LA12_463=='n') ) {
+ int LA12_492 = input.LA(11);
+
+ if ( (LA12_492=='t') ) {
+ int LA12_508 = input.LA(12);
+
+ if ( ((LA12_508>='0' && LA12_508<='9')||(LA12_508>='A' && LA12_508<='Z')||LA12_508=='_'||(LA12_508>='a' && LA12_508<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=72;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='t') ) {
+ int LA12_36 = input.LA(2);
+
+ if ( (LA12_36=='r') ) {
+ int LA12_109 = input.LA(3);
+
+ if ( (LA12_109=='i') ) {
+ int LA12_175 = input.LA(4);
+
+ if ( (LA12_175=='g') ) {
+ int LA12_232 = input.LA(5);
+
+ if ( (LA12_232=='g') ) {
+ int LA12_287 = input.LA(6);
+
+ if ( (LA12_287=='e') ) {
+ int LA12_339 = input.LA(7);
+
+ if ( (LA12_339=='r') ) {
+ int LA12_387 = input.LA(8);
+
+ if ( (LA12_387=='s') ) {
+ int LA12_429 = input.LA(9);
+
+ if ( ((LA12_429>='0' && LA12_429<='9')||(LA12_429>='A' && LA12_429<='Z')||LA12_429=='_'||(LA12_429>='a' && LA12_429<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=76;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='m') ) {
+ int LA12_37 = input.LA(2);
+
+ if ( (LA12_37=='y') ) {
+ int LA12_110 = input.LA(3);
+
+ if ( ((LA12_110>='0' && LA12_110<='9')||(LA12_110>='A' && LA12_110<='Z')||LA12_110=='_'||(LA12_110>='a' && LA12_110<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=79;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='<') ) {
+ alt12=81;
+ }
+ else if ( (LA12_0=='>') ) {
+ alt12=82;
+ }
+ else if ( (LA12_0=='|') ) {
+ alt12=83;
+ }
+ else if ( (LA12_0=='g') ) {
+ int LA12_41 = input.LA(2);
+
+ if ( (LA12_41=='u') ) {
+ int LA12_114 = input.LA(3);
+
+ if ( (LA12_114=='a') ) {
+ int LA12_177 = input.LA(4);
+
+ if ( (LA12_177=='r') ) {
+ int LA12_233 = input.LA(5);
+
+ if ( (LA12_233=='d') ) {
+ int LA12_288 = input.LA(6);
+
+ if ( ((LA12_288>='0' && LA12_288<='9')||(LA12_288>='A' && LA12_288<='Z')||LA12_288=='_'||(LA12_288>='a' && LA12_288<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=84;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='*') ) {
+ alt12=86;
+ }
+ else if ( (LA12_0=='^') ) {
+ int LA12_43 = input.LA(2);
+
+ if ( ((LA12_43>='A' && LA12_43<='Z')||LA12_43=='_'||(LA12_43>='a' && LA12_43<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( ((LA12_0>='F' && LA12_0<='H')||(LA12_0>='J' && LA12_0<='K')||LA12_0=='N'||LA12_0=='Q'||(LA12_0>='U' && LA12_0<='Z')||LA12_0=='_'||LA12_0=='d'||(LA12_0>='j' && LA12_0<='l')||LA12_0=='n'||(LA12_0>='p' && LA12_0<='q')||(LA12_0>='w' && LA12_0<='z')) ) {
+ alt12=90;
+ }
+ else if ( ((LA12_0>='0' && LA12_0<='9')) ) {
+ alt12=91;
+ }
+ else if ( (LA12_0=='\"') ) {
+ int LA12_46 = input.LA(2);
+
+ if ( ((LA12_46>='\u0000' && LA12_46<='\uFFFE')) ) {
+ alt12=92;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( (LA12_0=='\'') ) {
+ int LA12_47 = input.LA(2);
+
+ if ( ((LA12_47>='\u0000' && LA12_47<='\uFFFE')) ) {
+ alt12=92;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( (LA12_0=='/') ) {
+ switch ( input.LA(2) ) {
+ case '*':
+ {
+ alt12=93;
+ }
+ break;
+ case '/':
+ {
+ alt12=94;
+ }
+ break;
+ default:
+ alt12=96;}
+
+ }
+ else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {
+ alt12=95;
+ }
+ else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='#' && LA12_0<='&')||LA12_0=='+'||LA12_0==';'||LA12_0=='='||(LA12_0>='?' && LA12_0<='@')||LA12_0=='\\'||LA12_0=='`'||(LA12_0>='~' && LA12_0<='\uFFFE')) ) {
+ alt12=96;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1:1: Tokens : ( T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );", 12, 0, input);
+
+ throw nvae;
+ }
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:10: T11
+ {
+ mT11();
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:14: T12
+ {
+ mT12();
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:18: T13
+ {
+ mT13();
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:22: T14
+ {
+ mT14();
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:26: T15
+ {
+ mT15();
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:30: T16
+ {
+ mT16();
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:34: T17
+ {
+ mT17();
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:38: T18
+ {
+ mT18();
+
+ }
+ break;
+ case 9 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:42: T19
+ {
+ mT19();
+
+ }
+ break;
+ case 10 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:46: T20
+ {
+ mT20();
+
+ }
+ break;
+ case 11 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:50: T21
+ {
+ mT21();
+
+ }
+ break;
+ case 12 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:54: T22
+ {
+ mT22();
+
+ }
+ break;
+ case 13 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:58: T23
+ {
+ mT23();
+
+ }
+ break;
+ case 14 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:62: T24
+ {
+ mT24();
+
+ }
+ break;
+ case 15 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:66: T25
+ {
+ mT25();
+
+ }
+ break;
+ case 16 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:70: T26
+ {
+ mT26();
+
+ }
+ break;
+ case 17 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:74: T27
+ {
+ mT27();
+
+ }
+ break;
+ case 18 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:78: T28
+ {
+ mT28();
+
+ }
+ break;
+ case 19 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:82: T29
+ {
+ mT29();
+
+ }
+ break;
+ case 20 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:86: T30
+ {
+ mT30();
+
+ }
+ break;
+ case 21 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:90: T31
+ {
+ mT31();
+
+ }
+ break;
+ case 22 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:94: T32
+ {
+ mT32();
+
+ }
+ break;
+ case 23 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:98: T33
+ {
+ mT33();
+
+ }
+ break;
+ case 24 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:102: T34
+ {
+ mT34();
+
+ }
+ break;
+ case 25 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:106: T35
+ {
+ mT35();
+
+ }
+ break;
+ case 26 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:110: T36
+ {
+ mT36();
+
+ }
+ break;
+ case 27 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:114: T37
+ {
+ mT37();
+
+ }
+ break;
+ case 28 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:118: T38
+ {
+ mT38();
+
+ }
+ break;
+ case 29 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:122: T39
+ {
+ mT39();
+
+ }
+ break;
+ case 30 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:126: T40
+ {
+ mT40();
+
+ }
+ break;
+ case 31 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:130: T41
+ {
+ mT41();
+
+ }
+ break;
+ case 32 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:134: T42
+ {
+ mT42();
+
+ }
+ break;
+ case 33 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:138: T43
+ {
+ mT43();
+
+ }
+ break;
+ case 34 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:142: T44
+ {
+ mT44();
+
+ }
+ break;
+ case 35 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:146: T45
+ {
+ mT45();
+
+ }
+ break;
+ case 36 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:150: T46
+ {
+ mT46();
+
+ }
+ break;
+ case 37 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:154: T47
+ {
+ mT47();
+
+ }
+ break;
+ case 38 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:158: T48
+ {
+ mT48();
+
+ }
+ break;
+ case 39 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:162: T49
+ {
+ mT49();
+
+ }
+ break;
+ case 40 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:166: T50
+ {
+ mT50();
+
+ }
+ break;
+ case 41 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:170: T51
+ {
+ mT51();
+
+ }
+ break;
+ case 42 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:174: T52
+ {
+ mT52();
+
+ }
+ break;
+ case 43 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:178: T53
+ {
+ mT53();
+
+ }
+ break;
+ case 44 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:182: T54
+ {
+ mT54();
+
+ }
+ break;
+ case 45 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:186: T55
+ {
+ mT55();
+
+ }
+ break;
+ case 46 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:190: T56
+ {
+ mT56();
+
+ }
+ break;
+ case 47 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:194: T57
+ {
+ mT57();
+
+ }
+ break;
+ case 48 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:198: T58
+ {
+ mT58();
+
+ }
+ break;
+ case 49 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:202: T59
+ {
+ mT59();
+
+ }
+ break;
+ case 50 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:206: T60
+ {
+ mT60();
+
+ }
+ break;
+ case 51 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:210: T61
+ {
+ mT61();
+
+ }
+ break;
+ case 52 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:214: T62
+ {
+ mT62();
+
+ }
+ break;
+ case 53 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:218: T63
+ {
+ mT63();
+
+ }
+ break;
+ case 54 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:222: T64
+ {
+ mT64();
+
+ }
+ break;
+ case 55 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:226: T65
+ {
+ mT65();
+
+ }
+ break;
+ case 56 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:230: T66
+ {
+ mT66();
+
+ }
+ break;
+ case 57 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:234: T67
+ {
+ mT67();
+
+ }
+ break;
+ case 58 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:238: T68
+ {
+ mT68();
+
+ }
+ break;
+ case 59 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:242: T69
+ {
+ mT69();
+
+ }
+ break;
+ case 60 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:246: T70
+ {
+ mT70();
+
+ }
+ break;
+ case 61 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:250: T71
+ {
+ mT71();
+
+ }
+ break;
+ case 62 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:254: T72
+ {
+ mT72();
+
+ }
+ break;
+ case 63 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:258: T73
+ {
+ mT73();
+
+ }
+ break;
+ case 64 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:262: T74
+ {
+ mT74();
+
+ }
+ break;
+ case 65 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:266: T75
+ {
+ mT75();
+
+ }
+ break;
+ case 66 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:270: T76
+ {
+ mT76();
+
+ }
+ break;
+ case 67 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:274: T77
+ {
+ mT77();
+
+ }
+ break;
+ case 68 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:278: T78
+ {
+ mT78();
+
+ }
+ break;
+ case 69 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:282: T79
+ {
+ mT79();
+
+ }
+ break;
+ case 70 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:286: T80
+ {
+ mT80();
+
+ }
+ break;
+ case 71 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:290: T81
+ {
+ mT81();
+
+ }
+ break;
+ case 72 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:294: T82
+ {
+ mT82();
+
+ }
+ break;
+ case 73 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:298: T83
+ {
+ mT83();
+
+ }
+ break;
+ case 74 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:302: T84
+ {
+ mT84();
+
+ }
+ break;
+ case 75 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:306: T85
+ {
+ mT85();
+
+ }
+ break;
+ case 76 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:310: T86
+ {
+ mT86();
+
+ }
+ break;
+ case 77 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:314: T87
+ {
+ mT87();
+
+ }
+ break;
+ case 78 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:318: T88
+ {
+ mT88();
+
+ }
+ break;
+ case 79 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:322: T89
+ {
+ mT89();
+
+ }
+ break;
+ case 80 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:326: T90
+ {
+ mT90();
+
+ }
+ break;
+ case 81 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:330: T91
+ {
+ mT91();
+
+ }
+ break;
+ case 82 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:334: T92
+ {
+ mT92();
+
+ }
+ break;
+ case 83 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:338: T93
+ {
+ mT93();
+
+ }
+ break;
+ case 84 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:342: T94
+ {
+ mT94();
+
+ }
+ break;
+ case 85 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:346: T95
+ {
+ mT95();
+
+ }
+ break;
+ case 86 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:350: T96
+ {
+ mT96();
+
+ }
+ break;
+ case 87 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:354: T97
+ {
+ mT97();
+
+ }
+ break;
+ case 88 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:358: T98
+ {
+ mT98();
+
+ }
+ break;
+ case 89 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:362: T99
+ {
+ mT99();
+
+ }
+ break;
+ case 90 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:366: RULE_ID
+ {
+ mRULE_ID();
+
+ }
+ break;
+ case 91 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:374: RULE_INT
+ {
+ mRULE_INT();
+
+ }
+ break;
+ case 92 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:383: RULE_STRING
+ {
+ mRULE_STRING();
+
+ }
+ break;
+ case 93 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:395: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 94 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:411: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 95 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:427: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 96 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1:435: RULE_ANY_OTHER
+ {
+ mRULE_ANY_OTHER();
+
+ }
+ break;
+
+ }
+
+ }
+
+
+
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomParser.java b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomParser.java
new file mode 100644
index 000000000..25e9a1998
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomParser.java
@@ -0,0 +1,45018 @@
+package org.eclipse.etrice.core.ui.contentassist.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.xtext.parsetree.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.etrice.core.services.RoomGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRoomParser extends AbstractInternalContentAssistParser {
+ public static final String[] tokenNames = new String[] {
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'void'", "'int8'", "'int16'", "'int32'", "'uint8'", "'uint16'", "'uint32'", "'float32'", "'float64'", "'boolean'", "'string'", "'char'", "'RoomModel'", "'{'", "'}'", "':'", "'DataClass'", "'extends'", "'Attribute'", "'['", "']'", "'Operation'", "'('", "')'", "','", "'ProtocolClass'", "'incoming'", "'outgoing'", "'usercode1'", "'usercode2'", "'regular'", "'PortClass'", "'conjugate'", "'Message'", "'usercode'", "'handle'", "'semantics'", "'in'", "'->'", "'out'", "'ActorClass'", "'Interface'", "'Structure'", "'Behavior'", "'Port'", "'external'", "'SAP'", "'SPP'", "'ServiceImplementation'", "'of'", "'LogicalSystem'", "'SubSystemRef'", "'SubSystemClass'", "'LogicalThread'", "'.'", "'Binding'", "'and'", "'LayerConnection'", "'satisfied_by'", "'ref'", "'relay_sap'", "'ActorRef'", "'StateMachine'", "'State'", "'entry'", "'exit'", "'subgraph'", "'RefinedState'", "'TransitionPoint'", "'EntryPoint'", "'ExitPoint'", "'ChoicePoint'", "'Transition'", "'initial'", "'action'", "'triggers'", "'or'", "'cond'", "'my'", "'cp'", "'<'", "'>'", "'|'", "'guard'", "'import'", "'*'", "'abstract'", "'conjugated'", "'handler'"
+ };
+ public static final int RULE_ID=4;
+ public static final int RULE_STRING=6;
+ public static final int RULE_ANY_OTHER=10;
+ public static final int RULE_INT=5;
+ public static final int RULE_WS=9;
+ public static final int RULE_SL_COMMENT=8;
+ public static final int EOF=-1;
+ public static final int RULE_ML_COMMENT=7;
+
+ public InternalRoomParser(TokenStream input) {
+ super(input);
+ }
+
+
+ public String[] getTokenNames() { return tokenNames; }
+ public String getGrammarFileName() { return "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g"; }
+
+
+
+ private RoomGrammarAccess grammarAccess;
+
+ public void setGrammarAccess(RoomGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+
+ @Override
+ protected Grammar getGrammar() {
+ return grammarAccess.getGrammar();
+ }
+
+ @Override
+ protected String getValueForTokenName(String tokenName) {
+ return tokenName;
+ }
+
+
+
+
+ // $ANTLR start entryRuleRoomModel
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:61:1: entryRuleRoomModel : ruleRoomModel EOF ;
+ public final void entryRuleRoomModel() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:62:1: ( ruleRoomModel EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:63:1: ruleRoomModel EOF
+ {
+ before(grammarAccess.getRoomModelRule());
+ pushFollow(FOLLOW_ruleRoomModel_in_entryRuleRoomModel61);
+ ruleRoomModel();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRoomModel68);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleRoomModel
+
+
+ // $ANTLR start ruleRoomModel
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:70:1: ruleRoomModel : ( ( rule__RoomModel__Group__0 ) ) ;
+ public final void ruleRoomModel() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:74:2: ( ( ( rule__RoomModel__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:75:1: ( ( rule__RoomModel__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:75:1: ( ( rule__RoomModel__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:76:1: ( rule__RoomModel__Group__0 )
+ {
+ before(grammarAccess.getRoomModelAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:77:1: ( rule__RoomModel__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:77:2: rule__RoomModel__Group__0
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Group__0_in_ruleRoomModel94);
+ rule__RoomModel__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleRoomModel
+
+
+ // $ANTLR start entryRuleStructureClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:91:1: entryRuleStructureClass : ruleStructureClass EOF ;
+ public final void entryRuleStructureClass() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:92:1: ( ruleStructureClass EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:93:1: ruleStructureClass EOF
+ {
+ before(grammarAccess.getStructureClassRule());
+ pushFollow(FOLLOW_ruleStructureClass_in_entryRuleStructureClass123);
+ ruleStructureClass();
+ _fsp--;
+
+ after(grammarAccess.getStructureClassRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStructureClass130);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleStructureClass
+
+
+ // $ANTLR start ruleStructureClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:100:1: ruleStructureClass : ( ( rule__StructureClass__Alternatives ) ) ;
+ public final void ruleStructureClass() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:104:2: ( ( ( rule__StructureClass__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:105:1: ( ( rule__StructureClass__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:105:1: ( ( rule__StructureClass__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:106:1: ( rule__StructureClass__Alternatives )
+ {
+ before(grammarAccess.getStructureClassAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:107:1: ( rule__StructureClass__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:107:2: rule__StructureClass__Alternatives
+ {
+ pushFollow(FOLLOW_rule__StructureClass__Alternatives_in_ruleStructureClass156);
+ rule__StructureClass__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStructureClassAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleStructureClass
+
+
+ // $ANTLR start entryRuleActorContainerClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:119:1: entryRuleActorContainerClass : ruleActorContainerClass EOF ;
+ public final void entryRuleActorContainerClass() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:120:1: ( ruleActorContainerClass EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:121:1: ruleActorContainerClass EOF
+ {
+ before(grammarAccess.getActorContainerClassRule());
+ pushFollow(FOLLOW_ruleActorContainerClass_in_entryRuleActorContainerClass183);
+ ruleActorContainerClass();
+ _fsp--;
+
+ after(grammarAccess.getActorContainerClassRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorContainerClass190);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleActorContainerClass
+
+
+ // $ANTLR start ruleActorContainerClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:128:1: ruleActorContainerClass : ( ( rule__ActorContainerClass__Alternatives ) ) ;
+ public final void ruleActorContainerClass() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:132:2: ( ( ( rule__ActorContainerClass__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:133:1: ( ( rule__ActorContainerClass__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:133:1: ( ( rule__ActorContainerClass__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:134:1: ( rule__ActorContainerClass__Alternatives )
+ {
+ before(grammarAccess.getActorContainerClassAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:135:1: ( rule__ActorContainerClass__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:135:2: rule__ActorContainerClass__Alternatives
+ {
+ pushFollow(FOLLOW_rule__ActorContainerClass__Alternatives_in_ruleActorContainerClass216);
+ rule__ActorContainerClass__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorContainerClassAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleActorContainerClass
+
+
+ // $ANTLR start entryRuleTypedID
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:147:1: entryRuleTypedID : ruleTypedID EOF ;
+ public final void entryRuleTypedID() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:148:1: ( ruleTypedID EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:149:1: ruleTypedID EOF
+ {
+ before(grammarAccess.getTypedIDRule());
+ pushFollow(FOLLOW_ruleTypedID_in_entryRuleTypedID243);
+ ruleTypedID();
+ _fsp--;
+
+ after(grammarAccess.getTypedIDRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTypedID250);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTypedID
+
+
+ // $ANTLR start ruleTypedID
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:156:1: ruleTypedID : ( ( rule__TypedID__Group__0 ) ) ;
+ public final void ruleTypedID() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:160:2: ( ( ( rule__TypedID__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:161:1: ( ( rule__TypedID__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:161:1: ( ( rule__TypedID__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:162:1: ( rule__TypedID__Group__0 )
+ {
+ before(grammarAccess.getTypedIDAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:163:1: ( rule__TypedID__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:163:2: rule__TypedID__Group__0
+ {
+ pushFollow(FOLLOW_rule__TypedID__Group__0_in_ruleTypedID276);
+ rule__TypedID__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTypedIDAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTypedID
+
+
+ // $ANTLR start entryRuleFreeTypedID
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:175:1: entryRuleFreeTypedID : ruleFreeTypedID EOF ;
+ public final void entryRuleFreeTypedID() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:176:1: ( ruleFreeTypedID EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:177:1: ruleFreeTypedID EOF
+ {
+ before(grammarAccess.getFreeTypedIDRule());
+ pushFollow(FOLLOW_ruleFreeTypedID_in_entryRuleFreeTypedID303);
+ ruleFreeTypedID();
+ _fsp--;
+
+ after(grammarAccess.getFreeTypedIDRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFreeTypedID310);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleFreeTypedID
+
+
+ // $ANTLR start ruleFreeTypedID
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:184:1: ruleFreeTypedID : ( ( rule__FreeTypedID__Group__0 ) ) ;
+ public final void ruleFreeTypedID() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:188:2: ( ( ( rule__FreeTypedID__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:189:1: ( ( rule__FreeTypedID__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:189:1: ( ( rule__FreeTypedID__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:190:1: ( rule__FreeTypedID__Group__0 )
+ {
+ before(grammarAccess.getFreeTypedIDAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:191:1: ( rule__FreeTypedID__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:191:2: rule__FreeTypedID__Group__0
+ {
+ pushFollow(FOLLOW_rule__FreeTypedID__Group__0_in_ruleFreeTypedID336);
+ rule__FreeTypedID__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getFreeTypedIDAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleFreeTypedID
+
+
+ // $ANTLR start entryRuleType
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:203:1: entryRuleType : ruleType EOF ;
+ public final void entryRuleType() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:204:1: ( ruleType EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:205:1: ruleType EOF
+ {
+ before(grammarAccess.getTypeRule());
+ pushFollow(FOLLOW_ruleType_in_entryRuleType363);
+ ruleType();
+ _fsp--;
+
+ after(grammarAccess.getTypeRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleType370);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleType
+
+
+ // $ANTLR start ruleType
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:212:1: ruleType : ( ( rule__Type__Alternatives ) ) ;
+ public final void ruleType() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:216:2: ( ( ( rule__Type__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:217:1: ( ( rule__Type__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:217:1: ( ( rule__Type__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:218:1: ( rule__Type__Alternatives )
+ {
+ before(grammarAccess.getTypeAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:219:1: ( rule__Type__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:219:2: rule__Type__Alternatives
+ {
+ pushFollow(FOLLOW_rule__Type__Alternatives_in_ruleType396);
+ rule__Type__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTypeAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleType
+
+
+ // $ANTLR start entryRuleFreeType
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:231:1: entryRuleFreeType : ruleFreeType EOF ;
+ public final void entryRuleFreeType() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:232:1: ( ruleFreeType EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:233:1: ruleFreeType EOF
+ {
+ before(grammarAccess.getFreeTypeRule());
+ pushFollow(FOLLOW_ruleFreeType_in_entryRuleFreeType423);
+ ruleFreeType();
+ _fsp--;
+
+ after(grammarAccess.getFreeTypeRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFreeType430);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleFreeType
+
+
+ // $ANTLR start ruleFreeType
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:240:1: ruleFreeType : ( ( rule__FreeType__Alternatives ) ) ;
+ public final void ruleFreeType() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:244:2: ( ( ( rule__FreeType__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:245:1: ( ( rule__FreeType__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:245:1: ( ( rule__FreeType__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:246:1: ( rule__FreeType__Alternatives )
+ {
+ before(grammarAccess.getFreeTypeAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:247:1: ( rule__FreeType__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:247:2: rule__FreeType__Alternatives
+ {
+ pushFollow(FOLLOW_rule__FreeType__Alternatives_in_ruleFreeType456);
+ rule__FreeType__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getFreeTypeAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleFreeType
+
+
+ // $ANTLR start entryRuleDataClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:259:1: entryRuleDataClass : ruleDataClass EOF ;
+ public final void entryRuleDataClass() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:260:1: ( ruleDataClass EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:261:1: ruleDataClass EOF
+ {
+ before(grammarAccess.getDataClassRule());
+ pushFollow(FOLLOW_ruleDataClass_in_entryRuleDataClass483);
+ ruleDataClass();
+ _fsp--;
+
+ after(grammarAccess.getDataClassRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDataClass490);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleDataClass
+
+
+ // $ANTLR start ruleDataClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:268:1: ruleDataClass : ( ( rule__DataClass__Group__0 ) ) ;
+ public final void ruleDataClass() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:272:2: ( ( ( rule__DataClass__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:273:1: ( ( rule__DataClass__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:273:1: ( ( rule__DataClass__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:274:1: ( rule__DataClass__Group__0 )
+ {
+ before(grammarAccess.getDataClassAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:275:1: ( rule__DataClass__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:275:2: rule__DataClass__Group__0
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__0_in_ruleDataClass516);
+ rule__DataClass__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getDataClassAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleDataClass
+
+
+ // $ANTLR start entryRuleAttribute
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:287:1: entryRuleAttribute : ruleAttribute EOF ;
+ public final void entryRuleAttribute() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:288:1: ( ruleAttribute EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:289:1: ruleAttribute EOF
+ {
+ before(grammarAccess.getAttributeRule());
+ pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute543);
+ ruleAttribute();
+ _fsp--;
+
+ after(grammarAccess.getAttributeRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute550);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleAttribute
+
+
+ // $ANTLR start ruleAttribute
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:296:1: ruleAttribute : ( ( rule__Attribute__Group__0 ) ) ;
+ public final void ruleAttribute() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:300:2: ( ( ( rule__Attribute__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:301:1: ( ( rule__Attribute__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:301:1: ( ( rule__Attribute__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:302:1: ( rule__Attribute__Group__0 )
+ {
+ before(grammarAccess.getAttributeAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:303:1: ( rule__Attribute__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:303:2: rule__Attribute__Group__0
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group__0_in_ruleAttribute576);
+ rule__Attribute__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getAttributeAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleAttribute
+
+
+ // $ANTLR start entryRuleOperation
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:315:1: entryRuleOperation : ruleOperation EOF ;
+ public final void entryRuleOperation() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:316:1: ( ruleOperation EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:317:1: ruleOperation EOF
+ {
+ before(grammarAccess.getOperationRule());
+ pushFollow(FOLLOW_ruleOperation_in_entryRuleOperation603);
+ ruleOperation();
+ _fsp--;
+
+ after(grammarAccess.getOperationRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleOperation610);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleOperation
+
+
+ // $ANTLR start ruleOperation
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:324:1: ruleOperation : ( ( rule__Operation__Group__0 ) ) ;
+ public final void ruleOperation() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:328:2: ( ( ( rule__Operation__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:329:1: ( ( rule__Operation__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:329:1: ( ( rule__Operation__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:330:1: ( rule__Operation__Group__0 )
+ {
+ before(grammarAccess.getOperationAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:331:1: ( rule__Operation__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:331:2: rule__Operation__Group__0
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__0_in_ruleOperation636);
+ rule__Operation__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getOperationAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleOperation
+
+
+ // $ANTLR start entryRuleProtocolClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:343:1: entryRuleProtocolClass : ruleProtocolClass EOF ;
+ public final void entryRuleProtocolClass() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:344:1: ( ruleProtocolClass EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:345:1: ruleProtocolClass EOF
+ {
+ before(grammarAccess.getProtocolClassRule());
+ pushFollow(FOLLOW_ruleProtocolClass_in_entryRuleProtocolClass663);
+ ruleProtocolClass();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleProtocolClass670);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleProtocolClass
+
+
+ // $ANTLR start ruleProtocolClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:352:1: ruleProtocolClass : ( ( rule__ProtocolClass__Group__0 ) ) ;
+ public final void ruleProtocolClass() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:356:2: ( ( ( rule__ProtocolClass__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:357:1: ( ( rule__ProtocolClass__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:357:1: ( ( rule__ProtocolClass__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:358:1: ( rule__ProtocolClass__Group__0 )
+ {
+ before(grammarAccess.getProtocolClassAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:359:1: ( rule__ProtocolClass__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:359:2: rule__ProtocolClass__Group__0
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__0_in_ruleProtocolClass696);
+ rule__ProtocolClass__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleProtocolClass
+
+
+ // $ANTLR start entryRuleMessage
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:371:1: entryRuleMessage : ruleMessage EOF ;
+ public final void entryRuleMessage() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:372:1: ( ruleMessage EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:373:1: ruleMessage EOF
+ {
+ before(grammarAccess.getMessageRule());
+ pushFollow(FOLLOW_ruleMessage_in_entryRuleMessage723);
+ ruleMessage();
+ _fsp--;
+
+ after(grammarAccess.getMessageRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMessage730);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleMessage
+
+
+ // $ANTLR start ruleMessage
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:380:1: ruleMessage : ( ( rule__Message__Group__0 ) ) ;
+ public final void ruleMessage() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:384:2: ( ( ( rule__Message__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:385:1: ( ( rule__Message__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:385:1: ( ( rule__Message__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:386:1: ( rule__Message__Group__0 )
+ {
+ before(grammarAccess.getMessageAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:387:1: ( rule__Message__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:387:2: rule__Message__Group__0
+ {
+ pushFollow(FOLLOW_rule__Message__Group__0_in_ruleMessage756);
+ rule__Message__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleMessage
+
+
+ // $ANTLR start entryRulePortClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:399:1: entryRulePortClass : rulePortClass EOF ;
+ public final void entryRulePortClass() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:400:1: ( rulePortClass EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:401:1: rulePortClass EOF
+ {
+ before(grammarAccess.getPortClassRule());
+ pushFollow(FOLLOW_rulePortClass_in_entryRulePortClass783);
+ rulePortClass();
+ _fsp--;
+
+ after(grammarAccess.getPortClassRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRulePortClass790);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRulePortClass
+
+
+ // $ANTLR start rulePortClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:408:1: rulePortClass : ( ( rule__PortClass__Group__0 ) ) ;
+ public final void rulePortClass() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:412:2: ( ( ( rule__PortClass__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:413:1: ( ( rule__PortClass__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:413:1: ( ( rule__PortClass__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:414:1: ( rule__PortClass__Group__0 )
+ {
+ before(grammarAccess.getPortClassAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:415:1: ( rule__PortClass__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:415:2: rule__PortClass__Group__0
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group__0_in_rulePortClass816);
+ rule__PortClass__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortClassAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rulePortClass
+
+
+ // $ANTLR start entryRuleMessageHandler
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:427:1: entryRuleMessageHandler : ruleMessageHandler EOF ;
+ public final void entryRuleMessageHandler() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:428:1: ( ruleMessageHandler EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:429:1: ruleMessageHandler EOF
+ {
+ before(grammarAccess.getMessageHandlerRule());
+ pushFollow(FOLLOW_ruleMessageHandler_in_entryRuleMessageHandler843);
+ ruleMessageHandler();
+ _fsp--;
+
+ after(grammarAccess.getMessageHandlerRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMessageHandler850);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleMessageHandler
+
+
+ // $ANTLR start ruleMessageHandler
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:436:1: ruleMessageHandler : ( ( rule__MessageHandler__Group__0 ) ) ;
+ public final void ruleMessageHandler() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:440:2: ( ( ( rule__MessageHandler__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:441:1: ( ( rule__MessageHandler__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:441:1: ( ( rule__MessageHandler__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:442:1: ( rule__MessageHandler__Group__0 )
+ {
+ before(grammarAccess.getMessageHandlerAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:443:1: ( rule__MessageHandler__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:443:2: rule__MessageHandler__Group__0
+ {
+ pushFollow(FOLLOW_rule__MessageHandler__Group__0_in_ruleMessageHandler876);
+ rule__MessageHandler__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageHandlerAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleMessageHandler
+
+
+ // $ANTLR start entryRuleProtocolSemantics
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:455:1: entryRuleProtocolSemantics : ruleProtocolSemantics EOF ;
+ public final void entryRuleProtocolSemantics() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:456:1: ( ruleProtocolSemantics EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:457:1: ruleProtocolSemantics EOF
+ {
+ before(grammarAccess.getProtocolSemanticsRule());
+ pushFollow(FOLLOW_ruleProtocolSemantics_in_entryRuleProtocolSemantics903);
+ ruleProtocolSemantics();
+ _fsp--;
+
+ after(grammarAccess.getProtocolSemanticsRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleProtocolSemantics910);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleProtocolSemantics
+
+
+ // $ANTLR start ruleProtocolSemantics
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:464:1: ruleProtocolSemantics : ( ( rule__ProtocolSemantics__Group__0 ) ) ;
+ public final void ruleProtocolSemantics() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:468:2: ( ( ( rule__ProtocolSemantics__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:469:1: ( ( rule__ProtocolSemantics__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:469:1: ( ( rule__ProtocolSemantics__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:470:1: ( rule__ProtocolSemantics__Group__0 )
+ {
+ before(grammarAccess.getProtocolSemanticsAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:471:1: ( rule__ProtocolSemantics__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:471:2: rule__ProtocolSemantics__Group__0
+ {
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__0_in_ruleProtocolSemantics936);
+ rule__ProtocolSemantics__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolSemanticsAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleProtocolSemantics
+
+
+ // $ANTLR start entryRuleSemanticsRule
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:483:1: entryRuleSemanticsRule : ruleSemanticsRule EOF ;
+ public final void entryRuleSemanticsRule() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:484:1: ( ruleSemanticsRule EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:485:1: ruleSemanticsRule EOF
+ {
+ before(grammarAccess.getSemanticsRuleRule());
+ pushFollow(FOLLOW_ruleSemanticsRule_in_entryRuleSemanticsRule963);
+ ruleSemanticsRule();
+ _fsp--;
+
+ after(grammarAccess.getSemanticsRuleRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSemanticsRule970);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSemanticsRule
+
+
+ // $ANTLR start ruleSemanticsRule
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:492:1: ruleSemanticsRule : ( ( rule__SemanticsRule__Alternatives ) ) ;
+ public final void ruleSemanticsRule() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:496:2: ( ( ( rule__SemanticsRule__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:497:1: ( ( rule__SemanticsRule__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:497:1: ( ( rule__SemanticsRule__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:498:1: ( rule__SemanticsRule__Alternatives )
+ {
+ before(grammarAccess.getSemanticsRuleAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:499:1: ( rule__SemanticsRule__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:499:2: rule__SemanticsRule__Alternatives
+ {
+ pushFollow(FOLLOW_rule__SemanticsRule__Alternatives_in_ruleSemanticsRule996);
+ rule__SemanticsRule__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSemanticsRuleAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSemanticsRule
+
+
+ // $ANTLR start entryRuleSemanticsInRule
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:511:1: entryRuleSemanticsInRule : ruleSemanticsInRule EOF ;
+ public final void entryRuleSemanticsInRule() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:512:1: ( ruleSemanticsInRule EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:513:1: ruleSemanticsInRule EOF
+ {
+ before(grammarAccess.getSemanticsInRuleRule());
+ pushFollow(FOLLOW_ruleSemanticsInRule_in_entryRuleSemanticsInRule1023);
+ ruleSemanticsInRule();
+ _fsp--;
+
+ after(grammarAccess.getSemanticsInRuleRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSemanticsInRule1030);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSemanticsInRule
+
+
+ // $ANTLR start ruleSemanticsInRule
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:520:1: ruleSemanticsInRule : ( ( rule__SemanticsInRule__Group__0 ) ) ;
+ public final void ruleSemanticsInRule() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:524:2: ( ( ( rule__SemanticsInRule__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:525:1: ( ( rule__SemanticsInRule__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:525:1: ( ( rule__SemanticsInRule__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:526:1: ( rule__SemanticsInRule__Group__0 )
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:527:1: ( rule__SemanticsInRule__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:527:2: rule__SemanticsInRule__Group__0
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__0_in_ruleSemanticsInRule1056);
+ rule__SemanticsInRule__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSemanticsInRuleAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSemanticsInRule
+
+
+ // $ANTLR start entryRuleSemanticsOutRule
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:539:1: entryRuleSemanticsOutRule : ruleSemanticsOutRule EOF ;
+ public final void entryRuleSemanticsOutRule() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:540:1: ( ruleSemanticsOutRule EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:541:1: ruleSemanticsOutRule EOF
+ {
+ before(grammarAccess.getSemanticsOutRuleRule());
+ pushFollow(FOLLOW_ruleSemanticsOutRule_in_entryRuleSemanticsOutRule1083);
+ ruleSemanticsOutRule();
+ _fsp--;
+
+ after(grammarAccess.getSemanticsOutRuleRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSemanticsOutRule1090);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSemanticsOutRule
+
+
+ // $ANTLR start ruleSemanticsOutRule
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:548:1: ruleSemanticsOutRule : ( ( rule__SemanticsOutRule__Group__0 ) ) ;
+ public final void ruleSemanticsOutRule() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:552:2: ( ( ( rule__SemanticsOutRule__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:553:1: ( ( rule__SemanticsOutRule__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:553:1: ( ( rule__SemanticsOutRule__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:554:1: ( rule__SemanticsOutRule__Group__0 )
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:555:1: ( rule__SemanticsOutRule__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:555:2: rule__SemanticsOutRule__Group__0
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__0_in_ruleSemanticsOutRule1116);
+ rule__SemanticsOutRule__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSemanticsOutRuleAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSemanticsOutRule
+
+
+ // $ANTLR start entryRuleActorClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:567:1: entryRuleActorClass : ruleActorClass EOF ;
+ public final void entryRuleActorClass() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:568:1: ( ruleActorClass EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:569:1: ruleActorClass EOF
+ {
+ before(grammarAccess.getActorClassRule());
+ pushFollow(FOLLOW_ruleActorClass_in_entryRuleActorClass1143);
+ ruleActorClass();
+ _fsp--;
+
+ after(grammarAccess.getActorClassRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorClass1150);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleActorClass
+
+
+ // $ANTLR start ruleActorClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:576:1: ruleActorClass : ( ( rule__ActorClass__Group__0 ) ) ;
+ public final void ruleActorClass() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:580:2: ( ( ( rule__ActorClass__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:581:1: ( ( rule__ActorClass__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:581:1: ( ( rule__ActorClass__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:582:1: ( rule__ActorClass__Group__0 )
+ {
+ before(grammarAccess.getActorClassAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:583:1: ( rule__ActorClass__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:583:2: rule__ActorClass__Group__0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__0_in_ruleActorClass1176);
+ rule__ActorClass__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleActorClass
+
+
+ // $ANTLR start entryRulePort
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:597:1: entryRulePort : rulePort EOF ;
+ public final void entryRulePort() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:598:1: ( rulePort EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:599:1: rulePort EOF
+ {
+ before(grammarAccess.getPortRule());
+ pushFollow(FOLLOW_rulePort_in_entryRulePort1205);
+ rulePort();
+ _fsp--;
+
+ after(grammarAccess.getPortRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRulePort1212);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRulePort
+
+
+ // $ANTLR start rulePort
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:606:1: rulePort : ( ( rule__Port__Group__0 ) ) ;
+ public final void rulePort() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:610:2: ( ( ( rule__Port__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:611:1: ( ( rule__Port__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:611:1: ( ( rule__Port__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:612:1: ( rule__Port__Group__0 )
+ {
+ before(grammarAccess.getPortAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:613:1: ( rule__Port__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:613:2: rule__Port__Group__0
+ {
+ pushFollow(FOLLOW_rule__Port__Group__0_in_rulePort1238);
+ rule__Port__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rulePort
+
+
+ // $ANTLR start entryRuleExternalPort
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:625:1: entryRuleExternalPort : ruleExternalPort EOF ;
+ public final void entryRuleExternalPort() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:626:1: ( ruleExternalPort EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:627:1: ruleExternalPort EOF
+ {
+ before(grammarAccess.getExternalPortRule());
+ pushFollow(FOLLOW_ruleExternalPort_in_entryRuleExternalPort1265);
+ ruleExternalPort();
+ _fsp--;
+
+ after(grammarAccess.getExternalPortRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleExternalPort1272);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleExternalPort
+
+
+ // $ANTLR start ruleExternalPort
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:634:1: ruleExternalPort : ( ( rule__ExternalPort__Group__0 ) ) ;
+ public final void ruleExternalPort() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:638:2: ( ( ( rule__ExternalPort__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:639:1: ( ( rule__ExternalPort__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:639:1: ( ( rule__ExternalPort__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:640:1: ( rule__ExternalPort__Group__0 )
+ {
+ before(grammarAccess.getExternalPortAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:641:1: ( rule__ExternalPort__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:641:2: rule__ExternalPort__Group__0
+ {
+ pushFollow(FOLLOW_rule__ExternalPort__Group__0_in_ruleExternalPort1298);
+ rule__ExternalPort__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getExternalPortAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleExternalPort
+
+
+ // $ANTLR start entryRuleSAPRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:653:1: entryRuleSAPRef : ruleSAPRef EOF ;
+ public final void entryRuleSAPRef() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:654:1: ( ruleSAPRef EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:655:1: ruleSAPRef EOF
+ {
+ before(grammarAccess.getSAPRefRule());
+ pushFollow(FOLLOW_ruleSAPRef_in_entryRuleSAPRef1325);
+ ruleSAPRef();
+ _fsp--;
+
+ after(grammarAccess.getSAPRefRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSAPRef1332);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSAPRef
+
+
+ // $ANTLR start ruleSAPRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:662:1: ruleSAPRef : ( ( rule__SAPRef__Group__0 ) ) ;
+ public final void ruleSAPRef() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:666:2: ( ( ( rule__SAPRef__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:667:1: ( ( rule__SAPRef__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:667:1: ( ( rule__SAPRef__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:668:1: ( rule__SAPRef__Group__0 )
+ {
+ before(grammarAccess.getSAPRefAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:669:1: ( rule__SAPRef__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:669:2: rule__SAPRef__Group__0
+ {
+ pushFollow(FOLLOW_rule__SAPRef__Group__0_in_ruleSAPRef1358);
+ rule__SAPRef__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSAPRefAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSAPRef
+
+
+ // $ANTLR start entryRuleSPPRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:681:1: entryRuleSPPRef : ruleSPPRef EOF ;
+ public final void entryRuleSPPRef() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:682:1: ( ruleSPPRef EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:683:1: ruleSPPRef EOF
+ {
+ before(grammarAccess.getSPPRefRule());
+ pushFollow(FOLLOW_ruleSPPRef_in_entryRuleSPPRef1385);
+ ruleSPPRef();
+ _fsp--;
+
+ after(grammarAccess.getSPPRefRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSPPRef1392);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSPPRef
+
+
+ // $ANTLR start ruleSPPRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:690:1: ruleSPPRef : ( ( rule__SPPRef__Group__0 ) ) ;
+ public final void ruleSPPRef() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:694:2: ( ( ( rule__SPPRef__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:695:1: ( ( rule__SPPRef__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:695:1: ( ( rule__SPPRef__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:696:1: ( rule__SPPRef__Group__0 )
+ {
+ before(grammarAccess.getSPPRefAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:697:1: ( rule__SPPRef__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:697:2: rule__SPPRef__Group__0
+ {
+ pushFollow(FOLLOW_rule__SPPRef__Group__0_in_ruleSPPRef1418);
+ rule__SPPRef__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSPPRefAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSPPRef
+
+
+ // $ANTLR start entryRuleServiceImplementation
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:709:1: entryRuleServiceImplementation : ruleServiceImplementation EOF ;
+ public final void entryRuleServiceImplementation() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:710:1: ( ruleServiceImplementation EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:711:1: ruleServiceImplementation EOF
+ {
+ before(grammarAccess.getServiceImplementationRule());
+ pushFollow(FOLLOW_ruleServiceImplementation_in_entryRuleServiceImplementation1445);
+ ruleServiceImplementation();
+ _fsp--;
+
+ after(grammarAccess.getServiceImplementationRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleServiceImplementation1452);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleServiceImplementation
+
+
+ // $ANTLR start ruleServiceImplementation
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:718:1: ruleServiceImplementation : ( ( rule__ServiceImplementation__Group__0 ) ) ;
+ public final void ruleServiceImplementation() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:722:2: ( ( ( rule__ServiceImplementation__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:723:1: ( ( rule__ServiceImplementation__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:723:1: ( ( rule__ServiceImplementation__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:724:1: ( rule__ServiceImplementation__Group__0 )
+ {
+ before(grammarAccess.getServiceImplementationAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:725:1: ( rule__ServiceImplementation__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:725:2: rule__ServiceImplementation__Group__0
+ {
+ pushFollow(FOLLOW_rule__ServiceImplementation__Group__0_in_ruleServiceImplementation1478);
+ rule__ServiceImplementation__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getServiceImplementationAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleServiceImplementation
+
+
+ // $ANTLR start entryRuleLogicalSystem
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:737:1: entryRuleLogicalSystem : ruleLogicalSystem EOF ;
+ public final void entryRuleLogicalSystem() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:738:1: ( ruleLogicalSystem EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:739:1: ruleLogicalSystem EOF
+ {
+ before(grammarAccess.getLogicalSystemRule());
+ pushFollow(FOLLOW_ruleLogicalSystem_in_entryRuleLogicalSystem1505);
+ ruleLogicalSystem();
+ _fsp--;
+
+ after(grammarAccess.getLogicalSystemRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleLogicalSystem1512);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleLogicalSystem
+
+
+ // $ANTLR start ruleLogicalSystem
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:746:1: ruleLogicalSystem : ( ( rule__LogicalSystem__Group__0 ) ) ;
+ public final void ruleLogicalSystem() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:750:2: ( ( ( rule__LogicalSystem__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:751:1: ( ( rule__LogicalSystem__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:751:1: ( ( rule__LogicalSystem__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:752:1: ( rule__LogicalSystem__Group__0 )
+ {
+ before(grammarAccess.getLogicalSystemAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:753:1: ( rule__LogicalSystem__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:753:2: rule__LogicalSystem__Group__0
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__0_in_ruleLogicalSystem1538);
+ rule__LogicalSystem__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLogicalSystemAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleLogicalSystem
+
+
+ // $ANTLR start entryRuleSubSystemRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:767:1: entryRuleSubSystemRef : ruleSubSystemRef EOF ;
+ public final void entryRuleSubSystemRef() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:768:1: ( ruleSubSystemRef EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:769:1: ruleSubSystemRef EOF
+ {
+ before(grammarAccess.getSubSystemRefRule());
+ pushFollow(FOLLOW_ruleSubSystemRef_in_entryRuleSubSystemRef1567);
+ ruleSubSystemRef();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemRefRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSubSystemRef1574);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSubSystemRef
+
+
+ // $ANTLR start ruleSubSystemRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:776:1: ruleSubSystemRef : ( ( rule__SubSystemRef__Group__0 ) ) ;
+ public final void ruleSubSystemRef() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:780:2: ( ( ( rule__SubSystemRef__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:781:1: ( ( rule__SubSystemRef__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:781:1: ( ( rule__SubSystemRef__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:782:1: ( rule__SubSystemRef__Group__0 )
+ {
+ before(grammarAccess.getSubSystemRefAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:783:1: ( rule__SubSystemRef__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:783:2: rule__SubSystemRef__Group__0
+ {
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__0_in_ruleSubSystemRef1600);
+ rule__SubSystemRef__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubSystemRefAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSubSystemRef
+
+
+ // $ANTLR start entryRuleSubSystemClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:795:1: entryRuleSubSystemClass : ruleSubSystemClass EOF ;
+ public final void entryRuleSubSystemClass() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:796:1: ( ruleSubSystemClass EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:797:1: ruleSubSystemClass EOF
+ {
+ before(grammarAccess.getSubSystemClassRule());
+ pushFollow(FOLLOW_ruleSubSystemClass_in_entryRuleSubSystemClass1627);
+ ruleSubSystemClass();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemClassRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSubSystemClass1634);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSubSystemClass
+
+
+ // $ANTLR start ruleSubSystemClass
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:804:1: ruleSubSystemClass : ( ( rule__SubSystemClass__Group__0 ) ) ;
+ public final void ruleSubSystemClass() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:808:2: ( ( ( rule__SubSystemClass__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:809:1: ( ( rule__SubSystemClass__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:809:1: ( ( rule__SubSystemClass__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:810:1: ( rule__SubSystemClass__Group__0 )
+ {
+ before(grammarAccess.getSubSystemClassAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:811:1: ( rule__SubSystemClass__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:811:2: rule__SubSystemClass__Group__0
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__0_in_ruleSubSystemClass1660);
+ rule__SubSystemClass__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubSystemClassAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSubSystemClass
+
+
+ // $ANTLR start entryRuleLogicalThread
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:823:1: entryRuleLogicalThread : ruleLogicalThread EOF ;
+ public final void entryRuleLogicalThread() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:824:1: ( ruleLogicalThread EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:825:1: ruleLogicalThread EOF
+ {
+ before(grammarAccess.getLogicalThreadRule());
+ pushFollow(FOLLOW_ruleLogicalThread_in_entryRuleLogicalThread1687);
+ ruleLogicalThread();
+ _fsp--;
+
+ after(grammarAccess.getLogicalThreadRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleLogicalThread1694);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleLogicalThread
+
+
+ // $ANTLR start ruleLogicalThread
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:832:1: ruleLogicalThread : ( ( rule__LogicalThread__Group__0 ) ) ;
+ public final void ruleLogicalThread() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:836:2: ( ( ( rule__LogicalThread__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:837:1: ( ( rule__LogicalThread__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:837:1: ( ( rule__LogicalThread__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:838:1: ( rule__LogicalThread__Group__0 )
+ {
+ before(grammarAccess.getLogicalThreadAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:839:1: ( rule__LogicalThread__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:839:2: rule__LogicalThread__Group__0
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group__0_in_ruleLogicalThread1720);
+ rule__LogicalThread__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLogicalThreadAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleLogicalThread
+
+
+ // $ANTLR start entryRuleActorInstancePath
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:851:1: entryRuleActorInstancePath : ruleActorInstancePath EOF ;
+ public final void entryRuleActorInstancePath() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:852:1: ( ruleActorInstancePath EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:853:1: ruleActorInstancePath EOF
+ {
+ before(grammarAccess.getActorInstancePathRule());
+ pushFollow(FOLLOW_ruleActorInstancePath_in_entryRuleActorInstancePath1747);
+ ruleActorInstancePath();
+ _fsp--;
+
+ after(grammarAccess.getActorInstancePathRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorInstancePath1754);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleActorInstancePath
+
+
+ // $ANTLR start ruleActorInstancePath
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:860:1: ruleActorInstancePath : ( ( rule__ActorInstancePath__Group__0 ) ) ;
+ public final void ruleActorInstancePath() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:864:2: ( ( ( rule__ActorInstancePath__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:865:1: ( ( rule__ActorInstancePath__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:865:1: ( ( rule__ActorInstancePath__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:866:1: ( rule__ActorInstancePath__Group__0 )
+ {
+ before(grammarAccess.getActorInstancePathAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:867:1: ( rule__ActorInstancePath__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:867:2: rule__ActorInstancePath__Group__0
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group__0_in_ruleActorInstancePath1780);
+ rule__ActorInstancePath__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorInstancePathAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleActorInstancePath
+
+
+ // $ANTLR start entryRuleBinding
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:879:1: entryRuleBinding : ruleBinding EOF ;
+ public final void entryRuleBinding() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:880:1: ( ruleBinding EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:881:1: ruleBinding EOF
+ {
+ before(grammarAccess.getBindingRule());
+ pushFollow(FOLLOW_ruleBinding_in_entryRuleBinding1807);
+ ruleBinding();
+ _fsp--;
+
+ after(grammarAccess.getBindingRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBinding1814);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleBinding
+
+
+ // $ANTLR start ruleBinding
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:888:1: ruleBinding : ( ( rule__Binding__Group__0 ) ) ;
+ public final void ruleBinding() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:892:2: ( ( ( rule__Binding__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:893:1: ( ( rule__Binding__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:893:1: ( ( rule__Binding__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:894:1: ( rule__Binding__Group__0 )
+ {
+ before(grammarAccess.getBindingAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:895:1: ( rule__Binding__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:895:2: rule__Binding__Group__0
+ {
+ pushFollow(FOLLOW_rule__Binding__Group__0_in_ruleBinding1840);
+ rule__Binding__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBindingAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleBinding
+
+
+ // $ANTLR start entryRuleBindingEndPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:907:1: entryRuleBindingEndPoint : ruleBindingEndPoint EOF ;
+ public final void entryRuleBindingEndPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:908:1: ( ruleBindingEndPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:909:1: ruleBindingEndPoint EOF
+ {
+ before(grammarAccess.getBindingEndPointRule());
+ pushFollow(FOLLOW_ruleBindingEndPoint_in_entryRuleBindingEndPoint1867);
+ ruleBindingEndPoint();
+ _fsp--;
+
+ after(grammarAccess.getBindingEndPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBindingEndPoint1874);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleBindingEndPoint
+
+
+ // $ANTLR start ruleBindingEndPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:916:1: ruleBindingEndPoint : ( ( rule__BindingEndPoint__Group__0 ) ) ;
+ public final void ruleBindingEndPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:920:2: ( ( ( rule__BindingEndPoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:921:1: ( ( rule__BindingEndPoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:921:1: ( ( rule__BindingEndPoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:922:1: ( rule__BindingEndPoint__Group__0 )
+ {
+ before(grammarAccess.getBindingEndPointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:923:1: ( rule__BindingEndPoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:923:2: rule__BindingEndPoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group__0_in_ruleBindingEndPoint1900);
+ rule__BindingEndPoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBindingEndPointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleBindingEndPoint
+
+
+ // $ANTLR start entryRuleLayerConnection
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:935:1: entryRuleLayerConnection : ruleLayerConnection EOF ;
+ public final void entryRuleLayerConnection() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:936:1: ( ruleLayerConnection EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:937:1: ruleLayerConnection EOF
+ {
+ before(grammarAccess.getLayerConnectionRule());
+ pushFollow(FOLLOW_ruleLayerConnection_in_entryRuleLayerConnection1927);
+ ruleLayerConnection();
+ _fsp--;
+
+ after(grammarAccess.getLayerConnectionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleLayerConnection1934);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleLayerConnection
+
+
+ // $ANTLR start ruleLayerConnection
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:944:1: ruleLayerConnection : ( ( rule__LayerConnection__Group__0 ) ) ;
+ public final void ruleLayerConnection() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:948:2: ( ( ( rule__LayerConnection__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:949:1: ( ( rule__LayerConnection__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:949:1: ( ( rule__LayerConnection__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:950:1: ( rule__LayerConnection__Group__0 )
+ {
+ before(grammarAccess.getLayerConnectionAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:951:1: ( rule__LayerConnection__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:951:2: rule__LayerConnection__Group__0
+ {
+ pushFollow(FOLLOW_rule__LayerConnection__Group__0_in_ruleLayerConnection1960);
+ rule__LayerConnection__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLayerConnectionAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleLayerConnection
+
+
+ // $ANTLR start entryRuleSAPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:963:1: entryRuleSAPoint : ruleSAPoint EOF ;
+ public final void entryRuleSAPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:964:1: ( ruleSAPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:965:1: ruleSAPoint EOF
+ {
+ before(grammarAccess.getSAPointRule());
+ pushFollow(FOLLOW_ruleSAPoint_in_entryRuleSAPoint1987);
+ ruleSAPoint();
+ _fsp--;
+
+ after(grammarAccess.getSAPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSAPoint1994);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSAPoint
+
+
+ // $ANTLR start ruleSAPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:972:1: ruleSAPoint : ( ( rule__SAPoint__Alternatives ) ) ;
+ public final void ruleSAPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:976:2: ( ( ( rule__SAPoint__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:977:1: ( ( rule__SAPoint__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:977:1: ( ( rule__SAPoint__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:978:1: ( rule__SAPoint__Alternatives )
+ {
+ before(grammarAccess.getSAPointAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:979:1: ( rule__SAPoint__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:979:2: rule__SAPoint__Alternatives
+ {
+ pushFollow(FOLLOW_rule__SAPoint__Alternatives_in_ruleSAPoint2020);
+ rule__SAPoint__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSAPointAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSAPoint
+
+
+ // $ANTLR start entryRuleRefSAPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:991:1: entryRuleRefSAPoint : ruleRefSAPoint EOF ;
+ public final void entryRuleRefSAPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:992:1: ( ruleRefSAPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:993:1: ruleRefSAPoint EOF
+ {
+ before(grammarAccess.getRefSAPointRule());
+ pushFollow(FOLLOW_ruleRefSAPoint_in_entryRuleRefSAPoint2047);
+ ruleRefSAPoint();
+ _fsp--;
+
+ after(grammarAccess.getRefSAPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRefSAPoint2054);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleRefSAPoint
+
+
+ // $ANTLR start ruleRefSAPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1000:1: ruleRefSAPoint : ( ( rule__RefSAPoint__Group__0 ) ) ;
+ public final void ruleRefSAPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1004:2: ( ( ( rule__RefSAPoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1005:1: ( ( rule__RefSAPoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1005:1: ( ( rule__RefSAPoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1006:1: ( rule__RefSAPoint__Group__0 )
+ {
+ before(grammarAccess.getRefSAPointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1007:1: ( rule__RefSAPoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1007:2: rule__RefSAPoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__RefSAPoint__Group__0_in_ruleRefSAPoint2080);
+ rule__RefSAPoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRefSAPointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleRefSAPoint
+
+
+ // $ANTLR start entryRuleRelaySAPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1019:1: entryRuleRelaySAPoint : ruleRelaySAPoint EOF ;
+ public final void entryRuleRelaySAPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1020:1: ( ruleRelaySAPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1021:1: ruleRelaySAPoint EOF
+ {
+ before(grammarAccess.getRelaySAPointRule());
+ pushFollow(FOLLOW_ruleRelaySAPoint_in_entryRuleRelaySAPoint2107);
+ ruleRelaySAPoint();
+ _fsp--;
+
+ after(grammarAccess.getRelaySAPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRelaySAPoint2114);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleRelaySAPoint
+
+
+ // $ANTLR start ruleRelaySAPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1028:1: ruleRelaySAPoint : ( ( rule__RelaySAPoint__Group__0 ) ) ;
+ public final void ruleRelaySAPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1032:2: ( ( ( rule__RelaySAPoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1033:1: ( ( rule__RelaySAPoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1033:1: ( ( rule__RelaySAPoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1034:1: ( rule__RelaySAPoint__Group__0 )
+ {
+ before(grammarAccess.getRelaySAPointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1035:1: ( rule__RelaySAPoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1035:2: rule__RelaySAPoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__RelaySAPoint__Group__0_in_ruleRelaySAPoint2140);
+ rule__RelaySAPoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRelaySAPointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleRelaySAPoint
+
+
+ // $ANTLR start entryRuleSPPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1047:1: entryRuleSPPoint : ruleSPPoint EOF ;
+ public final void entryRuleSPPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1048:1: ( ruleSPPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1049:1: ruleSPPoint EOF
+ {
+ before(grammarAccess.getSPPointRule());
+ pushFollow(FOLLOW_ruleSPPoint_in_entryRuleSPPoint2167);
+ ruleSPPoint();
+ _fsp--;
+
+ after(grammarAccess.getSPPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSPPoint2174);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSPPoint
+
+
+ // $ANTLR start ruleSPPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1056:1: ruleSPPoint : ( ( rule__SPPoint__Group__0 ) ) ;
+ public final void ruleSPPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1060:2: ( ( ( rule__SPPoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1061:1: ( ( rule__SPPoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1061:1: ( ( rule__SPPoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1062:1: ( rule__SPPoint__Group__0 )
+ {
+ before(grammarAccess.getSPPointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1063:1: ( rule__SPPoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1063:2: rule__SPPoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__SPPoint__Group__0_in_ruleSPPoint2200);
+ rule__SPPoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSPPointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSPPoint
+
+
+ // $ANTLR start entryRuleActorRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1075:1: entryRuleActorRef : ruleActorRef EOF ;
+ public final void entryRuleActorRef() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1076:1: ( ruleActorRef EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1077:1: ruleActorRef EOF
+ {
+ before(grammarAccess.getActorRefRule());
+ pushFollow(FOLLOW_ruleActorRef_in_entryRuleActorRef2227);
+ ruleActorRef();
+ _fsp--;
+
+ after(grammarAccess.getActorRefRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorRef2234);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleActorRef
+
+
+ // $ANTLR start ruleActorRef
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1084:1: ruleActorRef : ( ( rule__ActorRef__Group__0 ) ) ;
+ public final void ruleActorRef() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1088:2: ( ( ( rule__ActorRef__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1089:1: ( ( rule__ActorRef__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1089:1: ( ( rule__ActorRef__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1090:1: ( rule__ActorRef__Group__0 )
+ {
+ before(grammarAccess.getActorRefAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1091:1: ( rule__ActorRef__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1091:2: rule__ActorRef__Group__0
+ {
+ pushFollow(FOLLOW_rule__ActorRef__Group__0_in_ruleActorRef2260);
+ rule__ActorRef__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorRefAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleActorRef
+
+
+ // $ANTLR start entryRuleStateGraphNode
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1103:1: entryRuleStateGraphNode : ruleStateGraphNode EOF ;
+ public final void entryRuleStateGraphNode() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1104:1: ( ruleStateGraphNode EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1105:1: ruleStateGraphNode EOF
+ {
+ before(grammarAccess.getStateGraphNodeRule());
+ pushFollow(FOLLOW_ruleStateGraphNode_in_entryRuleStateGraphNode2287);
+ ruleStateGraphNode();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphNodeRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateGraphNode2294);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleStateGraphNode
+
+
+ // $ANTLR start ruleStateGraphNode
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1112:1: ruleStateGraphNode : ( ( rule__StateGraphNode__Alternatives ) ) ;
+ public final void ruleStateGraphNode() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1116:2: ( ( ( rule__StateGraphNode__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1117:1: ( ( rule__StateGraphNode__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1117:1: ( ( rule__StateGraphNode__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1118:1: ( rule__StateGraphNode__Alternatives )
+ {
+ before(grammarAccess.getStateGraphNodeAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1119:1: ( rule__StateGraphNode__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1119:2: rule__StateGraphNode__Alternatives
+ {
+ pushFollow(FOLLOW_rule__StateGraphNode__Alternatives_in_ruleStateGraphNode2320);
+ rule__StateGraphNode__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateGraphNodeAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleStateGraphNode
+
+
+ // $ANTLR start entryRuleState
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1133:1: entryRuleState : ruleState EOF ;
+ public final void entryRuleState() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1134:1: ( ruleState EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1135:1: ruleState EOF
+ {
+ before(grammarAccess.getStateRule());
+ pushFollow(FOLLOW_ruleState_in_entryRuleState2349);
+ ruleState();
+ _fsp--;
+
+ after(grammarAccess.getStateRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleState2356);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleState
+
+
+ // $ANTLR start ruleState
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1142:1: ruleState : ( ( rule__State__Alternatives ) ) ;
+ public final void ruleState() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1146:2: ( ( ( rule__State__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1147:1: ( ( rule__State__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1147:1: ( ( rule__State__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1148:1: ( rule__State__Alternatives )
+ {
+ before(grammarAccess.getStateAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1149:1: ( rule__State__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1149:2: rule__State__Alternatives
+ {
+ pushFollow(FOLLOW_rule__State__Alternatives_in_ruleState2382);
+ rule__State__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleState
+
+
+ // $ANTLR start entryRuleStateGraph
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1161:1: entryRuleStateGraph : ruleStateGraph EOF ;
+ public final void entryRuleStateGraph() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1162:1: ( ruleStateGraph EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1163:1: ruleStateGraph EOF
+ {
+ before(grammarAccess.getStateGraphRule());
+ pushFollow(FOLLOW_ruleStateGraph_in_entryRuleStateGraph2409);
+ ruleStateGraph();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateGraph2416);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleStateGraph
+
+
+ // $ANTLR start ruleStateGraph
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1170:1: ruleStateGraph : ( ( rule__StateGraph__Group__0 ) ) ;
+ public final void ruleStateGraph() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1174:2: ( ( ( rule__StateGraph__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1175:1: ( ( rule__StateGraph__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1175:1: ( ( rule__StateGraph__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1176:1: ( rule__StateGraph__Group__0 )
+ {
+ before(grammarAccess.getStateGraphAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1177:1: ( rule__StateGraph__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1177:2: rule__StateGraph__Group__0
+ {
+ pushFollow(FOLLOW_rule__StateGraph__Group__0_in_ruleStateGraph2442);
+ rule__StateGraph__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateGraphAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleStateGraph
+
+
+ // $ANTLR start entryRuleStateMachine
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1189:1: entryRuleStateMachine : ruleStateMachine EOF ;
+ public final void entryRuleStateMachine() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1190:1: ( ruleStateMachine EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1191:1: ruleStateMachine EOF
+ {
+ before(grammarAccess.getStateMachineRule());
+ pushFollow(FOLLOW_ruleStateMachine_in_entryRuleStateMachine2469);
+ ruleStateMachine();
+ _fsp--;
+
+ after(grammarAccess.getStateMachineRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateMachine2476);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleStateMachine
+
+
+ // $ANTLR start ruleStateMachine
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1198:1: ruleStateMachine : ( ( rule__StateMachine__Group__0 ) ) ;
+ public final void ruleStateMachine() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1202:2: ( ( ( rule__StateMachine__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1203:1: ( ( rule__StateMachine__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1203:1: ( ( rule__StateMachine__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1204:1: ( rule__StateMachine__Group__0 )
+ {
+ before(grammarAccess.getStateMachineAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1205:1: ( rule__StateMachine__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1205:2: rule__StateMachine__Group__0
+ {
+ pushFollow(FOLLOW_rule__StateMachine__Group__0_in_ruleStateMachine2502);
+ rule__StateMachine__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateMachineAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleStateMachine
+
+
+ // $ANTLR start entryRuleBaseState
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1217:1: entryRuleBaseState : ruleBaseState EOF ;
+ public final void entryRuleBaseState() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1218:1: ( ruleBaseState EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1219:1: ruleBaseState EOF
+ {
+ before(grammarAccess.getBaseStateRule());
+ pushFollow(FOLLOW_ruleBaseState_in_entryRuleBaseState2529);
+ ruleBaseState();
+ _fsp--;
+
+ after(grammarAccess.getBaseStateRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBaseState2536);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleBaseState
+
+
+ // $ANTLR start ruleBaseState
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1226:1: ruleBaseState : ( ( rule__BaseState__Group__0 ) ) ;
+ public final void ruleBaseState() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1230:2: ( ( ( rule__BaseState__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1231:1: ( ( rule__BaseState__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1231:1: ( ( rule__BaseState__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1232:1: ( rule__BaseState__Group__0 )
+ {
+ before(grammarAccess.getBaseStateAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1233:1: ( rule__BaseState__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1233:2: rule__BaseState__Group__0
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__0_in_ruleBaseState2562);
+ rule__BaseState__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleBaseState
+
+
+ // $ANTLR start entryRuleRefinedState
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1245:1: entryRuleRefinedState : ruleRefinedState EOF ;
+ public final void entryRuleRefinedState() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1246:1: ( ruleRefinedState EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1247:1: ruleRefinedState EOF
+ {
+ before(grammarAccess.getRefinedStateRule());
+ pushFollow(FOLLOW_ruleRefinedState_in_entryRuleRefinedState2589);
+ ruleRefinedState();
+ _fsp--;
+
+ after(grammarAccess.getRefinedStateRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRefinedState2596);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleRefinedState
+
+
+ // $ANTLR start ruleRefinedState
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1254:1: ruleRefinedState : ( ( rule__RefinedState__Group__0 ) ) ;
+ public final void ruleRefinedState() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1258:2: ( ( ( rule__RefinedState__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1259:1: ( ( rule__RefinedState__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1259:1: ( ( rule__RefinedState__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1260:1: ( rule__RefinedState__Group__0 )
+ {
+ before(grammarAccess.getRefinedStateAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1261:1: ( rule__RefinedState__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1261:2: rule__RefinedState__Group__0
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__0_in_ruleRefinedState2622);
+ rule__RefinedState__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleRefinedState
+
+
+ // $ANTLR start entryRuleDetailCode
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1273:1: entryRuleDetailCode : ruleDetailCode EOF ;
+ public final void entryRuleDetailCode() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1274:1: ( ruleDetailCode EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1275:1: ruleDetailCode EOF
+ {
+ before(grammarAccess.getDetailCodeRule());
+ pushFollow(FOLLOW_ruleDetailCode_in_entryRuleDetailCode2649);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getDetailCodeRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDetailCode2656);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleDetailCode
+
+
+ // $ANTLR start ruleDetailCode
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1282:1: ruleDetailCode : ( ( rule__DetailCode__Group__0 ) ) ;
+ public final void ruleDetailCode() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1286:2: ( ( ( rule__DetailCode__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1287:1: ( ( rule__DetailCode__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1287:1: ( ( rule__DetailCode__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1288:1: ( rule__DetailCode__Group__0 )
+ {
+ before(grammarAccess.getDetailCodeAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1289:1: ( rule__DetailCode__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1289:2: rule__DetailCode__Group__0
+ {
+ pushFollow(FOLLOW_rule__DetailCode__Group__0_in_ruleDetailCode2682);
+ rule__DetailCode__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getDetailCodeAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleDetailCode
+
+
+ // $ANTLR start entryRuleTrPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1301:1: entryRuleTrPoint : ruleTrPoint EOF ;
+ public final void entryRuleTrPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1302:1: ( ruleTrPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1303:1: ruleTrPoint EOF
+ {
+ before(grammarAccess.getTrPointRule());
+ pushFollow(FOLLOW_ruleTrPoint_in_entryRuleTrPoint2709);
+ ruleTrPoint();
+ _fsp--;
+
+ after(grammarAccess.getTrPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTrPoint2716);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTrPoint
+
+
+ // $ANTLR start ruleTrPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1310:1: ruleTrPoint : ( ( rule__TrPoint__Alternatives ) ) ;
+ public final void ruleTrPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1314:2: ( ( ( rule__TrPoint__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1315:1: ( ( rule__TrPoint__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1315:1: ( ( rule__TrPoint__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1316:1: ( rule__TrPoint__Alternatives )
+ {
+ before(grammarAccess.getTrPointAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1317:1: ( rule__TrPoint__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1317:2: rule__TrPoint__Alternatives
+ {
+ pushFollow(FOLLOW_rule__TrPoint__Alternatives_in_ruleTrPoint2742);
+ rule__TrPoint__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTrPointAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTrPoint
+
+
+ // $ANTLR start entryRuleTransitionPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1329:1: entryRuleTransitionPoint : ruleTransitionPoint EOF ;
+ public final void entryRuleTransitionPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1330:1: ( ruleTransitionPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1331:1: ruleTransitionPoint EOF
+ {
+ before(grammarAccess.getTransitionPointRule());
+ pushFollow(FOLLOW_ruleTransitionPoint_in_entryRuleTransitionPoint2769);
+ ruleTransitionPoint();
+ _fsp--;
+
+ after(grammarAccess.getTransitionPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransitionPoint2776);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTransitionPoint
+
+
+ // $ANTLR start ruleTransitionPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1338:1: ruleTransitionPoint : ( ( rule__TransitionPoint__Group__0 ) ) ;
+ public final void ruleTransitionPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1342:2: ( ( ( rule__TransitionPoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1343:1: ( ( rule__TransitionPoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1343:1: ( ( rule__TransitionPoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1344:1: ( rule__TransitionPoint__Group__0 )
+ {
+ before(grammarAccess.getTransitionPointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1345:1: ( rule__TransitionPoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1345:2: rule__TransitionPoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__TransitionPoint__Group__0_in_ruleTransitionPoint2802);
+ rule__TransitionPoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTransitionPointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTransitionPoint
+
+
+ // $ANTLR start entryRuleEntryPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1357:1: entryRuleEntryPoint : ruleEntryPoint EOF ;
+ public final void entryRuleEntryPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1358:1: ( ruleEntryPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1359:1: ruleEntryPoint EOF
+ {
+ before(grammarAccess.getEntryPointRule());
+ pushFollow(FOLLOW_ruleEntryPoint_in_entryRuleEntryPoint2829);
+ ruleEntryPoint();
+ _fsp--;
+
+ after(grammarAccess.getEntryPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEntryPoint2836);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleEntryPoint
+
+
+ // $ANTLR start ruleEntryPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1366:1: ruleEntryPoint : ( ( rule__EntryPoint__Group__0 ) ) ;
+ public final void ruleEntryPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1370:2: ( ( ( rule__EntryPoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1371:1: ( ( rule__EntryPoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1371:1: ( ( rule__EntryPoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1372:1: ( rule__EntryPoint__Group__0 )
+ {
+ before(grammarAccess.getEntryPointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1373:1: ( rule__EntryPoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1373:2: rule__EntryPoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__EntryPoint__Group__0_in_ruleEntryPoint2862);
+ rule__EntryPoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getEntryPointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleEntryPoint
+
+
+ // $ANTLR start entryRuleExitPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1385:1: entryRuleExitPoint : ruleExitPoint EOF ;
+ public final void entryRuleExitPoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1386:1: ( ruleExitPoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1387:1: ruleExitPoint EOF
+ {
+ before(grammarAccess.getExitPointRule());
+ pushFollow(FOLLOW_ruleExitPoint_in_entryRuleExitPoint2889);
+ ruleExitPoint();
+ _fsp--;
+
+ after(grammarAccess.getExitPointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleExitPoint2896);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleExitPoint
+
+
+ // $ANTLR start ruleExitPoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1394:1: ruleExitPoint : ( ( rule__ExitPoint__Group__0 ) ) ;
+ public final void ruleExitPoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1398:2: ( ( ( rule__ExitPoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1399:1: ( ( rule__ExitPoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1399:1: ( ( rule__ExitPoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1400:1: ( rule__ExitPoint__Group__0 )
+ {
+ before(grammarAccess.getExitPointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1401:1: ( rule__ExitPoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1401:2: rule__ExitPoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__ExitPoint__Group__0_in_ruleExitPoint2922);
+ rule__ExitPoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getExitPointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleExitPoint
+
+
+ // $ANTLR start entryRuleChoicePoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1413:1: entryRuleChoicePoint : ruleChoicePoint EOF ;
+ public final void entryRuleChoicePoint() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1414:1: ( ruleChoicePoint EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1415:1: ruleChoicePoint EOF
+ {
+ before(grammarAccess.getChoicePointRule());
+ pushFollow(FOLLOW_ruleChoicePoint_in_entryRuleChoicePoint2949);
+ ruleChoicePoint();
+ _fsp--;
+
+ after(grammarAccess.getChoicePointRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleChoicePoint2956);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleChoicePoint
+
+
+ // $ANTLR start ruleChoicePoint
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1422:1: ruleChoicePoint : ( ( rule__ChoicePoint__Group__0 ) ) ;
+ public final void ruleChoicePoint() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1426:2: ( ( ( rule__ChoicePoint__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1427:1: ( ( rule__ChoicePoint__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1427:1: ( ( rule__ChoicePoint__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1428:1: ( rule__ChoicePoint__Group__0 )
+ {
+ before(grammarAccess.getChoicePointAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1429:1: ( rule__ChoicePoint__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1429:2: rule__ChoicePoint__Group__0
+ {
+ pushFollow(FOLLOW_rule__ChoicePoint__Group__0_in_ruleChoicePoint2982);
+ rule__ChoicePoint__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getChoicePointAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleChoicePoint
+
+
+ // $ANTLR start entryRuleTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1441:1: entryRuleTransition : ruleTransition EOF ;
+ public final void entryRuleTransition() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1442:1: ( ruleTransition EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1443:1: ruleTransition EOF
+ {
+ before(grammarAccess.getTransitionRule());
+ pushFollow(FOLLOW_ruleTransition_in_entryRuleTransition3009);
+ ruleTransition();
+ _fsp--;
+
+ after(grammarAccess.getTransitionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransition3016);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTransition
+
+
+ // $ANTLR start ruleTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1450:1: ruleTransition : ( ( rule__Transition__Alternatives ) ) ;
+ public final void ruleTransition() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1454:2: ( ( ( rule__Transition__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1455:1: ( ( rule__Transition__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1455:1: ( ( rule__Transition__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1456:1: ( rule__Transition__Alternatives )
+ {
+ before(grammarAccess.getTransitionAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1457:1: ( rule__Transition__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1457:2: rule__Transition__Alternatives
+ {
+ pushFollow(FOLLOW_rule__Transition__Alternatives_in_ruleTransition3042);
+ rule__Transition__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTransitionAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTransition
+
+
+ // $ANTLR start entryRuleNonInitialTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1469:1: entryRuleNonInitialTransition : ruleNonInitialTransition EOF ;
+ public final void entryRuleNonInitialTransition() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1470:1: ( ruleNonInitialTransition EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1471:1: ruleNonInitialTransition EOF
+ {
+ before(grammarAccess.getNonInitialTransitionRule());
+ pushFollow(FOLLOW_ruleNonInitialTransition_in_entryRuleNonInitialTransition3069);
+ ruleNonInitialTransition();
+ _fsp--;
+
+ after(grammarAccess.getNonInitialTransitionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleNonInitialTransition3076);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleNonInitialTransition
+
+
+ // $ANTLR start ruleNonInitialTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1478:1: ruleNonInitialTransition : ( ( rule__NonInitialTransition__Alternatives ) ) ;
+ public final void ruleNonInitialTransition() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1482:2: ( ( ( rule__NonInitialTransition__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1483:1: ( ( rule__NonInitialTransition__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1483:1: ( ( rule__NonInitialTransition__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1484:1: ( rule__NonInitialTransition__Alternatives )
+ {
+ before(grammarAccess.getNonInitialTransitionAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1485:1: ( rule__NonInitialTransition__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1485:2: rule__NonInitialTransition__Alternatives
+ {
+ pushFollow(FOLLOW_rule__NonInitialTransition__Alternatives_in_ruleNonInitialTransition3102);
+ rule__NonInitialTransition__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getNonInitialTransitionAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleNonInitialTransition
+
+
+ // $ANTLR start entryRuleInitialTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1497:1: entryRuleInitialTransition : ruleInitialTransition EOF ;
+ public final void entryRuleInitialTransition() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1498:1: ( ruleInitialTransition EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1499:1: ruleInitialTransition EOF
+ {
+ before(grammarAccess.getInitialTransitionRule());
+ pushFollow(FOLLOW_ruleInitialTransition_in_entryRuleInitialTransition3129);
+ ruleInitialTransition();
+ _fsp--;
+
+ after(grammarAccess.getInitialTransitionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleInitialTransition3136);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleInitialTransition
+
+
+ // $ANTLR start ruleInitialTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1506:1: ruleInitialTransition : ( ( rule__InitialTransition__Group__0 ) ) ;
+ public final void ruleInitialTransition() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1510:2: ( ( ( rule__InitialTransition__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1511:1: ( ( rule__InitialTransition__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1511:1: ( ( rule__InitialTransition__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1512:1: ( rule__InitialTransition__Group__0 )
+ {
+ before(grammarAccess.getInitialTransitionAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1513:1: ( rule__InitialTransition__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1513:2: rule__InitialTransition__Group__0
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__0_in_ruleInitialTransition3162);
+ rule__InitialTransition__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getInitialTransitionAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleInitialTransition
+
+
+ // $ANTLR start entryRuleContinuationTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1525:1: entryRuleContinuationTransition : ruleContinuationTransition EOF ;
+ public final void entryRuleContinuationTransition() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1526:1: ( ruleContinuationTransition EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1527:1: ruleContinuationTransition EOF
+ {
+ before(grammarAccess.getContinuationTransitionRule());
+ pushFollow(FOLLOW_ruleContinuationTransition_in_entryRuleContinuationTransition3189);
+ ruleContinuationTransition();
+ _fsp--;
+
+ after(grammarAccess.getContinuationTransitionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleContinuationTransition3196);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleContinuationTransition
+
+
+ // $ANTLR start ruleContinuationTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1534:1: ruleContinuationTransition : ( ( rule__ContinuationTransition__Group__0 ) ) ;
+ public final void ruleContinuationTransition() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1538:2: ( ( ( rule__ContinuationTransition__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1539:1: ( ( rule__ContinuationTransition__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1539:1: ( ( rule__ContinuationTransition__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1540:1: ( rule__ContinuationTransition__Group__0 )
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1541:1: ( rule__ContinuationTransition__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1541:2: rule__ContinuationTransition__Group__0
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__0_in_ruleContinuationTransition3222);
+ rule__ContinuationTransition__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getContinuationTransitionAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleContinuationTransition
+
+
+ // $ANTLR start entryRuleTriggeredTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1553:1: entryRuleTriggeredTransition : ruleTriggeredTransition EOF ;
+ public final void entryRuleTriggeredTransition() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1554:1: ( ruleTriggeredTransition EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1555:1: ruleTriggeredTransition EOF
+ {
+ before(grammarAccess.getTriggeredTransitionRule());
+ pushFollow(FOLLOW_ruleTriggeredTransition_in_entryRuleTriggeredTransition3249);
+ ruleTriggeredTransition();
+ _fsp--;
+
+ after(grammarAccess.getTriggeredTransitionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTriggeredTransition3256);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTriggeredTransition
+
+
+ // $ANTLR start ruleTriggeredTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1562:1: ruleTriggeredTransition : ( ( rule__TriggeredTransition__Group__0 ) ) ;
+ public final void ruleTriggeredTransition() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1566:2: ( ( ( rule__TriggeredTransition__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1567:1: ( ( rule__TriggeredTransition__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1567:1: ( ( rule__TriggeredTransition__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1568:1: ( rule__TriggeredTransition__Group__0 )
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1569:1: ( rule__TriggeredTransition__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1569:2: rule__TriggeredTransition__Group__0
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__0_in_ruleTriggeredTransition3282);
+ rule__TriggeredTransition__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTriggeredTransition
+
+
+ // $ANTLR start entryRuleCPBranchTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1581:1: entryRuleCPBranchTransition : ruleCPBranchTransition EOF ;
+ public final void entryRuleCPBranchTransition() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1582:1: ( ruleCPBranchTransition EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1583:1: ruleCPBranchTransition EOF
+ {
+ before(grammarAccess.getCPBranchTransitionRule());
+ pushFollow(FOLLOW_ruleCPBranchTransition_in_entryRuleCPBranchTransition3309);
+ ruleCPBranchTransition();
+ _fsp--;
+
+ after(grammarAccess.getCPBranchTransitionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleCPBranchTransition3316);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleCPBranchTransition
+
+
+ // $ANTLR start ruleCPBranchTransition
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1590:1: ruleCPBranchTransition : ( ( rule__CPBranchTransition__Group__0 ) ) ;
+ public final void ruleCPBranchTransition() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1594:2: ( ( ( rule__CPBranchTransition__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1595:1: ( ( rule__CPBranchTransition__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1595:1: ( ( rule__CPBranchTransition__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1596:1: ( rule__CPBranchTransition__Group__0 )
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1597:1: ( rule__CPBranchTransition__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1597:2: rule__CPBranchTransition__Group__0
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__0_in_ruleCPBranchTransition3342);
+ rule__CPBranchTransition__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getCPBranchTransitionAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleCPBranchTransition
+
+
+ // $ANTLR start entryRuleTransitionTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1609:1: entryRuleTransitionTerminal : ruleTransitionTerminal EOF ;
+ public final void entryRuleTransitionTerminal() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1610:1: ( ruleTransitionTerminal EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1611:1: ruleTransitionTerminal EOF
+ {
+ before(grammarAccess.getTransitionTerminalRule());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_entryRuleTransitionTerminal3369);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTransitionTerminalRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransitionTerminal3376);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTransitionTerminal
+
+
+ // $ANTLR start ruleTransitionTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1618:1: ruleTransitionTerminal : ( ( rule__TransitionTerminal__Alternatives ) ) ;
+ public final void ruleTransitionTerminal() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1622:2: ( ( ( rule__TransitionTerminal__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1623:1: ( ( rule__TransitionTerminal__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1623:1: ( ( rule__TransitionTerminal__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1624:1: ( rule__TransitionTerminal__Alternatives )
+ {
+ before(grammarAccess.getTransitionTerminalAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1625:1: ( rule__TransitionTerminal__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1625:2: rule__TransitionTerminal__Alternatives
+ {
+ pushFollow(FOLLOW_rule__TransitionTerminal__Alternatives_in_ruleTransitionTerminal3402);
+ rule__TransitionTerminal__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTransitionTerminalAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTransitionTerminal
+
+
+ // $ANTLR start entryRuleStateTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1637:1: entryRuleStateTerminal : ruleStateTerminal EOF ;
+ public final void entryRuleStateTerminal() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1638:1: ( ruleStateTerminal EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1639:1: ruleStateTerminal EOF
+ {
+ before(grammarAccess.getStateTerminalRule());
+ pushFollow(FOLLOW_ruleStateTerminal_in_entryRuleStateTerminal3429);
+ ruleStateTerminal();
+ _fsp--;
+
+ after(grammarAccess.getStateTerminalRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateTerminal3436);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleStateTerminal
+
+
+ // $ANTLR start ruleStateTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1646:1: ruleStateTerminal : ( ( rule__StateTerminal__StateAssignment ) ) ;
+ public final void ruleStateTerminal() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1650:2: ( ( ( rule__StateTerminal__StateAssignment ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1651:1: ( ( rule__StateTerminal__StateAssignment ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1651:1: ( ( rule__StateTerminal__StateAssignment ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1652:1: ( rule__StateTerminal__StateAssignment )
+ {
+ before(grammarAccess.getStateTerminalAccess().getStateAssignment());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1653:1: ( rule__StateTerminal__StateAssignment )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1653:2: rule__StateTerminal__StateAssignment
+ {
+ pushFollow(FOLLOW_rule__StateTerminal__StateAssignment_in_ruleStateTerminal3462);
+ rule__StateTerminal__StateAssignment();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateTerminalAccess().getStateAssignment());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleStateTerminal
+
+
+ // $ANTLR start entryRuleTrPointTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1665:1: entryRuleTrPointTerminal : ruleTrPointTerminal EOF ;
+ public final void entryRuleTrPointTerminal() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1666:1: ( ruleTrPointTerminal EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1667:1: ruleTrPointTerminal EOF
+ {
+ before(grammarAccess.getTrPointTerminalRule());
+ pushFollow(FOLLOW_ruleTrPointTerminal_in_entryRuleTrPointTerminal3489);
+ ruleTrPointTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTrPointTerminalRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTrPointTerminal3496);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTrPointTerminal
+
+
+ // $ANTLR start ruleTrPointTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1674:1: ruleTrPointTerminal : ( ( rule__TrPointTerminal__Group__0 ) ) ;
+ public final void ruleTrPointTerminal() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1678:2: ( ( ( rule__TrPointTerminal__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1679:1: ( ( rule__TrPointTerminal__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1679:1: ( ( rule__TrPointTerminal__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1680:1: ( rule__TrPointTerminal__Group__0 )
+ {
+ before(grammarAccess.getTrPointTerminalAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1681:1: ( rule__TrPointTerminal__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1681:2: rule__TrPointTerminal__Group__0
+ {
+ pushFollow(FOLLOW_rule__TrPointTerminal__Group__0_in_ruleTrPointTerminal3522);
+ rule__TrPointTerminal__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTrPointTerminalAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTrPointTerminal
+
+
+ // $ANTLR start entryRuleSubStateTrPointTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1693:1: entryRuleSubStateTrPointTerminal : ruleSubStateTrPointTerminal EOF ;
+ public final void entryRuleSubStateTrPointTerminal() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1694:1: ( ruleSubStateTrPointTerminal EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1695:1: ruleSubStateTrPointTerminal EOF
+ {
+ before(grammarAccess.getSubStateTrPointTerminalRule());
+ pushFollow(FOLLOW_ruleSubStateTrPointTerminal_in_entryRuleSubStateTrPointTerminal3549);
+ ruleSubStateTrPointTerminal();
+ _fsp--;
+
+ after(grammarAccess.getSubStateTrPointTerminalRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSubStateTrPointTerminal3556);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleSubStateTrPointTerminal
+
+
+ // $ANTLR start ruleSubStateTrPointTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1702:1: ruleSubStateTrPointTerminal : ( ( rule__SubStateTrPointTerminal__Group__0 ) ) ;
+ public final void ruleSubStateTrPointTerminal() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1706:2: ( ( ( rule__SubStateTrPointTerminal__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1707:1: ( ( rule__SubStateTrPointTerminal__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1707:1: ( ( rule__SubStateTrPointTerminal__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1708:1: ( rule__SubStateTrPointTerminal__Group__0 )
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1709:1: ( rule__SubStateTrPointTerminal__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1709:2: rule__SubStateTrPointTerminal__Group__0
+ {
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__Group__0_in_ruleSubStateTrPointTerminal3582);
+ rule__SubStateTrPointTerminal__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleSubStateTrPointTerminal
+
+
+ // $ANTLR start entryRuleChoicepointTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1721:1: entryRuleChoicepointTerminal : ruleChoicepointTerminal EOF ;
+ public final void entryRuleChoicepointTerminal() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1722:1: ( ruleChoicepointTerminal EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1723:1: ruleChoicepointTerminal EOF
+ {
+ before(grammarAccess.getChoicepointTerminalRule());
+ pushFollow(FOLLOW_ruleChoicepointTerminal_in_entryRuleChoicepointTerminal3609);
+ ruleChoicepointTerminal();
+ _fsp--;
+
+ after(grammarAccess.getChoicepointTerminalRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleChoicepointTerminal3616);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleChoicepointTerminal
+
+
+ // $ANTLR start ruleChoicepointTerminal
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1730:1: ruleChoicepointTerminal : ( ( rule__ChoicepointTerminal__Group__0 ) ) ;
+ public final void ruleChoicepointTerminal() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1734:2: ( ( ( rule__ChoicepointTerminal__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1735:1: ( ( rule__ChoicepointTerminal__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1735:1: ( ( rule__ChoicepointTerminal__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1736:1: ( rule__ChoicepointTerminal__Group__0 )
+ {
+ before(grammarAccess.getChoicepointTerminalAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1737:1: ( rule__ChoicepointTerminal__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1737:2: rule__ChoicepointTerminal__Group__0
+ {
+ pushFollow(FOLLOW_rule__ChoicepointTerminal__Group__0_in_ruleChoicepointTerminal3642);
+ rule__ChoicepointTerminal__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getChoicepointTerminalAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleChoicepointTerminal
+
+
+ // $ANTLR start entryRuleTrigger
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1749:1: entryRuleTrigger : ruleTrigger EOF ;
+ public final void entryRuleTrigger() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1750:1: ( ruleTrigger EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1751:1: ruleTrigger EOF
+ {
+ before(grammarAccess.getTriggerRule());
+ pushFollow(FOLLOW_ruleTrigger_in_entryRuleTrigger3669);
+ ruleTrigger();
+ _fsp--;
+
+ after(grammarAccess.getTriggerRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTrigger3676);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleTrigger
+
+
+ // $ANTLR start ruleTrigger
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1758:1: ruleTrigger : ( ( rule__Trigger__Group__0 ) ) ;
+ public final void ruleTrigger() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1762:2: ( ( ( rule__Trigger__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1763:1: ( ( rule__Trigger__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1763:1: ( ( rule__Trigger__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1764:1: ( rule__Trigger__Group__0 )
+ {
+ before(grammarAccess.getTriggerAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1765:1: ( rule__Trigger__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1765:2: rule__Trigger__Group__0
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group__0_in_ruleTrigger3702);
+ rule__Trigger__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggerAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleTrigger
+
+
+ // $ANTLR start entryRuleMessageFromIf
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1777:1: entryRuleMessageFromIf : ruleMessageFromIf EOF ;
+ public final void entryRuleMessageFromIf() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1778:1: ( ruleMessageFromIf EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1779:1: ruleMessageFromIf EOF
+ {
+ before(grammarAccess.getMessageFromIfRule());
+ pushFollow(FOLLOW_ruleMessageFromIf_in_entryRuleMessageFromIf3729);
+ ruleMessageFromIf();
+ _fsp--;
+
+ after(grammarAccess.getMessageFromIfRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMessageFromIf3736);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleMessageFromIf
+
+
+ // $ANTLR start ruleMessageFromIf
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1786:1: ruleMessageFromIf : ( ( rule__MessageFromIf__Group__0 ) ) ;
+ public final void ruleMessageFromIf() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1790:2: ( ( ( rule__MessageFromIf__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1791:1: ( ( rule__MessageFromIf__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1791:1: ( ( rule__MessageFromIf__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1792:1: ( rule__MessageFromIf__Group__0 )
+ {
+ before(grammarAccess.getMessageFromIfAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1793:1: ( rule__MessageFromIf__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1793:2: rule__MessageFromIf__Group__0
+ {
+ pushFollow(FOLLOW_rule__MessageFromIf__Group__0_in_ruleMessageFromIf3762);
+ rule__MessageFromIf__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageFromIfAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleMessageFromIf
+
+
+ // $ANTLR start entryRuleGuard
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1805:1: entryRuleGuard : ruleGuard EOF ;
+ public final void entryRuleGuard() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1806:1: ( ruleGuard EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1807:1: ruleGuard EOF
+ {
+ before(grammarAccess.getGuardRule());
+ pushFollow(FOLLOW_ruleGuard_in_entryRuleGuard3789);
+ ruleGuard();
+ _fsp--;
+
+ after(grammarAccess.getGuardRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleGuard3796);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleGuard
+
+
+ // $ANTLR start ruleGuard
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1814:1: ruleGuard : ( ( rule__Guard__Group__0 ) ) ;
+ public final void ruleGuard() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1818:2: ( ( ( rule__Guard__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1819:1: ( ( rule__Guard__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1819:1: ( ( rule__Guard__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1820:1: ( rule__Guard__Group__0 )
+ {
+ before(grammarAccess.getGuardAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1821:1: ( rule__Guard__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1821:2: rule__Guard__Group__0
+ {
+ pushFollow(FOLLOW_rule__Guard__Group__0_in_ruleGuard3822);
+ rule__Guard__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getGuardAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleGuard
+
+
+ // $ANTLR start entryRuleImport
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1833:1: entryRuleImport : ruleImport EOF ;
+ public final void entryRuleImport() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1834:1: ( ruleImport EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1835:1: ruleImport EOF
+ {
+ before(grammarAccess.getImportRule());
+ pushFollow(FOLLOW_ruleImport_in_entryRuleImport3849);
+ ruleImport();
+ _fsp--;
+
+ after(grammarAccess.getImportRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleImport3856);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleImport
+
+
+ // $ANTLR start ruleImport
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1842:1: ruleImport : ( ( rule__Import__Group__0 ) ) ;
+ public final void ruleImport() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1846:2: ( ( ( rule__Import__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1847:1: ( ( rule__Import__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1847:1: ( ( rule__Import__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1848:1: ( rule__Import__Group__0 )
+ {
+ before(grammarAccess.getImportAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1849:1: ( rule__Import__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1849:2: rule__Import__Group__0
+ {
+ pushFollow(FOLLOW_rule__Import__Group__0_in_ruleImport3882);
+ rule__Import__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getImportAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleImport
+
+
+ // $ANTLR start entryRuleImportedFQN
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1861:1: entryRuleImportedFQN : ruleImportedFQN EOF ;
+ public final void entryRuleImportedFQN() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1862:1: ( ruleImportedFQN EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1863:1: ruleImportedFQN EOF
+ {
+ before(grammarAccess.getImportedFQNRule());
+ pushFollow(FOLLOW_ruleImportedFQN_in_entryRuleImportedFQN3909);
+ ruleImportedFQN();
+ _fsp--;
+
+ after(grammarAccess.getImportedFQNRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleImportedFQN3916);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleImportedFQN
+
+
+ // $ANTLR start ruleImportedFQN
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1870:1: ruleImportedFQN : ( ( rule__ImportedFQN__Group__0 ) ) ;
+ public final void ruleImportedFQN() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1874:2: ( ( ( rule__ImportedFQN__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1875:1: ( ( rule__ImportedFQN__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1875:1: ( ( rule__ImportedFQN__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1876:1: ( rule__ImportedFQN__Group__0 )
+ {
+ before(grammarAccess.getImportedFQNAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1877:1: ( rule__ImportedFQN__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1877:2: rule__ImportedFQN__Group__0
+ {
+ pushFollow(FOLLOW_rule__ImportedFQN__Group__0_in_ruleImportedFQN3942);
+ rule__ImportedFQN__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getImportedFQNAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleImportedFQN
+
+
+ // $ANTLR start entryRuleFQN
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1889:1: entryRuleFQN : ruleFQN EOF ;
+ public final void entryRuleFQN() throws RecognitionException {
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1890:1: ( ruleFQN EOF )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1891:1: ruleFQN EOF
+ {
+ before(grammarAccess.getFQNRule());
+ pushFollow(FOLLOW_ruleFQN_in_entryRuleFQN3969);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getFQNRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFQN3976);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end entryRuleFQN
+
+
+ // $ANTLR start ruleFQN
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1898:1: ruleFQN : ( ( rule__FQN__Group__0 ) ) ;
+ public final void ruleFQN() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1902:2: ( ( ( rule__FQN__Group__0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1903:1: ( ( rule__FQN__Group__0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1903:1: ( ( rule__FQN__Group__0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1904:1: ( rule__FQN__Group__0 )
+ {
+ before(grammarAccess.getFQNAccess().getGroup());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1905:1: ( rule__FQN__Group__0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1905:2: rule__FQN__Group__0
+ {
+ pushFollow(FOLLOW_rule__FQN__Group__0_in_ruleFQN4002);
+ rule__FQN__Group__0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getFQNAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end ruleFQN
+
+
+ // $ANTLR start rulePrimitiveType
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1918:1: rulePrimitiveType : ( ( rule__PrimitiveType__Alternatives ) ) ;
+ public final void rulePrimitiveType() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1922:1: ( ( ( rule__PrimitiveType__Alternatives ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1923:1: ( ( rule__PrimitiveType__Alternatives ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1923:1: ( ( rule__PrimitiveType__Alternatives ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1924:1: ( rule__PrimitiveType__Alternatives )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getAlternatives());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1925:1: ( rule__PrimitiveType__Alternatives )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1925:2: rule__PrimitiveType__Alternatives
+ {
+ pushFollow(FOLLOW_rule__PrimitiveType__Alternatives_in_rulePrimitiveType4039);
+ rule__PrimitiveType__Alternatives();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rulePrimitiveType
+
+
+ // $ANTLR start rule__RoomModel__Alternatives_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1936:1: rule__RoomModel__Alternatives_4 : ( ( ( rule__RoomModel__DataClassesAssignment_4_0 ) ) | ( ( rule__RoomModel__ProtocolClassesAssignment_4_1 ) ) | ( ( rule__RoomModel__ActorClassesAssignment_4_2 ) ) | ( ( rule__RoomModel__SubSystemClassesAssignment_4_3 ) ) | ( ( rule__RoomModel__SystemsAssignment_4_4 ) ) );
+ public final void rule__RoomModel__Alternatives_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1940:1: ( ( ( rule__RoomModel__DataClassesAssignment_4_0 ) ) | ( ( rule__RoomModel__ProtocolClassesAssignment_4_1 ) ) | ( ( rule__RoomModel__ActorClassesAssignment_4_2 ) ) | ( ( rule__RoomModel__SubSystemClassesAssignment_4_3 ) ) | ( ( rule__RoomModel__SystemsAssignment_4_4 ) ) )
+ int alt1=5;
+ switch ( input.LA(1) ) {
+ case 27:
+ {
+ alt1=1;
+ }
+ break;
+ case 36:
+ {
+ alt1=2;
+ }
+ break;
+ case 51:
+ case 97:
+ {
+ alt1=3;
+ }
+ break;
+ case 63:
+ {
+ alt1=4;
+ }
+ break;
+ case 61:
+ {
+ alt1=5;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("1936:1: rule__RoomModel__Alternatives_4 : ( ( ( rule__RoomModel__DataClassesAssignment_4_0 ) ) | ( ( rule__RoomModel__ProtocolClassesAssignment_4_1 ) ) | ( ( rule__RoomModel__ActorClassesAssignment_4_2 ) ) | ( ( rule__RoomModel__SubSystemClassesAssignment_4_3 ) ) | ( ( rule__RoomModel__SystemsAssignment_4_4 ) ) );", 1, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1941:1: ( ( rule__RoomModel__DataClassesAssignment_4_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1941:1: ( ( rule__RoomModel__DataClassesAssignment_4_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1942:1: ( rule__RoomModel__DataClassesAssignment_4_0 )
+ {
+ before(grammarAccess.getRoomModelAccess().getDataClassesAssignment_4_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1943:1: ( rule__RoomModel__DataClassesAssignment_4_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1943:2: rule__RoomModel__DataClassesAssignment_4_0
+ {
+ pushFollow(FOLLOW_rule__RoomModel__DataClassesAssignment_4_0_in_rule__RoomModel__Alternatives_44074);
+ rule__RoomModel__DataClassesAssignment_4_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getDataClassesAssignment_4_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1947:6: ( ( rule__RoomModel__ProtocolClassesAssignment_4_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1947:6: ( ( rule__RoomModel__ProtocolClassesAssignment_4_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1948:1: ( rule__RoomModel__ProtocolClassesAssignment_4_1 )
+ {
+ before(grammarAccess.getRoomModelAccess().getProtocolClassesAssignment_4_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1949:1: ( rule__RoomModel__ProtocolClassesAssignment_4_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1949:2: rule__RoomModel__ProtocolClassesAssignment_4_1
+ {
+ pushFollow(FOLLOW_rule__RoomModel__ProtocolClassesAssignment_4_1_in_rule__RoomModel__Alternatives_44092);
+ rule__RoomModel__ProtocolClassesAssignment_4_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getProtocolClassesAssignment_4_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1953:6: ( ( rule__RoomModel__ActorClassesAssignment_4_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1953:6: ( ( rule__RoomModel__ActorClassesAssignment_4_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1954:1: ( rule__RoomModel__ActorClassesAssignment_4_2 )
+ {
+ before(grammarAccess.getRoomModelAccess().getActorClassesAssignment_4_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1955:1: ( rule__RoomModel__ActorClassesAssignment_4_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1955:2: rule__RoomModel__ActorClassesAssignment_4_2
+ {
+ pushFollow(FOLLOW_rule__RoomModel__ActorClassesAssignment_4_2_in_rule__RoomModel__Alternatives_44110);
+ rule__RoomModel__ActorClassesAssignment_4_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getActorClassesAssignment_4_2());
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1959:6: ( ( rule__RoomModel__SubSystemClassesAssignment_4_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1959:6: ( ( rule__RoomModel__SubSystemClassesAssignment_4_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1960:1: ( rule__RoomModel__SubSystemClassesAssignment_4_3 )
+ {
+ before(grammarAccess.getRoomModelAccess().getSubSystemClassesAssignment_4_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1961:1: ( rule__RoomModel__SubSystemClassesAssignment_4_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1961:2: rule__RoomModel__SubSystemClassesAssignment_4_3
+ {
+ pushFollow(FOLLOW_rule__RoomModel__SubSystemClassesAssignment_4_3_in_rule__RoomModel__Alternatives_44128);
+ rule__RoomModel__SubSystemClassesAssignment_4_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getSubSystemClassesAssignment_4_3());
+
+ }
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1965:6: ( ( rule__RoomModel__SystemsAssignment_4_4 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1965:6: ( ( rule__RoomModel__SystemsAssignment_4_4 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1966:1: ( rule__RoomModel__SystemsAssignment_4_4 )
+ {
+ before(grammarAccess.getRoomModelAccess().getSystemsAssignment_4_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1967:1: ( rule__RoomModel__SystemsAssignment_4_4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1967:2: rule__RoomModel__SystemsAssignment_4_4
+ {
+ pushFollow(FOLLOW_rule__RoomModel__SystemsAssignment_4_4_in_rule__RoomModel__Alternatives_44146);
+ rule__RoomModel__SystemsAssignment_4_4();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getSystemsAssignment_4_4());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Alternatives_4
+
+
+ // $ANTLR start rule__StructureClass__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1977:1: rule__StructureClass__Alternatives : ( ( ruleActorContainerClass ) | ( ruleLogicalSystem ) );
+ public final void rule__StructureClass__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1981:1: ( ( ruleActorContainerClass ) | ( ruleLogicalSystem ) )
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0==51||LA2_0==63||LA2_0==97) ) {
+ alt2=1;
+ }
+ else if ( (LA2_0==61) ) {
+ alt2=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1977:1: rule__StructureClass__Alternatives : ( ( ruleActorContainerClass ) | ( ruleLogicalSystem ) );", 2, 0, input);
+
+ throw nvae;
+ }
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1982:1: ( ruleActorContainerClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1982:1: ( ruleActorContainerClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1983:1: ruleActorContainerClass
+ {
+ before(grammarAccess.getStructureClassAccess().getActorContainerClassParserRuleCall_0());
+ pushFollow(FOLLOW_ruleActorContainerClass_in_rule__StructureClass__Alternatives4180);
+ ruleActorContainerClass();
+ _fsp--;
+
+ after(grammarAccess.getStructureClassAccess().getActorContainerClassParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1988:6: ( ruleLogicalSystem )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1988:6: ( ruleLogicalSystem )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1989:1: ruleLogicalSystem
+ {
+ before(grammarAccess.getStructureClassAccess().getLogicalSystemParserRuleCall_1());
+ pushFollow(FOLLOW_ruleLogicalSystem_in_rule__StructureClass__Alternatives4197);
+ ruleLogicalSystem();
+ _fsp--;
+
+ after(grammarAccess.getStructureClassAccess().getLogicalSystemParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StructureClass__Alternatives
+
+
+ // $ANTLR start rule__ActorContainerClass__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:1999:1: rule__ActorContainerClass__Alternatives : ( ( ruleActorClass ) | ( ruleSubSystemClass ) );
+ public final void rule__ActorContainerClass__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2003:1: ( ( ruleActorClass ) | ( ruleSubSystemClass ) )
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0==51||LA3_0==97) ) {
+ alt3=1;
+ }
+ else if ( (LA3_0==63) ) {
+ alt3=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1999:1: rule__ActorContainerClass__Alternatives : ( ( ruleActorClass ) | ( ruleSubSystemClass ) );", 3, 0, input);
+
+ throw nvae;
+ }
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2004:1: ( ruleActorClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2004:1: ( ruleActorClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2005:1: ruleActorClass
+ {
+ before(grammarAccess.getActorContainerClassAccess().getActorClassParserRuleCall_0());
+ pushFollow(FOLLOW_ruleActorClass_in_rule__ActorContainerClass__Alternatives4229);
+ ruleActorClass();
+ _fsp--;
+
+ after(grammarAccess.getActorContainerClassAccess().getActorClassParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2010:6: ( ruleSubSystemClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2010:6: ( ruleSubSystemClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2011:1: ruleSubSystemClass
+ {
+ before(grammarAccess.getActorContainerClassAccess().getSubSystemClassParserRuleCall_1());
+ pushFollow(FOLLOW_ruleSubSystemClass_in_rule__ActorContainerClass__Alternatives4246);
+ ruleSubSystemClass();
+ _fsp--;
+
+ after(grammarAccess.getActorContainerClassAccess().getSubSystemClassParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorContainerClass__Alternatives
+
+
+ // $ANTLR start rule__Type__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2021:1: rule__Type__Alternatives : ( ( ( rule__Type__PrimAssignment_0 ) ) | ( ( rule__Type__TypeAssignment_1 ) ) );
+ public final void rule__Type__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2025:1: ( ( ( rule__Type__PrimAssignment_0 ) ) | ( ( rule__Type__TypeAssignment_1 ) ) )
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( ((LA4_0>=11 && LA4_0<=22)) ) {
+ alt4=1;
+ }
+ else if ( (LA4_0==RULE_ID) ) {
+ alt4=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2021:1: rule__Type__Alternatives : ( ( ( rule__Type__PrimAssignment_0 ) ) | ( ( rule__Type__TypeAssignment_1 ) ) );", 4, 0, input);
+
+ throw nvae;
+ }
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2026:1: ( ( rule__Type__PrimAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2026:1: ( ( rule__Type__PrimAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2027:1: ( rule__Type__PrimAssignment_0 )
+ {
+ before(grammarAccess.getTypeAccess().getPrimAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2028:1: ( rule__Type__PrimAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2028:2: rule__Type__PrimAssignment_0
+ {
+ pushFollow(FOLLOW_rule__Type__PrimAssignment_0_in_rule__Type__Alternatives4278);
+ rule__Type__PrimAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTypeAccess().getPrimAssignment_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2032:6: ( ( rule__Type__TypeAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2032:6: ( ( rule__Type__TypeAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2033:1: ( rule__Type__TypeAssignment_1 )
+ {
+ before(grammarAccess.getTypeAccess().getTypeAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2034:1: ( rule__Type__TypeAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2034:2: rule__Type__TypeAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Type__TypeAssignment_1_in_rule__Type__Alternatives4296);
+ rule__Type__TypeAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTypeAccess().getTypeAssignment_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Type__Alternatives
+
+
+ // $ANTLR start rule__FreeType__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2043:1: rule__FreeType__Alternatives : ( ( ( rule__FreeType__PrimAssignment_0 ) ) | ( ( rule__FreeType__TypeAssignment_1 ) ) );
+ public final void rule__FreeType__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2047:1: ( ( ( rule__FreeType__PrimAssignment_0 ) ) | ( ( rule__FreeType__TypeAssignment_1 ) ) )
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( ((LA5_0>=11 && LA5_0<=22)) ) {
+ alt5=1;
+ }
+ else if ( (LA5_0==RULE_ID) ) {
+ alt5=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2043:1: rule__FreeType__Alternatives : ( ( ( rule__FreeType__PrimAssignment_0 ) ) | ( ( rule__FreeType__TypeAssignment_1 ) ) );", 5, 0, input);
+
+ throw nvae;
+ }
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2048:1: ( ( rule__FreeType__PrimAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2048:1: ( ( rule__FreeType__PrimAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2049:1: ( rule__FreeType__PrimAssignment_0 )
+ {
+ before(grammarAccess.getFreeTypeAccess().getPrimAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2050:1: ( rule__FreeType__PrimAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2050:2: rule__FreeType__PrimAssignment_0
+ {
+ pushFollow(FOLLOW_rule__FreeType__PrimAssignment_0_in_rule__FreeType__Alternatives4329);
+ rule__FreeType__PrimAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getFreeTypeAccess().getPrimAssignment_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2054:6: ( ( rule__FreeType__TypeAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2054:6: ( ( rule__FreeType__TypeAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2055:1: ( rule__FreeType__TypeAssignment_1 )
+ {
+ before(grammarAccess.getFreeTypeAccess().getTypeAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2056:1: ( rule__FreeType__TypeAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2056:2: rule__FreeType__TypeAssignment_1
+ {
+ pushFollow(FOLLOW_rule__FreeType__TypeAssignment_1_in_rule__FreeType__Alternatives4347);
+ rule__FreeType__TypeAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getFreeTypeAccess().getTypeAssignment_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeType__Alternatives
+
+
+ // $ANTLR start rule__PortClass__Alternatives_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2065:1: rule__PortClass__Alternatives_2 : ( ( ( rule__PortClass__AttributesAssignment_2_0 ) ) | ( ( rule__PortClass__OperationsAssignment_2_1 ) ) | ( ( rule__PortClass__MsgHandlersAssignment_2_2 ) ) );
+ public final void rule__PortClass__Alternatives_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2069:1: ( ( ( rule__PortClass__AttributesAssignment_2_0 ) ) | ( ( rule__PortClass__OperationsAssignment_2_1 ) ) | ( ( rule__PortClass__MsgHandlersAssignment_2_2 ) ) )
+ int alt6=3;
+ switch ( input.LA(1) ) {
+ case 29:
+ {
+ alt6=1;
+ }
+ break;
+ case 32:
+ {
+ alt6=2;
+ }
+ break;
+ case 46:
+ {
+ alt6=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2065:1: rule__PortClass__Alternatives_2 : ( ( ( rule__PortClass__AttributesAssignment_2_0 ) ) | ( ( rule__PortClass__OperationsAssignment_2_1 ) ) | ( ( rule__PortClass__MsgHandlersAssignment_2_2 ) ) );", 6, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2070:1: ( ( rule__PortClass__AttributesAssignment_2_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2070:1: ( ( rule__PortClass__AttributesAssignment_2_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2071:1: ( rule__PortClass__AttributesAssignment_2_0 )
+ {
+ before(grammarAccess.getPortClassAccess().getAttributesAssignment_2_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2072:1: ( rule__PortClass__AttributesAssignment_2_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2072:2: rule__PortClass__AttributesAssignment_2_0
+ {
+ pushFollow(FOLLOW_rule__PortClass__AttributesAssignment_2_0_in_rule__PortClass__Alternatives_24380);
+ rule__PortClass__AttributesAssignment_2_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortClassAccess().getAttributesAssignment_2_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2076:6: ( ( rule__PortClass__OperationsAssignment_2_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2076:6: ( ( rule__PortClass__OperationsAssignment_2_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2077:1: ( rule__PortClass__OperationsAssignment_2_1 )
+ {
+ before(grammarAccess.getPortClassAccess().getOperationsAssignment_2_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2078:1: ( rule__PortClass__OperationsAssignment_2_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2078:2: rule__PortClass__OperationsAssignment_2_1
+ {
+ pushFollow(FOLLOW_rule__PortClass__OperationsAssignment_2_1_in_rule__PortClass__Alternatives_24398);
+ rule__PortClass__OperationsAssignment_2_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortClassAccess().getOperationsAssignment_2_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2082:6: ( ( rule__PortClass__MsgHandlersAssignment_2_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2082:6: ( ( rule__PortClass__MsgHandlersAssignment_2_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2083:1: ( rule__PortClass__MsgHandlersAssignment_2_2 )
+ {
+ before(grammarAccess.getPortClassAccess().getMsgHandlersAssignment_2_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2084:1: ( rule__PortClass__MsgHandlersAssignment_2_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2084:2: rule__PortClass__MsgHandlersAssignment_2_2
+ {
+ pushFollow(FOLLOW_rule__PortClass__MsgHandlersAssignment_2_2_in_rule__PortClass__Alternatives_24416);
+ rule__PortClass__MsgHandlersAssignment_2_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortClassAccess().getMsgHandlersAssignment_2_2());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Alternatives_2
+
+
+ // $ANTLR start rule__SemanticsRule__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2093:1: rule__SemanticsRule__Alternatives : ( ( ruleSemanticsInRule ) | ( ruleSemanticsOutRule ) );
+ public final void rule__SemanticsRule__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2097:1: ( ( ruleSemanticsInRule ) | ( ruleSemanticsOutRule ) )
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0==48) ) {
+ alt7=1;
+ }
+ else if ( (LA7_0==50) ) {
+ alt7=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2093:1: rule__SemanticsRule__Alternatives : ( ( ruleSemanticsInRule ) | ( ruleSemanticsOutRule ) );", 7, 0, input);
+
+ throw nvae;
+ }
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2098:1: ( ruleSemanticsInRule )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2098:1: ( ruleSemanticsInRule )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2099:1: ruleSemanticsInRule
+ {
+ before(grammarAccess.getSemanticsRuleAccess().getSemanticsInRuleParserRuleCall_0());
+ pushFollow(FOLLOW_ruleSemanticsInRule_in_rule__SemanticsRule__Alternatives4449);
+ ruleSemanticsInRule();
+ _fsp--;
+
+ after(grammarAccess.getSemanticsRuleAccess().getSemanticsInRuleParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2104:6: ( ruleSemanticsOutRule )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2104:6: ( ruleSemanticsOutRule )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2105:1: ruleSemanticsOutRule
+ {
+ before(grammarAccess.getSemanticsRuleAccess().getSemanticsOutRuleParserRuleCall_1());
+ pushFollow(FOLLOW_ruleSemanticsOutRule_in_rule__SemanticsRule__Alternatives4466);
+ ruleSemanticsOutRule();
+ _fsp--;
+
+ after(grammarAccess.getSemanticsRuleAccess().getSemanticsOutRuleParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsRule__Alternatives
+
+
+ // $ANTLR start rule__ActorClass__Alternatives_6_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2115:1: rule__ActorClass__Alternatives_6_4 : ( ( ( rule__ActorClass__IntPortsAssignment_6_4_0 ) ) | ( ( rule__ActorClass__ExtPortsAssignment_6_4_1 ) ) );
+ public final void rule__ActorClass__Alternatives_6_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2119:1: ( ( ( rule__ActorClass__IntPortsAssignment_6_4_0 ) ) | ( ( rule__ActorClass__ExtPortsAssignment_6_4_1 ) ) )
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0==55||LA8_0==98) ) {
+ alt8=1;
+ }
+ else if ( (LA8_0==56) ) {
+ alt8=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2115:1: rule__ActorClass__Alternatives_6_4 : ( ( ( rule__ActorClass__IntPortsAssignment_6_4_0 ) ) | ( ( rule__ActorClass__ExtPortsAssignment_6_4_1 ) ) );", 8, 0, input);
+
+ throw nvae;
+ }
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2120:1: ( ( rule__ActorClass__IntPortsAssignment_6_4_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2120:1: ( ( rule__ActorClass__IntPortsAssignment_6_4_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2121:1: ( rule__ActorClass__IntPortsAssignment_6_4_0 )
+ {
+ before(grammarAccess.getActorClassAccess().getIntPortsAssignment_6_4_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2122:1: ( rule__ActorClass__IntPortsAssignment_6_4_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2122:2: rule__ActorClass__IntPortsAssignment_6_4_0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__IntPortsAssignment_6_4_0_in_rule__ActorClass__Alternatives_6_44498);
+ rule__ActorClass__IntPortsAssignment_6_4_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getIntPortsAssignment_6_4_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2126:6: ( ( rule__ActorClass__ExtPortsAssignment_6_4_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2126:6: ( ( rule__ActorClass__ExtPortsAssignment_6_4_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2127:1: ( rule__ActorClass__ExtPortsAssignment_6_4_1 )
+ {
+ before(grammarAccess.getActorClassAccess().getExtPortsAssignment_6_4_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2128:1: ( rule__ActorClass__ExtPortsAssignment_6_4_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2128:2: rule__ActorClass__ExtPortsAssignment_6_4_1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__ExtPortsAssignment_6_4_1_in_rule__ActorClass__Alternatives_6_44516);
+ rule__ActorClass__ExtPortsAssignment_6_4_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getExtPortsAssignment_6_4_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Alternatives_6_4
+
+
+ // $ANTLR start rule__SAPoint__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2139:1: rule__SAPoint__Alternatives : ( ( ruleRefSAPoint ) | ( ruleRelaySAPoint ) );
+ public final void rule__SAPoint__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2143:1: ( ( ruleRefSAPoint ) | ( ruleRelaySAPoint ) )
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==70) ) {
+ alt9=1;
+ }
+ else if ( (LA9_0==71) ) {
+ alt9=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2139:1: rule__SAPoint__Alternatives : ( ( ruleRefSAPoint ) | ( ruleRelaySAPoint ) );", 9, 0, input);
+
+ throw nvae;
+ }
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2144:1: ( ruleRefSAPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2144:1: ( ruleRefSAPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2145:1: ruleRefSAPoint
+ {
+ before(grammarAccess.getSAPointAccess().getRefSAPointParserRuleCall_0());
+ pushFollow(FOLLOW_ruleRefSAPoint_in_rule__SAPoint__Alternatives4551);
+ ruleRefSAPoint();
+ _fsp--;
+
+ after(grammarAccess.getSAPointAccess().getRefSAPointParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2150:6: ( ruleRelaySAPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2150:6: ( ruleRelaySAPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2151:1: ruleRelaySAPoint
+ {
+ before(grammarAccess.getSAPointAccess().getRelaySAPointParserRuleCall_1());
+ pushFollow(FOLLOW_ruleRelaySAPoint_in_rule__SAPoint__Alternatives4568);
+ ruleRelaySAPoint();
+ _fsp--;
+
+ after(grammarAccess.getSAPointAccess().getRelaySAPointParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPoint__Alternatives
+
+
+ // $ANTLR start rule__StateGraphNode__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2161:1: rule__StateGraphNode__Alternatives : ( ( ruleState ) | ( ruleChoicePoint ) | ( ruleTrPoint ) );
+ public final void rule__StateGraphNode__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2165:1: ( ( ruleState ) | ( ruleChoicePoint ) | ( ruleTrPoint ) )
+ int alt10=3;
+ switch ( input.LA(1) ) {
+ case 74:
+ case 78:
+ {
+ alt10=1;
+ }
+ break;
+ case 82:
+ {
+ alt10=2;
+ }
+ break;
+ case 79:
+ case 80:
+ case 81:
+ case 99:
+ {
+ alt10=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2161:1: rule__StateGraphNode__Alternatives : ( ( ruleState ) | ( ruleChoicePoint ) | ( ruleTrPoint ) );", 10, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2166:1: ( ruleState )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2166:1: ( ruleState )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2167:1: ruleState
+ {
+ before(grammarAccess.getStateGraphNodeAccess().getStateParserRuleCall_0());
+ pushFollow(FOLLOW_ruleState_in_rule__StateGraphNode__Alternatives4600);
+ ruleState();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphNodeAccess().getStateParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2172:6: ( ruleChoicePoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2172:6: ( ruleChoicePoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2173:1: ruleChoicePoint
+ {
+ before(grammarAccess.getStateGraphNodeAccess().getChoicePointParserRuleCall_1());
+ pushFollow(FOLLOW_ruleChoicePoint_in_rule__StateGraphNode__Alternatives4617);
+ ruleChoicePoint();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphNodeAccess().getChoicePointParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2178:6: ( ruleTrPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2178:6: ( ruleTrPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2179:1: ruleTrPoint
+ {
+ before(grammarAccess.getStateGraphNodeAccess().getTrPointParserRuleCall_2());
+ pushFollow(FOLLOW_ruleTrPoint_in_rule__StateGraphNode__Alternatives4634);
+ ruleTrPoint();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphNodeAccess().getTrPointParserRuleCall_2());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraphNode__Alternatives
+
+
+ // $ANTLR start rule__State__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2190:1: rule__State__Alternatives : ( ( ruleBaseState ) | ( ruleRefinedState ) );
+ public final void rule__State__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2194:1: ( ( ruleBaseState ) | ( ruleRefinedState ) )
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0==74) ) {
+ alt11=1;
+ }
+ else if ( (LA11_0==78) ) {
+ alt11=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2190:1: rule__State__Alternatives : ( ( ruleBaseState ) | ( ruleRefinedState ) );", 11, 0, input);
+
+ throw nvae;
+ }
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2195:1: ( ruleBaseState )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2195:1: ( ruleBaseState )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2196:1: ruleBaseState
+ {
+ before(grammarAccess.getStateAccess().getBaseStateParserRuleCall_0());
+ pushFollow(FOLLOW_ruleBaseState_in_rule__State__Alternatives4667);
+ ruleBaseState();
+ _fsp--;
+
+ after(grammarAccess.getStateAccess().getBaseStateParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2201:6: ( ruleRefinedState )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2201:6: ( ruleRefinedState )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2202:1: ruleRefinedState
+ {
+ before(grammarAccess.getStateAccess().getRefinedStateParserRuleCall_1());
+ pushFollow(FOLLOW_ruleRefinedState_in_rule__State__Alternatives4684);
+ ruleRefinedState();
+ _fsp--;
+
+ after(grammarAccess.getStateAccess().getRefinedStateParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__State__Alternatives
+
+
+ // $ANTLR start rule__StateGraph__Alternatives_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2212:1: rule__StateGraph__Alternatives_1 : ( ( ( rule__StateGraph__StatesAssignment_1_0 ) ) | ( ( rule__StateGraph__TrPointsAssignment_1_1 ) ) | ( ( rule__StateGraph__ChPointsAssignment_1_2 ) ) | ( ( rule__StateGraph__TransitionsAssignment_1_3 ) ) );
+ public final void rule__StateGraph__Alternatives_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2216:1: ( ( ( rule__StateGraph__StatesAssignment_1_0 ) ) | ( ( rule__StateGraph__TrPointsAssignment_1_1 ) ) | ( ( rule__StateGraph__ChPointsAssignment_1_2 ) ) | ( ( rule__StateGraph__TransitionsAssignment_1_3 ) ) )
+ int alt12=4;
+ switch ( input.LA(1) ) {
+ case 74:
+ case 78:
+ {
+ alt12=1;
+ }
+ break;
+ case 79:
+ case 80:
+ case 81:
+ case 99:
+ {
+ alt12=2;
+ }
+ break;
+ case 82:
+ {
+ alt12=3;
+ }
+ break;
+ case 83:
+ {
+ alt12=4;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2212:1: rule__StateGraph__Alternatives_1 : ( ( ( rule__StateGraph__StatesAssignment_1_0 ) ) | ( ( rule__StateGraph__TrPointsAssignment_1_1 ) ) | ( ( rule__StateGraph__ChPointsAssignment_1_2 ) ) | ( ( rule__StateGraph__TransitionsAssignment_1_3 ) ) );", 12, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2217:1: ( ( rule__StateGraph__StatesAssignment_1_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2217:1: ( ( rule__StateGraph__StatesAssignment_1_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2218:1: ( rule__StateGraph__StatesAssignment_1_0 )
+ {
+ before(grammarAccess.getStateGraphAccess().getStatesAssignment_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2219:1: ( rule__StateGraph__StatesAssignment_1_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2219:2: rule__StateGraph__StatesAssignment_1_0
+ {
+ pushFollow(FOLLOW_rule__StateGraph__StatesAssignment_1_0_in_rule__StateGraph__Alternatives_14716);
+ rule__StateGraph__StatesAssignment_1_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateGraphAccess().getStatesAssignment_1_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2223:6: ( ( rule__StateGraph__TrPointsAssignment_1_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2223:6: ( ( rule__StateGraph__TrPointsAssignment_1_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2224:1: ( rule__StateGraph__TrPointsAssignment_1_1 )
+ {
+ before(grammarAccess.getStateGraphAccess().getTrPointsAssignment_1_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2225:1: ( rule__StateGraph__TrPointsAssignment_1_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2225:2: rule__StateGraph__TrPointsAssignment_1_1
+ {
+ pushFollow(FOLLOW_rule__StateGraph__TrPointsAssignment_1_1_in_rule__StateGraph__Alternatives_14734);
+ rule__StateGraph__TrPointsAssignment_1_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateGraphAccess().getTrPointsAssignment_1_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2229:6: ( ( rule__StateGraph__ChPointsAssignment_1_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2229:6: ( ( rule__StateGraph__ChPointsAssignment_1_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2230:1: ( rule__StateGraph__ChPointsAssignment_1_2 )
+ {
+ before(grammarAccess.getStateGraphAccess().getChPointsAssignment_1_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2231:1: ( rule__StateGraph__ChPointsAssignment_1_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2231:2: rule__StateGraph__ChPointsAssignment_1_2
+ {
+ pushFollow(FOLLOW_rule__StateGraph__ChPointsAssignment_1_2_in_rule__StateGraph__Alternatives_14752);
+ rule__StateGraph__ChPointsAssignment_1_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateGraphAccess().getChPointsAssignment_1_2());
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2235:6: ( ( rule__StateGraph__TransitionsAssignment_1_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2235:6: ( ( rule__StateGraph__TransitionsAssignment_1_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2236:1: ( rule__StateGraph__TransitionsAssignment_1_3 )
+ {
+ before(grammarAccess.getStateGraphAccess().getTransitionsAssignment_1_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2237:1: ( rule__StateGraph__TransitionsAssignment_1_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2237:2: rule__StateGraph__TransitionsAssignment_1_3
+ {
+ pushFollow(FOLLOW_rule__StateGraph__TransitionsAssignment_1_3_in_rule__StateGraph__Alternatives_14770);
+ rule__StateGraph__TransitionsAssignment_1_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateGraphAccess().getTransitionsAssignment_1_3());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__Alternatives_1
+
+
+ // $ANTLR start rule__StateMachine__Alternatives_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2246:1: rule__StateMachine__Alternatives_2 : ( ( ( rule__StateMachine__StatesAssignment_2_0 ) ) | ( ( rule__StateMachine__TrPointsAssignment_2_1 ) ) | ( ( rule__StateMachine__ChPointsAssignment_2_2 ) ) | ( ( rule__StateMachine__TransitionsAssignment_2_3 ) ) );
+ public final void rule__StateMachine__Alternatives_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2250:1: ( ( ( rule__StateMachine__StatesAssignment_2_0 ) ) | ( ( rule__StateMachine__TrPointsAssignment_2_1 ) ) | ( ( rule__StateMachine__ChPointsAssignment_2_2 ) ) | ( ( rule__StateMachine__TransitionsAssignment_2_3 ) ) )
+ int alt13=4;
+ switch ( input.LA(1) ) {
+ case 74:
+ case 78:
+ {
+ alt13=1;
+ }
+ break;
+ case 79:
+ case 80:
+ case 81:
+ case 99:
+ {
+ alt13=2;
+ }
+ break;
+ case 82:
+ {
+ alt13=3;
+ }
+ break;
+ case 83:
+ {
+ alt13=4;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2246:1: rule__StateMachine__Alternatives_2 : ( ( ( rule__StateMachine__StatesAssignment_2_0 ) ) | ( ( rule__StateMachine__TrPointsAssignment_2_1 ) ) | ( ( rule__StateMachine__ChPointsAssignment_2_2 ) ) | ( ( rule__StateMachine__TransitionsAssignment_2_3 ) ) );", 13, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt13) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2251:1: ( ( rule__StateMachine__StatesAssignment_2_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2251:1: ( ( rule__StateMachine__StatesAssignment_2_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2252:1: ( rule__StateMachine__StatesAssignment_2_0 )
+ {
+ before(grammarAccess.getStateMachineAccess().getStatesAssignment_2_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2253:1: ( rule__StateMachine__StatesAssignment_2_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2253:2: rule__StateMachine__StatesAssignment_2_0
+ {
+ pushFollow(FOLLOW_rule__StateMachine__StatesAssignment_2_0_in_rule__StateMachine__Alternatives_24803);
+ rule__StateMachine__StatesAssignment_2_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateMachineAccess().getStatesAssignment_2_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2257:6: ( ( rule__StateMachine__TrPointsAssignment_2_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2257:6: ( ( rule__StateMachine__TrPointsAssignment_2_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2258:1: ( rule__StateMachine__TrPointsAssignment_2_1 )
+ {
+ before(grammarAccess.getStateMachineAccess().getTrPointsAssignment_2_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2259:1: ( rule__StateMachine__TrPointsAssignment_2_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2259:2: rule__StateMachine__TrPointsAssignment_2_1
+ {
+ pushFollow(FOLLOW_rule__StateMachine__TrPointsAssignment_2_1_in_rule__StateMachine__Alternatives_24821);
+ rule__StateMachine__TrPointsAssignment_2_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateMachineAccess().getTrPointsAssignment_2_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2263:6: ( ( rule__StateMachine__ChPointsAssignment_2_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2263:6: ( ( rule__StateMachine__ChPointsAssignment_2_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2264:1: ( rule__StateMachine__ChPointsAssignment_2_2 )
+ {
+ before(grammarAccess.getStateMachineAccess().getChPointsAssignment_2_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2265:1: ( rule__StateMachine__ChPointsAssignment_2_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2265:2: rule__StateMachine__ChPointsAssignment_2_2
+ {
+ pushFollow(FOLLOW_rule__StateMachine__ChPointsAssignment_2_2_in_rule__StateMachine__Alternatives_24839);
+ rule__StateMachine__ChPointsAssignment_2_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateMachineAccess().getChPointsAssignment_2_2());
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2269:6: ( ( rule__StateMachine__TransitionsAssignment_2_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2269:6: ( ( rule__StateMachine__TransitionsAssignment_2_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2270:1: ( rule__StateMachine__TransitionsAssignment_2_3 )
+ {
+ before(grammarAccess.getStateMachineAccess().getTransitionsAssignment_2_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2271:1: ( rule__StateMachine__TransitionsAssignment_2_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2271:2: rule__StateMachine__TransitionsAssignment_2_3
+ {
+ pushFollow(FOLLOW_rule__StateMachine__TransitionsAssignment_2_3_in_rule__StateMachine__Alternatives_24857);
+ rule__StateMachine__TransitionsAssignment_2_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateMachineAccess().getTransitionsAssignment_2_3());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Alternatives_2
+
+
+ // $ANTLR start rule__TrPoint__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2280:1: rule__TrPoint__Alternatives : ( ( ruleTransitionPoint ) | ( ruleEntryPoint ) | ( ruleExitPoint ) );
+ public final void rule__TrPoint__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2284:1: ( ( ruleTransitionPoint ) | ( ruleEntryPoint ) | ( ruleExitPoint ) )
+ int alt14=3;
+ switch ( input.LA(1) ) {
+ case 79:
+ case 99:
+ {
+ alt14=1;
+ }
+ break;
+ case 80:
+ {
+ alt14=2;
+ }
+ break;
+ case 81:
+ {
+ alt14=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2280:1: rule__TrPoint__Alternatives : ( ( ruleTransitionPoint ) | ( ruleEntryPoint ) | ( ruleExitPoint ) );", 14, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt14) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2285:1: ( ruleTransitionPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2285:1: ( ruleTransitionPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2286:1: ruleTransitionPoint
+ {
+ before(grammarAccess.getTrPointAccess().getTransitionPointParserRuleCall_0());
+ pushFollow(FOLLOW_ruleTransitionPoint_in_rule__TrPoint__Alternatives4890);
+ ruleTransitionPoint();
+ _fsp--;
+
+ after(grammarAccess.getTrPointAccess().getTransitionPointParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2291:6: ( ruleEntryPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2291:6: ( ruleEntryPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2292:1: ruleEntryPoint
+ {
+ before(grammarAccess.getTrPointAccess().getEntryPointParserRuleCall_1());
+ pushFollow(FOLLOW_ruleEntryPoint_in_rule__TrPoint__Alternatives4907);
+ ruleEntryPoint();
+ _fsp--;
+
+ after(grammarAccess.getTrPointAccess().getEntryPointParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2297:6: ( ruleExitPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2297:6: ( ruleExitPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2298:1: ruleExitPoint
+ {
+ before(grammarAccess.getTrPointAccess().getExitPointParserRuleCall_2());
+ pushFollow(FOLLOW_ruleExitPoint_in_rule__TrPoint__Alternatives4924);
+ ruleExitPoint();
+ _fsp--;
+
+ after(grammarAccess.getTrPointAccess().getExitPointParserRuleCall_2());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TrPoint__Alternatives
+
+
+ // $ANTLR start rule__Transition__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2308:1: rule__Transition__Alternatives : ( ( ruleInitialTransition ) | ( ruleNonInitialTransition ) );
+ public final void rule__Transition__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2312:1: ( ( ruleInitialTransition ) | ( ruleNonInitialTransition ) )
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0==83) ) {
+ int LA15_1 = input.LA(2);
+
+ if ( (LA15_1==RULE_ID) ) {
+ int LA15_2 = input.LA(3);
+
+ if ( (LA15_2==26) ) {
+ int LA15_3 = input.LA(4);
+
+ if ( (LA15_3==RULE_ID||(LA15_3>=89 && LA15_3<=90)) ) {
+ alt15=2;
+ }
+ else if ( (LA15_3==84) ) {
+ alt15=1;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2308:1: rule__Transition__Alternatives : ( ( ruleInitialTransition ) | ( ruleNonInitialTransition ) );", 15, 3, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2308:1: rule__Transition__Alternatives : ( ( ruleInitialTransition ) | ( ruleNonInitialTransition ) );", 15, 2, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA15_1==26) ) {
+ int LA15_3 = input.LA(3);
+
+ if ( (LA15_3==RULE_ID||(LA15_3>=89 && LA15_3<=90)) ) {
+ alt15=2;
+ }
+ else if ( (LA15_3==84) ) {
+ alt15=1;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2308:1: rule__Transition__Alternatives : ( ( ruleInitialTransition ) | ( ruleNonInitialTransition ) );", 15, 3, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2308:1: rule__Transition__Alternatives : ( ( ruleInitialTransition ) | ( ruleNonInitialTransition ) );", 15, 1, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2308:1: rule__Transition__Alternatives : ( ( ruleInitialTransition ) | ( ruleNonInitialTransition ) );", 15, 0, input);
+
+ throw nvae;
+ }
+ switch (alt15) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2313:1: ( ruleInitialTransition )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2313:1: ( ruleInitialTransition )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2314:1: ruleInitialTransition
+ {
+ before(grammarAccess.getTransitionAccess().getInitialTransitionParserRuleCall_0());
+ pushFollow(FOLLOW_ruleInitialTransition_in_rule__Transition__Alternatives4956);
+ ruleInitialTransition();
+ _fsp--;
+
+ after(grammarAccess.getTransitionAccess().getInitialTransitionParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2319:6: ( ruleNonInitialTransition )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2319:6: ( ruleNonInitialTransition )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2320:1: ruleNonInitialTransition
+ {
+ before(grammarAccess.getTransitionAccess().getNonInitialTransitionParserRuleCall_1());
+ pushFollow(FOLLOW_ruleNonInitialTransition_in_rule__Transition__Alternatives4973);
+ ruleNonInitialTransition();
+ _fsp--;
+
+ after(grammarAccess.getTransitionAccess().getNonInitialTransitionParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Transition__Alternatives
+
+
+ // $ANTLR start rule__NonInitialTransition__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );
+ public final void rule__NonInitialTransition__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2334:1: ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) )
+ int alt16=3;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0==83) ) {
+ int LA16_1 = input.LA(2);
+
+ if ( (LA16_1==RULE_ID) ) {
+ int LA16_2 = input.LA(3);
+
+ if ( (LA16_2==26) ) {
+ switch ( input.LA(4) ) {
+ case RULE_ID:
+ {
+ int LA16_4 = input.LA(5);
+
+ if ( (LA16_4==49) ) {
+ switch ( input.LA(6) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(7);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(8);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(9);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(8) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(7);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(8);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(7);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(8);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else if ( (LA16_4==60) ) {
+ int LA16_8 = input.LA(6);
+
+ if ( (LA16_8==RULE_ID) ) {
+ int LA16_14 = input.LA(7);
+
+ if ( (LA16_14==49) ) {
+ switch ( input.LA(8) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(9);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(10);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(11);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(12) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(9);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(10);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(11) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(9);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(10);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(11) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 14, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 8, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 4, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_5 = input.LA(5);
+
+ if ( (LA16_5==RULE_ID) ) {
+ int LA16_9 = input.LA(6);
+
+ if ( (LA16_9==49) ) {
+ switch ( input.LA(7) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(8);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(9);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(10);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(11) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(8);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(9);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(8);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(9);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 9, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 5, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_6 = input.LA(5);
+
+ if ( (LA16_6==RULE_ID) ) {
+ int LA16_10 = input.LA(6);
+
+ if ( (LA16_10==49) ) {
+ switch ( input.LA(7) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(8);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(9);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(10);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(11) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(8);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(9);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(8);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(9);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 10, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 6, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 3, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 2, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_1==26) ) {
+ switch ( input.LA(3) ) {
+ case RULE_ID:
+ {
+ int LA16_4 = input.LA(4);
+
+ if ( (LA16_4==49) ) {
+ switch ( input.LA(5) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(6);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(7);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(8);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(7) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(6);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(7);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(8) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(6);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(7);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(8) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else if ( (LA16_4==60) ) {
+ int LA16_8 = input.LA(5);
+
+ if ( (LA16_8==RULE_ID) ) {
+ int LA16_14 = input.LA(6);
+
+ if ( (LA16_14==49) ) {
+ switch ( input.LA(7) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(8);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(9);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(10);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(11) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(8);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(9);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(8);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(9);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 14, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 8, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 4, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_5 = input.LA(4);
+
+ if ( (LA16_5==RULE_ID) ) {
+ int LA16_9 = input.LA(5);
+
+ if ( (LA16_9==49) ) {
+ switch ( input.LA(6) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(7);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(8);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(9);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(8) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(7);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(8);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(7);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(8);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 9, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 5, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_6 = input.LA(4);
+
+ if ( (LA16_6==RULE_ID) ) {
+ int LA16_10 = input.LA(5);
+
+ if ( (LA16_10==49) ) {
+ switch ( input.LA(6) ) {
+ case RULE_ID:
+ {
+ int LA16_11 = input.LA(7);
+
+ if ( (LA16_11==60) ) {
+ int LA16_15 = input.LA(8);
+
+ if ( (LA16_15==RULE_ID) ) {
+ int LA16_19 = input.LA(9);
+
+ if ( (LA16_19==24) ) {
+ switch ( input.LA(10) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA16_11==24) ) {
+ switch ( input.LA(8) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 11, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA16_12 = input.LA(7);
+
+ if ( (LA16_12==RULE_ID) ) {
+ int LA16_17 = input.LA(8);
+
+ if ( (LA16_17==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 90:
+ {
+ int LA16_13 = input.LA(7);
+
+ if ( (LA16_13==RULE_ID) ) {
+ int LA16_18 = input.LA(8);
+
+ if ( (LA16_18==24) ) {
+ switch ( input.LA(9) ) {
+ case 86:
+ {
+ alt16=1;
+ }
+ break;
+ case 88:
+ {
+ alt16=3;
+ }
+ break;
+ case 25:
+ case 85:
+ {
+ alt16=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 7, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 10, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 6, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 3, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 1, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2330:1: rule__NonInitialTransition__Alternatives : ( ( ruleTriggeredTransition ) | ( ruleContinuationTransition ) | ( ruleCPBranchTransition ) );", 16, 0, input);
+
+ throw nvae;
+ }
+ switch (alt16) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2335:1: ( ruleTriggeredTransition )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2335:1: ( ruleTriggeredTransition )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2336:1: ruleTriggeredTransition
+ {
+ before(grammarAccess.getNonInitialTransitionAccess().getTriggeredTransitionParserRuleCall_0());
+ pushFollow(FOLLOW_ruleTriggeredTransition_in_rule__NonInitialTransition__Alternatives5005);
+ ruleTriggeredTransition();
+ _fsp--;
+
+ after(grammarAccess.getNonInitialTransitionAccess().getTriggeredTransitionParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2341:6: ( ruleContinuationTransition )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2341:6: ( ruleContinuationTransition )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2342:1: ruleContinuationTransition
+ {
+ before(grammarAccess.getNonInitialTransitionAccess().getContinuationTransitionParserRuleCall_1());
+ pushFollow(FOLLOW_ruleContinuationTransition_in_rule__NonInitialTransition__Alternatives5022);
+ ruleContinuationTransition();
+ _fsp--;
+
+ after(grammarAccess.getNonInitialTransitionAccess().getContinuationTransitionParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2347:6: ( ruleCPBranchTransition )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2347:6: ( ruleCPBranchTransition )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2348:1: ruleCPBranchTransition
+ {
+ before(grammarAccess.getNonInitialTransitionAccess().getCPBranchTransitionParserRuleCall_2());
+ pushFollow(FOLLOW_ruleCPBranchTransition_in_rule__NonInitialTransition__Alternatives5039);
+ ruleCPBranchTransition();
+ _fsp--;
+
+ after(grammarAccess.getNonInitialTransitionAccess().getCPBranchTransitionParserRuleCall_2());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__NonInitialTransition__Alternatives
+
+
+ // $ANTLR start rule__TransitionTerminal__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2358:1: rule__TransitionTerminal__Alternatives : ( ( ruleStateTerminal ) | ( ruleTrPointTerminal ) | ( ruleSubStateTrPointTerminal ) | ( ruleChoicepointTerminal ) );
+ public final void rule__TransitionTerminal__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2362:1: ( ( ruleStateTerminal ) | ( ruleTrPointTerminal ) | ( ruleSubStateTrPointTerminal ) | ( ruleChoicepointTerminal ) )
+ int alt17=4;
+ switch ( input.LA(1) ) {
+ case RULE_ID:
+ {
+ int LA17_1 = input.LA(2);
+
+ if ( (LA17_1==60) ) {
+ alt17=3;
+ }
+ else if ( (LA17_1==EOF||LA17_1==24||LA17_1==49) ) {
+ alt17=1;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2358:1: rule__TransitionTerminal__Alternatives : ( ( ruleStateTerminal ) | ( ruleTrPointTerminal ) | ( ruleSubStateTrPointTerminal ) | ( ruleChoicepointTerminal ) );", 17, 1, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 89:
+ {
+ alt17=2;
+ }
+ break;
+ case 90:
+ {
+ alt17=4;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2358:1: rule__TransitionTerminal__Alternatives : ( ( ruleStateTerminal ) | ( ruleTrPointTerminal ) | ( ruleSubStateTrPointTerminal ) | ( ruleChoicepointTerminal ) );", 17, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt17) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2363:1: ( ruleStateTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2363:1: ( ruleStateTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2364:1: ruleStateTerminal
+ {
+ before(grammarAccess.getTransitionTerminalAccess().getStateTerminalParserRuleCall_0());
+ pushFollow(FOLLOW_ruleStateTerminal_in_rule__TransitionTerminal__Alternatives5071);
+ ruleStateTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTransitionTerminalAccess().getStateTerminalParserRuleCall_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2369:6: ( ruleTrPointTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2369:6: ( ruleTrPointTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2370:1: ruleTrPointTerminal
+ {
+ before(grammarAccess.getTransitionTerminalAccess().getTrPointTerminalParserRuleCall_1());
+ pushFollow(FOLLOW_ruleTrPointTerminal_in_rule__TransitionTerminal__Alternatives5088);
+ ruleTrPointTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTransitionTerminalAccess().getTrPointTerminalParserRuleCall_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2375:6: ( ruleSubStateTrPointTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2375:6: ( ruleSubStateTrPointTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2376:1: ruleSubStateTrPointTerminal
+ {
+ before(grammarAccess.getTransitionTerminalAccess().getSubStateTrPointTerminalParserRuleCall_2());
+ pushFollow(FOLLOW_ruleSubStateTrPointTerminal_in_rule__TransitionTerminal__Alternatives5105);
+ ruleSubStateTrPointTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTransitionTerminalAccess().getSubStateTrPointTerminalParserRuleCall_2());
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2381:6: ( ruleChoicepointTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2381:6: ( ruleChoicepointTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2382:1: ruleChoicepointTerminal
+ {
+ before(grammarAccess.getTransitionTerminalAccess().getChoicepointTerminalParserRuleCall_3());
+ pushFollow(FOLLOW_ruleChoicepointTerminal_in_rule__TransitionTerminal__Alternatives5122);
+ ruleChoicepointTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTransitionTerminalAccess().getChoicepointTerminalParserRuleCall_3());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionTerminal__Alternatives
+
+
+ // $ANTLR start rule__PrimitiveType__Alternatives
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2392:1: rule__PrimitiveType__Alternatives : ( ( ( 'void' ) ) | ( ( 'int8' ) ) | ( ( 'int16' ) ) | ( ( 'int32' ) ) | ( ( 'uint8' ) ) | ( ( 'uint16' ) ) | ( ( 'uint32' ) ) | ( ( 'float32' ) ) | ( ( 'float64' ) ) | ( ( 'boolean' ) ) | ( ( 'string' ) ) | ( ( 'char' ) ) );
+ public final void rule__PrimitiveType__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2396:1: ( ( ( 'void' ) ) | ( ( 'int8' ) ) | ( ( 'int16' ) ) | ( ( 'int32' ) ) | ( ( 'uint8' ) ) | ( ( 'uint16' ) ) | ( ( 'uint32' ) ) | ( ( 'float32' ) ) | ( ( 'float64' ) ) | ( ( 'boolean' ) ) | ( ( 'string' ) ) | ( ( 'char' ) ) )
+ int alt18=12;
+ switch ( input.LA(1) ) {
+ case 11:
+ {
+ alt18=1;
+ }
+ break;
+ case 12:
+ {
+ alt18=2;
+ }
+ break;
+ case 13:
+ {
+ alt18=3;
+ }
+ break;
+ case 14:
+ {
+ alt18=4;
+ }
+ break;
+ case 15:
+ {
+ alt18=5;
+ }
+ break;
+ case 16:
+ {
+ alt18=6;
+ }
+ break;
+ case 17:
+ {
+ alt18=7;
+ }
+ break;
+ case 18:
+ {
+ alt18=8;
+ }
+ break;
+ case 19:
+ {
+ alt18=9;
+ }
+ break;
+ case 20:
+ {
+ alt18=10;
+ }
+ break;
+ case 21:
+ {
+ alt18=11;
+ }
+ break;
+ case 22:
+ {
+ alt18=12;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("2392:1: rule__PrimitiveType__Alternatives : ( ( ( 'void' ) ) | ( ( 'int8' ) ) | ( ( 'int16' ) ) | ( ( 'int32' ) ) | ( ( 'uint8' ) ) | ( ( 'uint16' ) ) | ( ( 'uint32' ) ) | ( ( 'float32' ) ) | ( ( 'float64' ) ) | ( ( 'boolean' ) ) | ( ( 'string' ) ) | ( ( 'char' ) ) );", 18, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt18) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2397:1: ( ( 'void' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2397:1: ( ( 'void' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2398:1: ( 'void' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2399:1: ( 'void' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2399:3: 'void'
+ {
+ match(input,11,FOLLOW_11_in_rule__PrimitiveType__Alternatives5155);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2404:6: ( ( 'int8' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2404:6: ( ( 'int8' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2405:1: ( 'int8' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2406:1: ( 'int8' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2406:3: 'int8'
+ {
+ match(input,12,FOLLOW_12_in_rule__PrimitiveType__Alternatives5176);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2411:6: ( ( 'int16' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2411:6: ( ( 'int16' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2412:1: ( 'int16' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2413:1: ( 'int16' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2413:3: 'int16'
+ {
+ match(input,13,FOLLOW_13_in_rule__PrimitiveType__Alternatives5197);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2());
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2418:6: ( ( 'int32' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2418:6: ( ( 'int32' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2419:1: ( 'int32' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2420:1: ( 'int32' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2420:3: 'int32'
+ {
+ match(input,14,FOLLOW_14_in_rule__PrimitiveType__Alternatives5218);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3());
+
+ }
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2425:6: ( ( 'uint8' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2425:6: ( ( 'uint8' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2426:1: ( 'uint8' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2427:1: ( 'uint8' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2427:3: 'uint8'
+ {
+ match(input,15,FOLLOW_15_in_rule__PrimitiveType__Alternatives5239);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4());
+
+ }
+
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2432:6: ( ( 'uint16' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2432:6: ( ( 'uint16' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2433:1: ( 'uint16' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2434:1: ( 'uint16' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2434:3: 'uint16'
+ {
+ match(input,16,FOLLOW_16_in_rule__PrimitiveType__Alternatives5260);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5());
+
+ }
+
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2439:6: ( ( 'uint32' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2439:6: ( ( 'uint32' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2440:1: ( 'uint32' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2441:1: ( 'uint32' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2441:3: 'uint32'
+ {
+ match(input,17,FOLLOW_17_in_rule__PrimitiveType__Alternatives5281);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6());
+
+ }
+
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2446:6: ( ( 'float32' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2446:6: ( ( 'float32' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2447:1: ( 'float32' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2448:1: ( 'float32' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2448:3: 'float32'
+ {
+ match(input,18,FOLLOW_18_in_rule__PrimitiveType__Alternatives5302);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7());
+
+ }
+
+
+ }
+ break;
+ case 9 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2453:6: ( ( 'float64' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2453:6: ( ( 'float64' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2454:1: ( 'float64' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2455:1: ( 'float64' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2455:3: 'float64'
+ {
+ match(input,19,FOLLOW_19_in_rule__PrimitiveType__Alternatives5323);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8());
+
+ }
+
+
+ }
+ break;
+ case 10 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2460:6: ( ( 'boolean' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2460:6: ( ( 'boolean' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2461:1: ( 'boolean' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2462:1: ( 'boolean' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2462:3: 'boolean'
+ {
+ match(input,20,FOLLOW_20_in_rule__PrimitiveType__Alternatives5344);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9());
+
+ }
+
+
+ }
+ break;
+ case 11 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2467:6: ( ( 'string' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2467:6: ( ( 'string' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2468:1: ( 'string' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2469:1: ( 'string' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2469:3: 'string'
+ {
+ match(input,21,FOLLOW_21_in_rule__PrimitiveType__Alternatives5365);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10());
+
+ }
+
+
+ }
+ break;
+ case 12 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2474:6: ( ( 'char' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2474:6: ( ( 'char' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2475:1: ( 'char' )
+ {
+ before(grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2476:1: ( 'char' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2476:3: 'char'
+ {
+ match(input,22,FOLLOW_22_in_rule__PrimitiveType__Alternatives5386);
+
+ }
+
+ after(grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PrimitiveType__Alternatives
+
+
+ // $ANTLR start rule__RoomModel__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2488:1: rule__RoomModel__Group__0 : rule__RoomModel__Group__0__Impl rule__RoomModel__Group__1 ;
+ public final void rule__RoomModel__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2492:1: ( rule__RoomModel__Group__0__Impl rule__RoomModel__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2493:2: rule__RoomModel__Group__0__Impl rule__RoomModel__Group__1
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Group__0__Impl_in_rule__RoomModel__Group__05419);
+ rule__RoomModel__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RoomModel__Group__1_in_rule__RoomModel__Group__05422);
+ rule__RoomModel__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__0
+
+
+ // $ANTLR start rule__RoomModel__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2500:1: rule__RoomModel__Group__0__Impl : ( 'RoomModel' ) ;
+ public final void rule__RoomModel__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2504:1: ( ( 'RoomModel' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2505:1: ( 'RoomModel' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2505:1: ( 'RoomModel' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2506:1: 'RoomModel'
+ {
+ before(grammarAccess.getRoomModelAccess().getRoomModelKeyword_0());
+ match(input,23,FOLLOW_23_in_rule__RoomModel__Group__0__Impl5450);
+ after(grammarAccess.getRoomModelAccess().getRoomModelKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__0__Impl
+
+
+ // $ANTLR start rule__RoomModel__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2519:1: rule__RoomModel__Group__1 : rule__RoomModel__Group__1__Impl rule__RoomModel__Group__2 ;
+ public final void rule__RoomModel__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2523:1: ( rule__RoomModel__Group__1__Impl rule__RoomModel__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2524:2: rule__RoomModel__Group__1__Impl rule__RoomModel__Group__2
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Group__1__Impl_in_rule__RoomModel__Group__15481);
+ rule__RoomModel__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RoomModel__Group__2_in_rule__RoomModel__Group__15484);
+ rule__RoomModel__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__1
+
+
+ // $ANTLR start rule__RoomModel__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2531:1: rule__RoomModel__Group__1__Impl : ( ( rule__RoomModel__NameAssignment_1 ) ) ;
+ public final void rule__RoomModel__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2535:1: ( ( ( rule__RoomModel__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2536:1: ( ( rule__RoomModel__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2536:1: ( ( rule__RoomModel__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2537:1: ( rule__RoomModel__NameAssignment_1 )
+ {
+ before(grammarAccess.getRoomModelAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2538:1: ( rule__RoomModel__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2538:2: rule__RoomModel__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__RoomModel__NameAssignment_1_in_rule__RoomModel__Group__1__Impl5511);
+ rule__RoomModel__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__1__Impl
+
+
+ // $ANTLR start rule__RoomModel__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2548:1: rule__RoomModel__Group__2 : rule__RoomModel__Group__2__Impl rule__RoomModel__Group__3 ;
+ public final void rule__RoomModel__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2552:1: ( rule__RoomModel__Group__2__Impl rule__RoomModel__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2553:2: rule__RoomModel__Group__2__Impl rule__RoomModel__Group__3
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Group__2__Impl_in_rule__RoomModel__Group__25541);
+ rule__RoomModel__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RoomModel__Group__3_in_rule__RoomModel__Group__25544);
+ rule__RoomModel__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__2
+
+
+ // $ANTLR start rule__RoomModel__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2560:1: rule__RoomModel__Group__2__Impl : ( '{' ) ;
+ public final void rule__RoomModel__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2564:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2565:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2565:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2566:1: '{'
+ {
+ before(grammarAccess.getRoomModelAccess().getLeftCurlyBracketKeyword_2());
+ match(input,24,FOLLOW_24_in_rule__RoomModel__Group__2__Impl5572);
+ after(grammarAccess.getRoomModelAccess().getLeftCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__2__Impl
+
+
+ // $ANTLR start rule__RoomModel__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2579:1: rule__RoomModel__Group__3 : rule__RoomModel__Group__3__Impl rule__RoomModel__Group__4 ;
+ public final void rule__RoomModel__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2583:1: ( rule__RoomModel__Group__3__Impl rule__RoomModel__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2584:2: rule__RoomModel__Group__3__Impl rule__RoomModel__Group__4
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Group__3__Impl_in_rule__RoomModel__Group__35603);
+ rule__RoomModel__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RoomModel__Group__4_in_rule__RoomModel__Group__35606);
+ rule__RoomModel__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__3
+
+
+ // $ANTLR start rule__RoomModel__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2591:1: rule__RoomModel__Group__3__Impl : ( ( rule__RoomModel__ImportsAssignment_3 )* ) ;
+ public final void rule__RoomModel__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2595:1: ( ( ( rule__RoomModel__ImportsAssignment_3 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2596:1: ( ( rule__RoomModel__ImportsAssignment_3 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2596:1: ( ( rule__RoomModel__ImportsAssignment_3 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2597:1: ( rule__RoomModel__ImportsAssignment_3 )*
+ {
+ before(grammarAccess.getRoomModelAccess().getImportsAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2598:1: ( rule__RoomModel__ImportsAssignment_3 )*
+ loop19:
+ do {
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( (LA19_0==95) ) {
+ alt19=1;
+ }
+
+
+ switch (alt19) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2598:2: rule__RoomModel__ImportsAssignment_3
+ {
+ pushFollow(FOLLOW_rule__RoomModel__ImportsAssignment_3_in_rule__RoomModel__Group__3__Impl5633);
+ rule__RoomModel__ImportsAssignment_3();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop19;
+ }
+ } while (true);
+
+ after(grammarAccess.getRoomModelAccess().getImportsAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__3__Impl
+
+
+ // $ANTLR start rule__RoomModel__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2608:1: rule__RoomModel__Group__4 : rule__RoomModel__Group__4__Impl rule__RoomModel__Group__5 ;
+ public final void rule__RoomModel__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2612:1: ( rule__RoomModel__Group__4__Impl rule__RoomModel__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2613:2: rule__RoomModel__Group__4__Impl rule__RoomModel__Group__5
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Group__4__Impl_in_rule__RoomModel__Group__45664);
+ rule__RoomModel__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RoomModel__Group__5_in_rule__RoomModel__Group__45667);
+ rule__RoomModel__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__4
+
+
+ // $ANTLR start rule__RoomModel__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2620:1: rule__RoomModel__Group__4__Impl : ( ( ( rule__RoomModel__Alternatives_4 ) ) ( ( rule__RoomModel__Alternatives_4 )* ) ) ;
+ public final void rule__RoomModel__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2624:1: ( ( ( ( rule__RoomModel__Alternatives_4 ) ) ( ( rule__RoomModel__Alternatives_4 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2625:1: ( ( ( rule__RoomModel__Alternatives_4 ) ) ( ( rule__RoomModel__Alternatives_4 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2625:1: ( ( ( rule__RoomModel__Alternatives_4 ) ) ( ( rule__RoomModel__Alternatives_4 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2626:1: ( ( rule__RoomModel__Alternatives_4 ) ) ( ( rule__RoomModel__Alternatives_4 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2626:1: ( ( rule__RoomModel__Alternatives_4 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2627:1: ( rule__RoomModel__Alternatives_4 )
+ {
+ before(grammarAccess.getRoomModelAccess().getAlternatives_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2628:1: ( rule__RoomModel__Alternatives_4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2628:2: rule__RoomModel__Alternatives_4
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Alternatives_4_in_rule__RoomModel__Group__4__Impl5696);
+ rule__RoomModel__Alternatives_4();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRoomModelAccess().getAlternatives_4());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2631:1: ( ( rule__RoomModel__Alternatives_4 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2632:1: ( rule__RoomModel__Alternatives_4 )*
+ {
+ before(grammarAccess.getRoomModelAccess().getAlternatives_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2633:1: ( rule__RoomModel__Alternatives_4 )*
+ loop20:
+ do {
+ int alt20=2;
+ int LA20_0 = input.LA(1);
+
+ if ( (LA20_0==27||LA20_0==36||LA20_0==51||LA20_0==61||LA20_0==63||LA20_0==97) ) {
+ alt20=1;
+ }
+
+
+ switch (alt20) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2633:2: rule__RoomModel__Alternatives_4
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Alternatives_4_in_rule__RoomModel__Group__4__Impl5708);
+ rule__RoomModel__Alternatives_4();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop20;
+ }
+ } while (true);
+
+ after(grammarAccess.getRoomModelAccess().getAlternatives_4());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__4__Impl
+
+
+ // $ANTLR start rule__RoomModel__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2644:1: rule__RoomModel__Group__5 : rule__RoomModel__Group__5__Impl ;
+ public final void rule__RoomModel__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2648:1: ( rule__RoomModel__Group__5__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2649:2: rule__RoomModel__Group__5__Impl
+ {
+ pushFollow(FOLLOW_rule__RoomModel__Group__5__Impl_in_rule__RoomModel__Group__55741);
+ rule__RoomModel__Group__5__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__5
+
+
+ // $ANTLR start rule__RoomModel__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2655:1: rule__RoomModel__Group__5__Impl : ( '}' ) ;
+ public final void rule__RoomModel__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2659:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2660:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2660:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2661:1: '}'
+ {
+ before(grammarAccess.getRoomModelAccess().getRightCurlyBracketKeyword_5());
+ match(input,25,FOLLOW_25_in_rule__RoomModel__Group__5__Impl5769);
+ after(grammarAccess.getRoomModelAccess().getRightCurlyBracketKeyword_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__Group__5__Impl
+
+
+ // $ANTLR start rule__TypedID__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2686:1: rule__TypedID__Group__0 : rule__TypedID__Group__0__Impl rule__TypedID__Group__1 ;
+ public final void rule__TypedID__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2690:1: ( rule__TypedID__Group__0__Impl rule__TypedID__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2691:2: rule__TypedID__Group__0__Impl rule__TypedID__Group__1
+ {
+ pushFollow(FOLLOW_rule__TypedID__Group__0__Impl_in_rule__TypedID__Group__05812);
+ rule__TypedID__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TypedID__Group__1_in_rule__TypedID__Group__05815);
+ rule__TypedID__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__Group__0
+
+
+ // $ANTLR start rule__TypedID__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2698:1: rule__TypedID__Group__0__Impl : ( ( rule__TypedID__NameAssignment_0 ) ) ;
+ public final void rule__TypedID__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2702:1: ( ( ( rule__TypedID__NameAssignment_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2703:1: ( ( rule__TypedID__NameAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2703:1: ( ( rule__TypedID__NameAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2704:1: ( rule__TypedID__NameAssignment_0 )
+ {
+ before(grammarAccess.getTypedIDAccess().getNameAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2705:1: ( rule__TypedID__NameAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2705:2: rule__TypedID__NameAssignment_0
+ {
+ pushFollow(FOLLOW_rule__TypedID__NameAssignment_0_in_rule__TypedID__Group__0__Impl5842);
+ rule__TypedID__NameAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTypedIDAccess().getNameAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__Group__0__Impl
+
+
+ // $ANTLR start rule__TypedID__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2715:1: rule__TypedID__Group__1 : rule__TypedID__Group__1__Impl rule__TypedID__Group__2 ;
+ public final void rule__TypedID__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2719:1: ( rule__TypedID__Group__1__Impl rule__TypedID__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2720:2: rule__TypedID__Group__1__Impl rule__TypedID__Group__2
+ {
+ pushFollow(FOLLOW_rule__TypedID__Group__1__Impl_in_rule__TypedID__Group__15872);
+ rule__TypedID__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TypedID__Group__2_in_rule__TypedID__Group__15875);
+ rule__TypedID__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__Group__1
+
+
+ // $ANTLR start rule__TypedID__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2727:1: rule__TypedID__Group__1__Impl : ( ':' ) ;
+ public final void rule__TypedID__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2731:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2732:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2732:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2733:1: ':'
+ {
+ before(grammarAccess.getTypedIDAccess().getColonKeyword_1());
+ match(input,26,FOLLOW_26_in_rule__TypedID__Group__1__Impl5903);
+ after(grammarAccess.getTypedIDAccess().getColonKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__Group__1__Impl
+
+
+ // $ANTLR start rule__TypedID__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2746:1: rule__TypedID__Group__2 : rule__TypedID__Group__2__Impl ;
+ public final void rule__TypedID__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2750:1: ( rule__TypedID__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2751:2: rule__TypedID__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__TypedID__Group__2__Impl_in_rule__TypedID__Group__25934);
+ rule__TypedID__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__Group__2
+
+
+ // $ANTLR start rule__TypedID__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2757:1: rule__TypedID__Group__2__Impl : ( ( rule__TypedID__TypeAssignment_2 ) ) ;
+ public final void rule__TypedID__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2761:1: ( ( ( rule__TypedID__TypeAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2762:1: ( ( rule__TypedID__TypeAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2762:1: ( ( rule__TypedID__TypeAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2763:1: ( rule__TypedID__TypeAssignment_2 )
+ {
+ before(grammarAccess.getTypedIDAccess().getTypeAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2764:1: ( rule__TypedID__TypeAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2764:2: rule__TypedID__TypeAssignment_2
+ {
+ pushFollow(FOLLOW_rule__TypedID__TypeAssignment_2_in_rule__TypedID__Group__2__Impl5961);
+ rule__TypedID__TypeAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTypedIDAccess().getTypeAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__Group__2__Impl
+
+
+ // $ANTLR start rule__FreeTypedID__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2780:1: rule__FreeTypedID__Group__0 : rule__FreeTypedID__Group__0__Impl rule__FreeTypedID__Group__1 ;
+ public final void rule__FreeTypedID__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2784:1: ( rule__FreeTypedID__Group__0__Impl rule__FreeTypedID__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2785:2: rule__FreeTypedID__Group__0__Impl rule__FreeTypedID__Group__1
+ {
+ pushFollow(FOLLOW_rule__FreeTypedID__Group__0__Impl_in_rule__FreeTypedID__Group__05997);
+ rule__FreeTypedID__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__FreeTypedID__Group__1_in_rule__FreeTypedID__Group__06000);
+ rule__FreeTypedID__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__Group__0
+
+
+ // $ANTLR start rule__FreeTypedID__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2792:1: rule__FreeTypedID__Group__0__Impl : ( ( rule__FreeTypedID__NameAssignment_0 ) ) ;
+ public final void rule__FreeTypedID__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2796:1: ( ( ( rule__FreeTypedID__NameAssignment_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2797:1: ( ( rule__FreeTypedID__NameAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2797:1: ( ( rule__FreeTypedID__NameAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2798:1: ( rule__FreeTypedID__NameAssignment_0 )
+ {
+ before(grammarAccess.getFreeTypedIDAccess().getNameAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2799:1: ( rule__FreeTypedID__NameAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2799:2: rule__FreeTypedID__NameAssignment_0
+ {
+ pushFollow(FOLLOW_rule__FreeTypedID__NameAssignment_0_in_rule__FreeTypedID__Group__0__Impl6027);
+ rule__FreeTypedID__NameAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getFreeTypedIDAccess().getNameAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__Group__0__Impl
+
+
+ // $ANTLR start rule__FreeTypedID__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2809:1: rule__FreeTypedID__Group__1 : rule__FreeTypedID__Group__1__Impl rule__FreeTypedID__Group__2 ;
+ public final void rule__FreeTypedID__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2813:1: ( rule__FreeTypedID__Group__1__Impl rule__FreeTypedID__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2814:2: rule__FreeTypedID__Group__1__Impl rule__FreeTypedID__Group__2
+ {
+ pushFollow(FOLLOW_rule__FreeTypedID__Group__1__Impl_in_rule__FreeTypedID__Group__16057);
+ rule__FreeTypedID__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__FreeTypedID__Group__2_in_rule__FreeTypedID__Group__16060);
+ rule__FreeTypedID__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__Group__1
+
+
+ // $ANTLR start rule__FreeTypedID__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2821:1: rule__FreeTypedID__Group__1__Impl : ( ':' ) ;
+ public final void rule__FreeTypedID__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2825:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2826:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2826:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2827:1: ':'
+ {
+ before(grammarAccess.getFreeTypedIDAccess().getColonKeyword_1());
+ match(input,26,FOLLOW_26_in_rule__FreeTypedID__Group__1__Impl6088);
+ after(grammarAccess.getFreeTypedIDAccess().getColonKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__Group__1__Impl
+
+
+ // $ANTLR start rule__FreeTypedID__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2840:1: rule__FreeTypedID__Group__2 : rule__FreeTypedID__Group__2__Impl ;
+ public final void rule__FreeTypedID__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2844:1: ( rule__FreeTypedID__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2845:2: rule__FreeTypedID__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__FreeTypedID__Group__2__Impl_in_rule__FreeTypedID__Group__26119);
+ rule__FreeTypedID__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__Group__2
+
+
+ // $ANTLR start rule__FreeTypedID__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2851:1: rule__FreeTypedID__Group__2__Impl : ( ( rule__FreeTypedID__TypeAssignment_2 ) ) ;
+ public final void rule__FreeTypedID__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2855:1: ( ( ( rule__FreeTypedID__TypeAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2856:1: ( ( rule__FreeTypedID__TypeAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2856:1: ( ( rule__FreeTypedID__TypeAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2857:1: ( rule__FreeTypedID__TypeAssignment_2 )
+ {
+ before(grammarAccess.getFreeTypedIDAccess().getTypeAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2858:1: ( rule__FreeTypedID__TypeAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2858:2: rule__FreeTypedID__TypeAssignment_2
+ {
+ pushFollow(FOLLOW_rule__FreeTypedID__TypeAssignment_2_in_rule__FreeTypedID__Group__2__Impl6146);
+ rule__FreeTypedID__TypeAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getFreeTypedIDAccess().getTypeAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__Group__2__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2874:1: rule__DataClass__Group__0 : rule__DataClass__Group__0__Impl rule__DataClass__Group__1 ;
+ public final void rule__DataClass__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2878:1: ( rule__DataClass__Group__0__Impl rule__DataClass__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2879:2: rule__DataClass__Group__0__Impl rule__DataClass__Group__1
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__0__Impl_in_rule__DataClass__Group__06182);
+ rule__DataClass__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group__1_in_rule__DataClass__Group__06185);
+ rule__DataClass__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__0
+
+
+ // $ANTLR start rule__DataClass__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2886:1: rule__DataClass__Group__0__Impl : ( 'DataClass' ) ;
+ public final void rule__DataClass__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2890:1: ( ( 'DataClass' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2891:1: ( 'DataClass' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2891:1: ( 'DataClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2892:1: 'DataClass'
+ {
+ before(grammarAccess.getDataClassAccess().getDataClassKeyword_0());
+ match(input,27,FOLLOW_27_in_rule__DataClass__Group__0__Impl6213);
+ after(grammarAccess.getDataClassAccess().getDataClassKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__0__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2905:1: rule__DataClass__Group__1 : rule__DataClass__Group__1__Impl rule__DataClass__Group__2 ;
+ public final void rule__DataClass__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2909:1: ( rule__DataClass__Group__1__Impl rule__DataClass__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2910:2: rule__DataClass__Group__1__Impl rule__DataClass__Group__2
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__1__Impl_in_rule__DataClass__Group__16244);
+ rule__DataClass__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group__2_in_rule__DataClass__Group__16247);
+ rule__DataClass__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__1
+
+
+ // $ANTLR start rule__DataClass__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2917:1: rule__DataClass__Group__1__Impl : ( ( rule__DataClass__NameAssignment_1 ) ) ;
+ public final void rule__DataClass__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2921:1: ( ( ( rule__DataClass__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2922:1: ( ( rule__DataClass__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2922:1: ( ( rule__DataClass__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2923:1: ( rule__DataClass__NameAssignment_1 )
+ {
+ before(grammarAccess.getDataClassAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2924:1: ( rule__DataClass__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2924:2: rule__DataClass__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__DataClass__NameAssignment_1_in_rule__DataClass__Group__1__Impl6274);
+ rule__DataClass__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getDataClassAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__1__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2934:1: rule__DataClass__Group__2 : rule__DataClass__Group__2__Impl rule__DataClass__Group__3 ;
+ public final void rule__DataClass__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2938:1: ( rule__DataClass__Group__2__Impl rule__DataClass__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2939:2: rule__DataClass__Group__2__Impl rule__DataClass__Group__3
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__2__Impl_in_rule__DataClass__Group__26304);
+ rule__DataClass__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group__3_in_rule__DataClass__Group__26307);
+ rule__DataClass__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__2
+
+
+ // $ANTLR start rule__DataClass__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2946:1: rule__DataClass__Group__2__Impl : ( ( rule__DataClass__Group_2__0 )? ) ;
+ public final void rule__DataClass__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2950:1: ( ( ( rule__DataClass__Group_2__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2951:1: ( ( rule__DataClass__Group_2__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2951:1: ( ( rule__DataClass__Group_2__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2952:1: ( rule__DataClass__Group_2__0 )?
+ {
+ before(grammarAccess.getDataClassAccess().getGroup_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2953:1: ( rule__DataClass__Group_2__0 )?
+ int alt21=2;
+ int LA21_0 = input.LA(1);
+
+ if ( (LA21_0==28) ) {
+ alt21=1;
+ }
+ switch (alt21) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2953:2: rule__DataClass__Group_2__0
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group_2__0_in_rule__DataClass__Group__2__Impl6334);
+ rule__DataClass__Group_2__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getDataClassAccess().getGroup_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__2__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2963:1: rule__DataClass__Group__3 : rule__DataClass__Group__3__Impl rule__DataClass__Group__4 ;
+ public final void rule__DataClass__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2967:1: ( rule__DataClass__Group__3__Impl rule__DataClass__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2968:2: rule__DataClass__Group__3__Impl rule__DataClass__Group__4
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__3__Impl_in_rule__DataClass__Group__36365);
+ rule__DataClass__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group__4_in_rule__DataClass__Group__36368);
+ rule__DataClass__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__3
+
+
+ // $ANTLR start rule__DataClass__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2975:1: rule__DataClass__Group__3__Impl : ( '{' ) ;
+ public final void rule__DataClass__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2979:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2980:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2980:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2981:1: '{'
+ {
+ before(grammarAccess.getDataClassAccess().getLeftCurlyBracketKeyword_3());
+ match(input,24,FOLLOW_24_in_rule__DataClass__Group__3__Impl6396);
+ after(grammarAccess.getDataClassAccess().getLeftCurlyBracketKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__3__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2994:1: rule__DataClass__Group__4 : rule__DataClass__Group__4__Impl rule__DataClass__Group__5 ;
+ public final void rule__DataClass__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2998:1: ( rule__DataClass__Group__4__Impl rule__DataClass__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:2999:2: rule__DataClass__Group__4__Impl rule__DataClass__Group__5
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__4__Impl_in_rule__DataClass__Group__46427);
+ rule__DataClass__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group__5_in_rule__DataClass__Group__46430);
+ rule__DataClass__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__4
+
+
+ // $ANTLR start rule__DataClass__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3006:1: rule__DataClass__Group__4__Impl : ( ( rule__DataClass__ImportsAssignment_4 )* ) ;
+ public final void rule__DataClass__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3010:1: ( ( ( rule__DataClass__ImportsAssignment_4 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3011:1: ( ( rule__DataClass__ImportsAssignment_4 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3011:1: ( ( rule__DataClass__ImportsAssignment_4 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3012:1: ( rule__DataClass__ImportsAssignment_4 )*
+ {
+ before(grammarAccess.getDataClassAccess().getImportsAssignment_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3013:1: ( rule__DataClass__ImportsAssignment_4 )*
+ loop22:
+ do {
+ int alt22=2;
+ int LA22_0 = input.LA(1);
+
+ if ( (LA22_0==95) ) {
+ alt22=1;
+ }
+
+
+ switch (alt22) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3013:2: rule__DataClass__ImportsAssignment_4
+ {
+ pushFollow(FOLLOW_rule__DataClass__ImportsAssignment_4_in_rule__DataClass__Group__4__Impl6457);
+ rule__DataClass__ImportsAssignment_4();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop22;
+ }
+ } while (true);
+
+ after(grammarAccess.getDataClassAccess().getImportsAssignment_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__4__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3023:1: rule__DataClass__Group__5 : rule__DataClass__Group__5__Impl rule__DataClass__Group__6 ;
+ public final void rule__DataClass__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3027:1: ( rule__DataClass__Group__5__Impl rule__DataClass__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3028:2: rule__DataClass__Group__5__Impl rule__DataClass__Group__6
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__5__Impl_in_rule__DataClass__Group__56488);
+ rule__DataClass__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group__6_in_rule__DataClass__Group__56491);
+ rule__DataClass__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__5
+
+
+ // $ANTLR start rule__DataClass__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3035:1: rule__DataClass__Group__5__Impl : ( ( ( rule__DataClass__AttributesAssignment_5 ) ) ( ( rule__DataClass__AttributesAssignment_5 )* ) ) ;
+ public final void rule__DataClass__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3039:1: ( ( ( ( rule__DataClass__AttributesAssignment_5 ) ) ( ( rule__DataClass__AttributesAssignment_5 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3040:1: ( ( ( rule__DataClass__AttributesAssignment_5 ) ) ( ( rule__DataClass__AttributesAssignment_5 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3040:1: ( ( ( rule__DataClass__AttributesAssignment_5 ) ) ( ( rule__DataClass__AttributesAssignment_5 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3041:1: ( ( rule__DataClass__AttributesAssignment_5 ) ) ( ( rule__DataClass__AttributesAssignment_5 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3041:1: ( ( rule__DataClass__AttributesAssignment_5 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3042:1: ( rule__DataClass__AttributesAssignment_5 )
+ {
+ before(grammarAccess.getDataClassAccess().getAttributesAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3043:1: ( rule__DataClass__AttributesAssignment_5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3043:2: rule__DataClass__AttributesAssignment_5
+ {
+ pushFollow(FOLLOW_rule__DataClass__AttributesAssignment_5_in_rule__DataClass__Group__5__Impl6520);
+ rule__DataClass__AttributesAssignment_5();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getDataClassAccess().getAttributesAssignment_5());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3046:1: ( ( rule__DataClass__AttributesAssignment_5 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3047:1: ( rule__DataClass__AttributesAssignment_5 )*
+ {
+ before(grammarAccess.getDataClassAccess().getAttributesAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3048:1: ( rule__DataClass__AttributesAssignment_5 )*
+ loop23:
+ do {
+ int alt23=2;
+ int LA23_0 = input.LA(1);
+
+ if ( (LA23_0==29) ) {
+ alt23=1;
+ }
+
+
+ switch (alt23) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3048:2: rule__DataClass__AttributesAssignment_5
+ {
+ pushFollow(FOLLOW_rule__DataClass__AttributesAssignment_5_in_rule__DataClass__Group__5__Impl6532);
+ rule__DataClass__AttributesAssignment_5();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop23;
+ }
+ } while (true);
+
+ after(grammarAccess.getDataClassAccess().getAttributesAssignment_5());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__5__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3059:1: rule__DataClass__Group__6 : rule__DataClass__Group__6__Impl rule__DataClass__Group__7 ;
+ public final void rule__DataClass__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3063:1: ( rule__DataClass__Group__6__Impl rule__DataClass__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3064:2: rule__DataClass__Group__6__Impl rule__DataClass__Group__7
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__6__Impl_in_rule__DataClass__Group__66565);
+ rule__DataClass__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group__7_in_rule__DataClass__Group__66568);
+ rule__DataClass__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__6
+
+
+ // $ANTLR start rule__DataClass__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3071:1: rule__DataClass__Group__6__Impl : ( ( rule__DataClass__OperationsAssignment_6 )* ) ;
+ public final void rule__DataClass__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3075:1: ( ( ( rule__DataClass__OperationsAssignment_6 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3076:1: ( ( rule__DataClass__OperationsAssignment_6 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3076:1: ( ( rule__DataClass__OperationsAssignment_6 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3077:1: ( rule__DataClass__OperationsAssignment_6 )*
+ {
+ before(grammarAccess.getDataClassAccess().getOperationsAssignment_6());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3078:1: ( rule__DataClass__OperationsAssignment_6 )*
+ loop24:
+ do {
+ int alt24=2;
+ int LA24_0 = input.LA(1);
+
+ if ( (LA24_0==32) ) {
+ alt24=1;
+ }
+
+
+ switch (alt24) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3078:2: rule__DataClass__OperationsAssignment_6
+ {
+ pushFollow(FOLLOW_rule__DataClass__OperationsAssignment_6_in_rule__DataClass__Group__6__Impl6595);
+ rule__DataClass__OperationsAssignment_6();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop24;
+ }
+ } while (true);
+
+ after(grammarAccess.getDataClassAccess().getOperationsAssignment_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__6__Impl
+
+
+ // $ANTLR start rule__DataClass__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3088:1: rule__DataClass__Group__7 : rule__DataClass__Group__7__Impl ;
+ public final void rule__DataClass__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3092:1: ( rule__DataClass__Group__7__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3093:2: rule__DataClass__Group__7__Impl
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group__7__Impl_in_rule__DataClass__Group__76626);
+ rule__DataClass__Group__7__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__7
+
+
+ // $ANTLR start rule__DataClass__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3099:1: rule__DataClass__Group__7__Impl : ( '}' ) ;
+ public final void rule__DataClass__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3103:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3104:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3104:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3105:1: '}'
+ {
+ before(grammarAccess.getDataClassAccess().getRightCurlyBracketKeyword_7());
+ match(input,25,FOLLOW_25_in_rule__DataClass__Group__7__Impl6654);
+ after(grammarAccess.getDataClassAccess().getRightCurlyBracketKeyword_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group__7__Impl
+
+
+ // $ANTLR start rule__DataClass__Group_2__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3134:1: rule__DataClass__Group_2__0 : rule__DataClass__Group_2__0__Impl rule__DataClass__Group_2__1 ;
+ public final void rule__DataClass__Group_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3138:1: ( rule__DataClass__Group_2__0__Impl rule__DataClass__Group_2__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3139:2: rule__DataClass__Group_2__0__Impl rule__DataClass__Group_2__1
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group_2__0__Impl_in_rule__DataClass__Group_2__06701);
+ rule__DataClass__Group_2__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DataClass__Group_2__1_in_rule__DataClass__Group_2__06704);
+ rule__DataClass__Group_2__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group_2__0
+
+
+ // $ANTLR start rule__DataClass__Group_2__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3146:1: rule__DataClass__Group_2__0__Impl : ( 'extends' ) ;
+ public final void rule__DataClass__Group_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3150:1: ( ( 'extends' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3151:1: ( 'extends' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3151:1: ( 'extends' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3152:1: 'extends'
+ {
+ before(grammarAccess.getDataClassAccess().getExtendsKeyword_2_0());
+ match(input,28,FOLLOW_28_in_rule__DataClass__Group_2__0__Impl6732);
+ after(grammarAccess.getDataClassAccess().getExtendsKeyword_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group_2__0__Impl
+
+
+ // $ANTLR start rule__DataClass__Group_2__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3165:1: rule__DataClass__Group_2__1 : rule__DataClass__Group_2__1__Impl ;
+ public final void rule__DataClass__Group_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3169:1: ( rule__DataClass__Group_2__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3170:2: rule__DataClass__Group_2__1__Impl
+ {
+ pushFollow(FOLLOW_rule__DataClass__Group_2__1__Impl_in_rule__DataClass__Group_2__16763);
+ rule__DataClass__Group_2__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group_2__1
+
+
+ // $ANTLR start rule__DataClass__Group_2__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3176:1: rule__DataClass__Group_2__1__Impl : ( ( rule__DataClass__BaseAssignment_2_1 ) ) ;
+ public final void rule__DataClass__Group_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3180:1: ( ( ( rule__DataClass__BaseAssignment_2_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3181:1: ( ( rule__DataClass__BaseAssignment_2_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3181:1: ( ( rule__DataClass__BaseAssignment_2_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3182:1: ( rule__DataClass__BaseAssignment_2_1 )
+ {
+ before(grammarAccess.getDataClassAccess().getBaseAssignment_2_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3183:1: ( rule__DataClass__BaseAssignment_2_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3183:2: rule__DataClass__BaseAssignment_2_1
+ {
+ pushFollow(FOLLOW_rule__DataClass__BaseAssignment_2_1_in_rule__DataClass__Group_2__1__Impl6790);
+ rule__DataClass__BaseAssignment_2_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getDataClassAccess().getBaseAssignment_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__Group_2__1__Impl
+
+
+ // $ANTLR start rule__Attribute__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3197:1: rule__Attribute__Group__0 : rule__Attribute__Group__0__Impl rule__Attribute__Group__1 ;
+ public final void rule__Attribute__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3201:1: ( rule__Attribute__Group__0__Impl rule__Attribute__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3202:2: rule__Attribute__Group__0__Impl rule__Attribute__Group__1
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__06824);
+ rule__Attribute__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__06827);
+ rule__Attribute__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__0
+
+
+ // $ANTLR start rule__Attribute__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3209:1: rule__Attribute__Group__0__Impl : ( 'Attribute' ) ;
+ public final void rule__Attribute__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3213:1: ( ( 'Attribute' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3214:1: ( 'Attribute' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3214:1: ( 'Attribute' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3215:1: 'Attribute'
+ {
+ before(grammarAccess.getAttributeAccess().getAttributeKeyword_0());
+ match(input,29,FOLLOW_29_in_rule__Attribute__Group__0__Impl6855);
+ after(grammarAccess.getAttributeAccess().getAttributeKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__0__Impl
+
+
+ // $ANTLR start rule__Attribute__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3228:1: rule__Attribute__Group__1 : rule__Attribute__Group__1__Impl rule__Attribute__Group__2 ;
+ public final void rule__Attribute__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3232:1: ( rule__Attribute__Group__1__Impl rule__Attribute__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3233:2: rule__Attribute__Group__1__Impl rule__Attribute__Group__2
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__16886);
+ rule__Attribute__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__16889);
+ rule__Attribute__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__1
+
+
+ // $ANTLR start rule__Attribute__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3240:1: rule__Attribute__Group__1__Impl : ( ( rule__Attribute__NameAssignment_1 ) ) ;
+ public final void rule__Attribute__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3244:1: ( ( ( rule__Attribute__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3245:1: ( ( rule__Attribute__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3245:1: ( ( rule__Attribute__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3246:1: ( rule__Attribute__NameAssignment_1 )
+ {
+ before(grammarAccess.getAttributeAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3247:1: ( rule__Attribute__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3247:2: rule__Attribute__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Attribute__NameAssignment_1_in_rule__Attribute__Group__1__Impl6916);
+ rule__Attribute__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getAttributeAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__1__Impl
+
+
+ // $ANTLR start rule__Attribute__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3257:1: rule__Attribute__Group__2 : rule__Attribute__Group__2__Impl rule__Attribute__Group__3 ;
+ public final void rule__Attribute__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3261:1: ( rule__Attribute__Group__2__Impl rule__Attribute__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3262:2: rule__Attribute__Group__2__Impl rule__Attribute__Group__3
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__26946);
+ rule__Attribute__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Attribute__Group__3_in_rule__Attribute__Group__26949);
+ rule__Attribute__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__2
+
+
+ // $ANTLR start rule__Attribute__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3269:1: rule__Attribute__Group__2__Impl : ( ( rule__Attribute__Group_2__0 )? ) ;
+ public final void rule__Attribute__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3273:1: ( ( ( rule__Attribute__Group_2__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3274:1: ( ( rule__Attribute__Group_2__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3274:1: ( ( rule__Attribute__Group_2__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3275:1: ( rule__Attribute__Group_2__0 )?
+ {
+ before(grammarAccess.getAttributeAccess().getGroup_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3276:1: ( rule__Attribute__Group_2__0 )?
+ int alt25=2;
+ int LA25_0 = input.LA(1);
+
+ if ( (LA25_0==30) ) {
+ alt25=1;
+ }
+ switch (alt25) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3276:2: rule__Attribute__Group_2__0
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group_2__0_in_rule__Attribute__Group__2__Impl6976);
+ rule__Attribute__Group_2__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getAttributeAccess().getGroup_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__2__Impl
+
+
+ // $ANTLR start rule__Attribute__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3286:1: rule__Attribute__Group__3 : rule__Attribute__Group__3__Impl rule__Attribute__Group__4 ;
+ public final void rule__Attribute__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3290:1: ( rule__Attribute__Group__3__Impl rule__Attribute__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3291:2: rule__Attribute__Group__3__Impl rule__Attribute__Group__4
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group__3__Impl_in_rule__Attribute__Group__37007);
+ rule__Attribute__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Attribute__Group__4_in_rule__Attribute__Group__37010);
+ rule__Attribute__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__3
+
+
+ // $ANTLR start rule__Attribute__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3298:1: rule__Attribute__Group__3__Impl : ( ':' ) ;
+ public final void rule__Attribute__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3302:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3303:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3303:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3304:1: ':'
+ {
+ before(grammarAccess.getAttributeAccess().getColonKeyword_3());
+ match(input,26,FOLLOW_26_in_rule__Attribute__Group__3__Impl7038);
+ after(grammarAccess.getAttributeAccess().getColonKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__3__Impl
+
+
+ // $ANTLR start rule__Attribute__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3317:1: rule__Attribute__Group__4 : rule__Attribute__Group__4__Impl ;
+ public final void rule__Attribute__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3321:1: ( rule__Attribute__Group__4__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3322:2: rule__Attribute__Group__4__Impl
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group__4__Impl_in_rule__Attribute__Group__47069);
+ rule__Attribute__Group__4__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__4
+
+
+ // $ANTLR start rule__Attribute__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3328:1: rule__Attribute__Group__4__Impl : ( ( rule__Attribute__TypeAssignment_4 ) ) ;
+ public final void rule__Attribute__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3332:1: ( ( ( rule__Attribute__TypeAssignment_4 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3333:1: ( ( rule__Attribute__TypeAssignment_4 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3333:1: ( ( rule__Attribute__TypeAssignment_4 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3334:1: ( rule__Attribute__TypeAssignment_4 )
+ {
+ before(grammarAccess.getAttributeAccess().getTypeAssignment_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3335:1: ( rule__Attribute__TypeAssignment_4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3335:2: rule__Attribute__TypeAssignment_4
+ {
+ pushFollow(FOLLOW_rule__Attribute__TypeAssignment_4_in_rule__Attribute__Group__4__Impl7096);
+ rule__Attribute__TypeAssignment_4();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getAttributeAccess().getTypeAssignment_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group__4__Impl
+
+
+ // $ANTLR start rule__Attribute__Group_2__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3355:1: rule__Attribute__Group_2__0 : rule__Attribute__Group_2__0__Impl rule__Attribute__Group_2__1 ;
+ public final void rule__Attribute__Group_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3359:1: ( rule__Attribute__Group_2__0__Impl rule__Attribute__Group_2__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3360:2: rule__Attribute__Group_2__0__Impl rule__Attribute__Group_2__1
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group_2__0__Impl_in_rule__Attribute__Group_2__07136);
+ rule__Attribute__Group_2__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Attribute__Group_2__1_in_rule__Attribute__Group_2__07139);
+ rule__Attribute__Group_2__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group_2__0
+
+
+ // $ANTLR start rule__Attribute__Group_2__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3367:1: rule__Attribute__Group_2__0__Impl : ( '[' ) ;
+ public final void rule__Attribute__Group_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3371:1: ( ( '[' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3372:1: ( '[' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3372:1: ( '[' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3373:1: '['
+ {
+ before(grammarAccess.getAttributeAccess().getLeftSquareBracketKeyword_2_0());
+ match(input,30,FOLLOW_30_in_rule__Attribute__Group_2__0__Impl7167);
+ after(grammarAccess.getAttributeAccess().getLeftSquareBracketKeyword_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group_2__0__Impl
+
+
+ // $ANTLR start rule__Attribute__Group_2__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3386:1: rule__Attribute__Group_2__1 : rule__Attribute__Group_2__1__Impl rule__Attribute__Group_2__2 ;
+ public final void rule__Attribute__Group_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3390:1: ( rule__Attribute__Group_2__1__Impl rule__Attribute__Group_2__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3391:2: rule__Attribute__Group_2__1__Impl rule__Attribute__Group_2__2
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group_2__1__Impl_in_rule__Attribute__Group_2__17198);
+ rule__Attribute__Group_2__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Attribute__Group_2__2_in_rule__Attribute__Group_2__17201);
+ rule__Attribute__Group_2__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group_2__1
+
+
+ // $ANTLR start rule__Attribute__Group_2__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3398:1: rule__Attribute__Group_2__1__Impl : ( ( rule__Attribute__SizeAssignment_2_1 ) ) ;
+ public final void rule__Attribute__Group_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3402:1: ( ( ( rule__Attribute__SizeAssignment_2_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3403:1: ( ( rule__Attribute__SizeAssignment_2_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3403:1: ( ( rule__Attribute__SizeAssignment_2_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3404:1: ( rule__Attribute__SizeAssignment_2_1 )
+ {
+ before(grammarAccess.getAttributeAccess().getSizeAssignment_2_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3405:1: ( rule__Attribute__SizeAssignment_2_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3405:2: rule__Attribute__SizeAssignment_2_1
+ {
+ pushFollow(FOLLOW_rule__Attribute__SizeAssignment_2_1_in_rule__Attribute__Group_2__1__Impl7228);
+ rule__Attribute__SizeAssignment_2_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getAttributeAccess().getSizeAssignment_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group_2__1__Impl
+
+
+ // $ANTLR start rule__Attribute__Group_2__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3415:1: rule__Attribute__Group_2__2 : rule__Attribute__Group_2__2__Impl ;
+ public final void rule__Attribute__Group_2__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3419:1: ( rule__Attribute__Group_2__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3420:2: rule__Attribute__Group_2__2__Impl
+ {
+ pushFollow(FOLLOW_rule__Attribute__Group_2__2__Impl_in_rule__Attribute__Group_2__27258);
+ rule__Attribute__Group_2__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group_2__2
+
+
+ // $ANTLR start rule__Attribute__Group_2__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3426:1: rule__Attribute__Group_2__2__Impl : ( ']' ) ;
+ public final void rule__Attribute__Group_2__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3430:1: ( ( ']' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3431:1: ( ']' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3431:1: ( ']' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3432:1: ']'
+ {
+ before(grammarAccess.getAttributeAccess().getRightSquareBracketKeyword_2_2());
+ match(input,31,FOLLOW_31_in_rule__Attribute__Group_2__2__Impl7286);
+ after(grammarAccess.getAttributeAccess().getRightSquareBracketKeyword_2_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__Group_2__2__Impl
+
+
+ // $ANTLR start rule__Operation__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3451:1: rule__Operation__Group__0 : rule__Operation__Group__0__Impl rule__Operation__Group__1 ;
+ public final void rule__Operation__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3455:1: ( rule__Operation__Group__0__Impl rule__Operation__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3456:2: rule__Operation__Group__0__Impl rule__Operation__Group__1
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__0__Impl_in_rule__Operation__Group__07323);
+ rule__Operation__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group__1_in_rule__Operation__Group__07326);
+ rule__Operation__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__0
+
+
+ // $ANTLR start rule__Operation__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3463:1: rule__Operation__Group__0__Impl : ( 'Operation' ) ;
+ public final void rule__Operation__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3467:1: ( ( 'Operation' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3468:1: ( 'Operation' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3468:1: ( 'Operation' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3469:1: 'Operation'
+ {
+ before(grammarAccess.getOperationAccess().getOperationKeyword_0());
+ match(input,32,FOLLOW_32_in_rule__Operation__Group__0__Impl7354);
+ after(grammarAccess.getOperationAccess().getOperationKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__0__Impl
+
+
+ // $ANTLR start rule__Operation__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3482:1: rule__Operation__Group__1 : rule__Operation__Group__1__Impl rule__Operation__Group__2 ;
+ public final void rule__Operation__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3486:1: ( rule__Operation__Group__1__Impl rule__Operation__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3487:2: rule__Operation__Group__1__Impl rule__Operation__Group__2
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__1__Impl_in_rule__Operation__Group__17385);
+ rule__Operation__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group__2_in_rule__Operation__Group__17388);
+ rule__Operation__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__1
+
+
+ // $ANTLR start rule__Operation__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3494:1: rule__Operation__Group__1__Impl : ( ( rule__Operation__NameAssignment_1 ) ) ;
+ public final void rule__Operation__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3498:1: ( ( ( rule__Operation__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3499:1: ( ( rule__Operation__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3499:1: ( ( rule__Operation__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3500:1: ( rule__Operation__NameAssignment_1 )
+ {
+ before(grammarAccess.getOperationAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3501:1: ( rule__Operation__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3501:2: rule__Operation__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Operation__NameAssignment_1_in_rule__Operation__Group__1__Impl7415);
+ rule__Operation__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getOperationAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__1__Impl
+
+
+ // $ANTLR start rule__Operation__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3511:1: rule__Operation__Group__2 : rule__Operation__Group__2__Impl rule__Operation__Group__3 ;
+ public final void rule__Operation__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3515:1: ( rule__Operation__Group__2__Impl rule__Operation__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3516:2: rule__Operation__Group__2__Impl rule__Operation__Group__3
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__2__Impl_in_rule__Operation__Group__27445);
+ rule__Operation__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group__3_in_rule__Operation__Group__27448);
+ rule__Operation__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__2
+
+
+ // $ANTLR start rule__Operation__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3523:1: rule__Operation__Group__2__Impl : ( '(' ) ;
+ public final void rule__Operation__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3527:1: ( ( '(' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3528:1: ( '(' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3528:1: ( '(' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3529:1: '('
+ {
+ before(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2());
+ match(input,33,FOLLOW_33_in_rule__Operation__Group__2__Impl7476);
+ after(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__2__Impl
+
+
+ // $ANTLR start rule__Operation__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3542:1: rule__Operation__Group__3 : rule__Operation__Group__3__Impl rule__Operation__Group__4 ;
+ public final void rule__Operation__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3546:1: ( rule__Operation__Group__3__Impl rule__Operation__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3547:2: rule__Operation__Group__3__Impl rule__Operation__Group__4
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__3__Impl_in_rule__Operation__Group__37507);
+ rule__Operation__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group__4_in_rule__Operation__Group__37510);
+ rule__Operation__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__3
+
+
+ // $ANTLR start rule__Operation__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3554:1: rule__Operation__Group__3__Impl : ( ( rule__Operation__Group_3__0 )? ) ;
+ public final void rule__Operation__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3558:1: ( ( ( rule__Operation__Group_3__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3559:1: ( ( rule__Operation__Group_3__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3559:1: ( ( rule__Operation__Group_3__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3560:1: ( rule__Operation__Group_3__0 )?
+ {
+ before(grammarAccess.getOperationAccess().getGroup_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3561:1: ( rule__Operation__Group_3__0 )?
+ int alt26=2;
+ int LA26_0 = input.LA(1);
+
+ if ( (LA26_0==RULE_ID) ) {
+ alt26=1;
+ }
+ switch (alt26) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3561:2: rule__Operation__Group_3__0
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_3__0_in_rule__Operation__Group__3__Impl7537);
+ rule__Operation__Group_3__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getOperationAccess().getGroup_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__3__Impl
+
+
+ // $ANTLR start rule__Operation__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3571:1: rule__Operation__Group__4 : rule__Operation__Group__4__Impl rule__Operation__Group__5 ;
+ public final void rule__Operation__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3575:1: ( rule__Operation__Group__4__Impl rule__Operation__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3576:2: rule__Operation__Group__4__Impl rule__Operation__Group__5
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__4__Impl_in_rule__Operation__Group__47568);
+ rule__Operation__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group__5_in_rule__Operation__Group__47571);
+ rule__Operation__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__4
+
+
+ // $ANTLR start rule__Operation__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3583:1: rule__Operation__Group__4__Impl : ( ')' ) ;
+ public final void rule__Operation__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3587:1: ( ( ')' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3588:1: ( ')' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3588:1: ( ')' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3589:1: ')'
+ {
+ before(grammarAccess.getOperationAccess().getRightParenthesisKeyword_4());
+ match(input,34,FOLLOW_34_in_rule__Operation__Group__4__Impl7599);
+ after(grammarAccess.getOperationAccess().getRightParenthesisKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__4__Impl
+
+
+ // $ANTLR start rule__Operation__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3602:1: rule__Operation__Group__5 : rule__Operation__Group__5__Impl rule__Operation__Group__6 ;
+ public final void rule__Operation__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3606:1: ( rule__Operation__Group__5__Impl rule__Operation__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3607:2: rule__Operation__Group__5__Impl rule__Operation__Group__6
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__5__Impl_in_rule__Operation__Group__57630);
+ rule__Operation__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group__6_in_rule__Operation__Group__57633);
+ rule__Operation__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__5
+
+
+ // $ANTLR start rule__Operation__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3614:1: rule__Operation__Group__5__Impl : ( ( rule__Operation__Group_5__0 )? ) ;
+ public final void rule__Operation__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3618:1: ( ( ( rule__Operation__Group_5__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3619:1: ( ( rule__Operation__Group_5__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3619:1: ( ( rule__Operation__Group_5__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3620:1: ( rule__Operation__Group_5__0 )?
+ {
+ before(grammarAccess.getOperationAccess().getGroup_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3621:1: ( rule__Operation__Group_5__0 )?
+ int alt27=2;
+ int LA27_0 = input.LA(1);
+
+ if ( (LA27_0==26) ) {
+ alt27=1;
+ }
+ switch (alt27) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3621:2: rule__Operation__Group_5__0
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_5__0_in_rule__Operation__Group__5__Impl7660);
+ rule__Operation__Group_5__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getOperationAccess().getGroup_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__5__Impl
+
+
+ // $ANTLR start rule__Operation__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3631:1: rule__Operation__Group__6 : rule__Operation__Group__6__Impl ;
+ public final void rule__Operation__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3635:1: ( rule__Operation__Group__6__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3636:2: rule__Operation__Group__6__Impl
+ {
+ pushFollow(FOLLOW_rule__Operation__Group__6__Impl_in_rule__Operation__Group__67691);
+ rule__Operation__Group__6__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__6
+
+
+ // $ANTLR start rule__Operation__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3642:1: rule__Operation__Group__6__Impl : ( ( rule__Operation__DetailCodeAssignment_6 ) ) ;
+ public final void rule__Operation__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3646:1: ( ( ( rule__Operation__DetailCodeAssignment_6 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3647:1: ( ( rule__Operation__DetailCodeAssignment_6 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3647:1: ( ( rule__Operation__DetailCodeAssignment_6 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3648:1: ( rule__Operation__DetailCodeAssignment_6 )
+ {
+ before(grammarAccess.getOperationAccess().getDetailCodeAssignment_6());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3649:1: ( rule__Operation__DetailCodeAssignment_6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3649:2: rule__Operation__DetailCodeAssignment_6
+ {
+ pushFollow(FOLLOW_rule__Operation__DetailCodeAssignment_6_in_rule__Operation__Group__6__Impl7718);
+ rule__Operation__DetailCodeAssignment_6();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getOperationAccess().getDetailCodeAssignment_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group__6__Impl
+
+
+ // $ANTLR start rule__Operation__Group_3__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3673:1: rule__Operation__Group_3__0 : rule__Operation__Group_3__0__Impl rule__Operation__Group_3__1 ;
+ public final void rule__Operation__Group_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3677:1: ( rule__Operation__Group_3__0__Impl rule__Operation__Group_3__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3678:2: rule__Operation__Group_3__0__Impl rule__Operation__Group_3__1
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_3__0__Impl_in_rule__Operation__Group_3__07762);
+ rule__Operation__Group_3__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group_3__1_in_rule__Operation__Group_3__07765);
+ rule__Operation__Group_3__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3__0
+
+
+ // $ANTLR start rule__Operation__Group_3__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3685:1: rule__Operation__Group_3__0__Impl : ( ( rule__Operation__ArgumentsAssignment_3_0 ) ) ;
+ public final void rule__Operation__Group_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3689:1: ( ( ( rule__Operation__ArgumentsAssignment_3_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3690:1: ( ( rule__Operation__ArgumentsAssignment_3_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3690:1: ( ( rule__Operation__ArgumentsAssignment_3_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3691:1: ( rule__Operation__ArgumentsAssignment_3_0 )
+ {
+ before(grammarAccess.getOperationAccess().getArgumentsAssignment_3_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3692:1: ( rule__Operation__ArgumentsAssignment_3_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3692:2: rule__Operation__ArgumentsAssignment_3_0
+ {
+ pushFollow(FOLLOW_rule__Operation__ArgumentsAssignment_3_0_in_rule__Operation__Group_3__0__Impl7792);
+ rule__Operation__ArgumentsAssignment_3_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getOperationAccess().getArgumentsAssignment_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3__0__Impl
+
+
+ // $ANTLR start rule__Operation__Group_3__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3702:1: rule__Operation__Group_3__1 : rule__Operation__Group_3__1__Impl ;
+ public final void rule__Operation__Group_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3706:1: ( rule__Operation__Group_3__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3707:2: rule__Operation__Group_3__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_3__1__Impl_in_rule__Operation__Group_3__17822);
+ rule__Operation__Group_3__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3__1
+
+
+ // $ANTLR start rule__Operation__Group_3__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3713:1: rule__Operation__Group_3__1__Impl : ( ( rule__Operation__Group_3_1__0 )* ) ;
+ public final void rule__Operation__Group_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3717:1: ( ( ( rule__Operation__Group_3_1__0 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3718:1: ( ( rule__Operation__Group_3_1__0 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3718:1: ( ( rule__Operation__Group_3_1__0 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3719:1: ( rule__Operation__Group_3_1__0 )*
+ {
+ before(grammarAccess.getOperationAccess().getGroup_3_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3720:1: ( rule__Operation__Group_3_1__0 )*
+ loop28:
+ do {
+ int alt28=2;
+ int LA28_0 = input.LA(1);
+
+ if ( (LA28_0==35) ) {
+ alt28=1;
+ }
+
+
+ switch (alt28) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3720:2: rule__Operation__Group_3_1__0
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_3_1__0_in_rule__Operation__Group_3__1__Impl7849);
+ rule__Operation__Group_3_1__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop28;
+ }
+ } while (true);
+
+ after(grammarAccess.getOperationAccess().getGroup_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3__1__Impl
+
+
+ // $ANTLR start rule__Operation__Group_3_1__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3734:1: rule__Operation__Group_3_1__0 : rule__Operation__Group_3_1__0__Impl rule__Operation__Group_3_1__1 ;
+ public final void rule__Operation__Group_3_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3738:1: ( rule__Operation__Group_3_1__0__Impl rule__Operation__Group_3_1__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3739:2: rule__Operation__Group_3_1__0__Impl rule__Operation__Group_3_1__1
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_3_1__0__Impl_in_rule__Operation__Group_3_1__07884);
+ rule__Operation__Group_3_1__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group_3_1__1_in_rule__Operation__Group_3_1__07887);
+ rule__Operation__Group_3_1__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3_1__0
+
+
+ // $ANTLR start rule__Operation__Group_3_1__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3746:1: rule__Operation__Group_3_1__0__Impl : ( ',' ) ;
+ public final void rule__Operation__Group_3_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3750:1: ( ( ',' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3751:1: ( ',' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3751:1: ( ',' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3752:1: ','
+ {
+ before(grammarAccess.getOperationAccess().getCommaKeyword_3_1_0());
+ match(input,35,FOLLOW_35_in_rule__Operation__Group_3_1__0__Impl7915);
+ after(grammarAccess.getOperationAccess().getCommaKeyword_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3_1__0__Impl
+
+
+ // $ANTLR start rule__Operation__Group_3_1__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3765:1: rule__Operation__Group_3_1__1 : rule__Operation__Group_3_1__1__Impl ;
+ public final void rule__Operation__Group_3_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3769:1: ( rule__Operation__Group_3_1__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3770:2: rule__Operation__Group_3_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_3_1__1__Impl_in_rule__Operation__Group_3_1__17946);
+ rule__Operation__Group_3_1__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3_1__1
+
+
+ // $ANTLR start rule__Operation__Group_3_1__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3776:1: rule__Operation__Group_3_1__1__Impl : ( ( rule__Operation__ArgumentsAssignment_3_1_1 ) ) ;
+ public final void rule__Operation__Group_3_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3780:1: ( ( ( rule__Operation__ArgumentsAssignment_3_1_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3781:1: ( ( rule__Operation__ArgumentsAssignment_3_1_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3781:1: ( ( rule__Operation__ArgumentsAssignment_3_1_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3782:1: ( rule__Operation__ArgumentsAssignment_3_1_1 )
+ {
+ before(grammarAccess.getOperationAccess().getArgumentsAssignment_3_1_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3783:1: ( rule__Operation__ArgumentsAssignment_3_1_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3783:2: rule__Operation__ArgumentsAssignment_3_1_1
+ {
+ pushFollow(FOLLOW_rule__Operation__ArgumentsAssignment_3_1_1_in_rule__Operation__Group_3_1__1__Impl7973);
+ rule__Operation__ArgumentsAssignment_3_1_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getOperationAccess().getArgumentsAssignment_3_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_3_1__1__Impl
+
+
+ // $ANTLR start rule__Operation__Group_5__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3797:1: rule__Operation__Group_5__0 : rule__Operation__Group_5__0__Impl rule__Operation__Group_5__1 ;
+ public final void rule__Operation__Group_5__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3801:1: ( rule__Operation__Group_5__0__Impl rule__Operation__Group_5__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3802:2: rule__Operation__Group_5__0__Impl rule__Operation__Group_5__1
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_5__0__Impl_in_rule__Operation__Group_5__08007);
+ rule__Operation__Group_5__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Operation__Group_5__1_in_rule__Operation__Group_5__08010);
+ rule__Operation__Group_5__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_5__0
+
+
+ // $ANTLR start rule__Operation__Group_5__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3809:1: rule__Operation__Group_5__0__Impl : ( ':' ) ;
+ public final void rule__Operation__Group_5__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3813:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3814:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3814:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3815:1: ':'
+ {
+ before(grammarAccess.getOperationAccess().getColonKeyword_5_0());
+ match(input,26,FOLLOW_26_in_rule__Operation__Group_5__0__Impl8038);
+ after(grammarAccess.getOperationAccess().getColonKeyword_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_5__0__Impl
+
+
+ // $ANTLR start rule__Operation__Group_5__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3828:1: rule__Operation__Group_5__1 : rule__Operation__Group_5__1__Impl ;
+ public final void rule__Operation__Group_5__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3832:1: ( rule__Operation__Group_5__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3833:2: rule__Operation__Group_5__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Operation__Group_5__1__Impl_in_rule__Operation__Group_5__18069);
+ rule__Operation__Group_5__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_5__1
+
+
+ // $ANTLR start rule__Operation__Group_5__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3839:1: rule__Operation__Group_5__1__Impl : ( ( rule__Operation__ReturntypeAssignment_5_1 ) ) ;
+ public final void rule__Operation__Group_5__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3843:1: ( ( ( rule__Operation__ReturntypeAssignment_5_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3844:1: ( ( rule__Operation__ReturntypeAssignment_5_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3844:1: ( ( rule__Operation__ReturntypeAssignment_5_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3845:1: ( rule__Operation__ReturntypeAssignment_5_1 )
+ {
+ before(grammarAccess.getOperationAccess().getReturntypeAssignment_5_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3846:1: ( rule__Operation__ReturntypeAssignment_5_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3846:2: rule__Operation__ReturntypeAssignment_5_1
+ {
+ pushFollow(FOLLOW_rule__Operation__ReturntypeAssignment_5_1_in_rule__Operation__Group_5__1__Impl8096);
+ rule__Operation__ReturntypeAssignment_5_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getOperationAccess().getReturntypeAssignment_5_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__Group_5__1__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3860:1: rule__ProtocolClass__Group__0 : rule__ProtocolClass__Group__0__Impl rule__ProtocolClass__Group__1 ;
+ public final void rule__ProtocolClass__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3864:1: ( rule__ProtocolClass__Group__0__Impl rule__ProtocolClass__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3865:2: rule__ProtocolClass__Group__0__Impl rule__ProtocolClass__Group__1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__0__Impl_in_rule__ProtocolClass__Group__08130);
+ rule__ProtocolClass__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__1_in_rule__ProtocolClass__Group__08133);
+ rule__ProtocolClass__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__0
+
+
+ // $ANTLR start rule__ProtocolClass__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3872:1: rule__ProtocolClass__Group__0__Impl : ( 'ProtocolClass' ) ;
+ public final void rule__ProtocolClass__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3876:1: ( ( 'ProtocolClass' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3877:1: ( 'ProtocolClass' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3877:1: ( 'ProtocolClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3878:1: 'ProtocolClass'
+ {
+ before(grammarAccess.getProtocolClassAccess().getProtocolClassKeyword_0());
+ match(input,36,FOLLOW_36_in_rule__ProtocolClass__Group__0__Impl8161);
+ after(grammarAccess.getProtocolClassAccess().getProtocolClassKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__0__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3891:1: rule__ProtocolClass__Group__1 : rule__ProtocolClass__Group__1__Impl rule__ProtocolClass__Group__2 ;
+ public final void rule__ProtocolClass__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3895:1: ( rule__ProtocolClass__Group__1__Impl rule__ProtocolClass__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3896:2: rule__ProtocolClass__Group__1__Impl rule__ProtocolClass__Group__2
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__1__Impl_in_rule__ProtocolClass__Group__18192);
+ rule__ProtocolClass__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__2_in_rule__ProtocolClass__Group__18195);
+ rule__ProtocolClass__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__1
+
+
+ // $ANTLR start rule__ProtocolClass__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3903:1: rule__ProtocolClass__Group__1__Impl : ( ( rule__ProtocolClass__NameAssignment_1 ) ) ;
+ public final void rule__ProtocolClass__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3907:1: ( ( ( rule__ProtocolClass__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3908:1: ( ( rule__ProtocolClass__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3908:1: ( ( rule__ProtocolClass__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3909:1: ( rule__ProtocolClass__NameAssignment_1 )
+ {
+ before(grammarAccess.getProtocolClassAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3910:1: ( rule__ProtocolClass__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3910:2: rule__ProtocolClass__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__NameAssignment_1_in_rule__ProtocolClass__Group__1__Impl8222);
+ rule__ProtocolClass__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__1__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3920:1: rule__ProtocolClass__Group__2 : rule__ProtocolClass__Group__2__Impl rule__ProtocolClass__Group__3 ;
+ public final void rule__ProtocolClass__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3924:1: ( rule__ProtocolClass__Group__2__Impl rule__ProtocolClass__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3925:2: rule__ProtocolClass__Group__2__Impl rule__ProtocolClass__Group__3
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__2__Impl_in_rule__ProtocolClass__Group__28252);
+ rule__ProtocolClass__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__3_in_rule__ProtocolClass__Group__28255);
+ rule__ProtocolClass__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__2
+
+
+ // $ANTLR start rule__ProtocolClass__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3932:1: rule__ProtocolClass__Group__2__Impl : ( ( rule__ProtocolClass__Group_2__0 )? ) ;
+ public final void rule__ProtocolClass__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3936:1: ( ( ( rule__ProtocolClass__Group_2__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3937:1: ( ( rule__ProtocolClass__Group_2__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3937:1: ( ( rule__ProtocolClass__Group_2__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3938:1: ( rule__ProtocolClass__Group_2__0 )?
+ {
+ before(grammarAccess.getProtocolClassAccess().getGroup_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3939:1: ( rule__ProtocolClass__Group_2__0 )?
+ int alt29=2;
+ int LA29_0 = input.LA(1);
+
+ if ( (LA29_0==28) ) {
+ alt29=1;
+ }
+ switch (alt29) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3939:2: rule__ProtocolClass__Group_2__0
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_2__0_in_rule__ProtocolClass__Group__2__Impl8282);
+ rule__ProtocolClass__Group_2__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getGroup_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__2__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3949:1: rule__ProtocolClass__Group__3 : rule__ProtocolClass__Group__3__Impl rule__ProtocolClass__Group__4 ;
+ public final void rule__ProtocolClass__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3953:1: ( rule__ProtocolClass__Group__3__Impl rule__ProtocolClass__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3954:2: rule__ProtocolClass__Group__3__Impl rule__ProtocolClass__Group__4
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__3__Impl_in_rule__ProtocolClass__Group__38313);
+ rule__ProtocolClass__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__4_in_rule__ProtocolClass__Group__38316);
+ rule__ProtocolClass__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__3
+
+
+ // $ANTLR start rule__ProtocolClass__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3961:1: rule__ProtocolClass__Group__3__Impl : ( '{' ) ;
+ public final void rule__ProtocolClass__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3965:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3966:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3966:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3967:1: '{'
+ {
+ before(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_3());
+ match(input,24,FOLLOW_24_in_rule__ProtocolClass__Group__3__Impl8344);
+ after(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__3__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3980:1: rule__ProtocolClass__Group__4 : rule__ProtocolClass__Group__4__Impl rule__ProtocolClass__Group__5 ;
+ public final void rule__ProtocolClass__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3984:1: ( rule__ProtocolClass__Group__4__Impl rule__ProtocolClass__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3985:2: rule__ProtocolClass__Group__4__Impl rule__ProtocolClass__Group__5
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__4__Impl_in_rule__ProtocolClass__Group__48375);
+ rule__ProtocolClass__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__5_in_rule__ProtocolClass__Group__48378);
+ rule__ProtocolClass__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__4
+
+
+ // $ANTLR start rule__ProtocolClass__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3992:1: rule__ProtocolClass__Group__4__Impl : ( ( rule__ProtocolClass__Group_4__0 )? ) ;
+ public final void rule__ProtocolClass__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3996:1: ( ( ( rule__ProtocolClass__Group_4__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3997:1: ( ( rule__ProtocolClass__Group_4__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3997:1: ( ( rule__ProtocolClass__Group_4__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3998:1: ( rule__ProtocolClass__Group_4__0 )?
+ {
+ before(grammarAccess.getProtocolClassAccess().getGroup_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3999:1: ( rule__ProtocolClass__Group_4__0 )?
+ int alt30=2;
+ int LA30_0 = input.LA(1);
+
+ if ( (LA30_0==39) ) {
+ alt30=1;
+ }
+ switch (alt30) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:3999:2: rule__ProtocolClass__Group_4__0
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_4__0_in_rule__ProtocolClass__Group__4__Impl8405);
+ rule__ProtocolClass__Group_4__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getGroup_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__4__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4009:1: rule__ProtocolClass__Group__5 : rule__ProtocolClass__Group__5__Impl rule__ProtocolClass__Group__6 ;
+ public final void rule__ProtocolClass__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4013:1: ( rule__ProtocolClass__Group__5__Impl rule__ProtocolClass__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4014:2: rule__ProtocolClass__Group__5__Impl rule__ProtocolClass__Group__6
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__5__Impl_in_rule__ProtocolClass__Group__58436);
+ rule__ProtocolClass__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__6_in_rule__ProtocolClass__Group__58439);
+ rule__ProtocolClass__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__5
+
+
+ // $ANTLR start rule__ProtocolClass__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4021:1: rule__ProtocolClass__Group__5__Impl : ( ( rule__ProtocolClass__Group_5__0 )? ) ;
+ public final void rule__ProtocolClass__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4025:1: ( ( ( rule__ProtocolClass__Group_5__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4026:1: ( ( rule__ProtocolClass__Group_5__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4026:1: ( ( rule__ProtocolClass__Group_5__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4027:1: ( rule__ProtocolClass__Group_5__0 )?
+ {
+ before(grammarAccess.getProtocolClassAccess().getGroup_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4028:1: ( rule__ProtocolClass__Group_5__0 )?
+ int alt31=2;
+ int LA31_0 = input.LA(1);
+
+ if ( (LA31_0==40) ) {
+ alt31=1;
+ }
+ switch (alt31) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4028:2: rule__ProtocolClass__Group_5__0
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_5__0_in_rule__ProtocolClass__Group__5__Impl8466);
+ rule__ProtocolClass__Group_5__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getGroup_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__5__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4038:1: rule__ProtocolClass__Group__6 : rule__ProtocolClass__Group__6__Impl rule__ProtocolClass__Group__7 ;
+ public final void rule__ProtocolClass__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4042:1: ( rule__ProtocolClass__Group__6__Impl rule__ProtocolClass__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4043:2: rule__ProtocolClass__Group__6__Impl rule__ProtocolClass__Group__7
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__6__Impl_in_rule__ProtocolClass__Group__68497);
+ rule__ProtocolClass__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__7_in_rule__ProtocolClass__Group__68500);
+ rule__ProtocolClass__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__6
+
+
+ // $ANTLR start rule__ProtocolClass__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4050:1: rule__ProtocolClass__Group__6__Impl : ( 'incoming' ) ;
+ public final void rule__ProtocolClass__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4054:1: ( ( 'incoming' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4055:1: ( 'incoming' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4055:1: ( 'incoming' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4056:1: 'incoming'
+ {
+ before(grammarAccess.getProtocolClassAccess().getIncomingKeyword_6());
+ match(input,37,FOLLOW_37_in_rule__ProtocolClass__Group__6__Impl8528);
+ after(grammarAccess.getProtocolClassAccess().getIncomingKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__6__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4069:1: rule__ProtocolClass__Group__7 : rule__ProtocolClass__Group__7__Impl rule__ProtocolClass__Group__8 ;
+ public final void rule__ProtocolClass__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4073:1: ( rule__ProtocolClass__Group__7__Impl rule__ProtocolClass__Group__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4074:2: rule__ProtocolClass__Group__7__Impl rule__ProtocolClass__Group__8
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__7__Impl_in_rule__ProtocolClass__Group__78559);
+ rule__ProtocolClass__Group__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__8_in_rule__ProtocolClass__Group__78562);
+ rule__ProtocolClass__Group__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__7
+
+
+ // $ANTLR start rule__ProtocolClass__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4081:1: rule__ProtocolClass__Group__7__Impl : ( '{' ) ;
+ public final void rule__ProtocolClass__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4085:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4086:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4086:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4087:1: '{'
+ {
+ before(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_7());
+ match(input,24,FOLLOW_24_in_rule__ProtocolClass__Group__7__Impl8590);
+ after(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__7__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4100:1: rule__ProtocolClass__Group__8 : rule__ProtocolClass__Group__8__Impl rule__ProtocolClass__Group__9 ;
+ public final void rule__ProtocolClass__Group__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4104:1: ( rule__ProtocolClass__Group__8__Impl rule__ProtocolClass__Group__9 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4105:2: rule__ProtocolClass__Group__8__Impl rule__ProtocolClass__Group__9
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__8__Impl_in_rule__ProtocolClass__Group__88621);
+ rule__ProtocolClass__Group__8__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__9_in_rule__ProtocolClass__Group__88624);
+ rule__ProtocolClass__Group__9();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__8
+
+
+ // $ANTLR start rule__ProtocolClass__Group__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4112:1: rule__ProtocolClass__Group__8__Impl : ( ( rule__ProtocolClass__IncomingMessagesAssignment_8 )* ) ;
+ public final void rule__ProtocolClass__Group__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4116:1: ( ( ( rule__ProtocolClass__IncomingMessagesAssignment_8 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4117:1: ( ( rule__ProtocolClass__IncomingMessagesAssignment_8 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4117:1: ( ( rule__ProtocolClass__IncomingMessagesAssignment_8 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4118:1: ( rule__ProtocolClass__IncomingMessagesAssignment_8 )*
+ {
+ before(grammarAccess.getProtocolClassAccess().getIncomingMessagesAssignment_8());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4119:1: ( rule__ProtocolClass__IncomingMessagesAssignment_8 )*
+ loop32:
+ do {
+ int alt32=2;
+ int LA32_0 = input.LA(1);
+
+ if ( (LA32_0==44) ) {
+ alt32=1;
+ }
+
+
+ switch (alt32) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4119:2: rule__ProtocolClass__IncomingMessagesAssignment_8
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__IncomingMessagesAssignment_8_in_rule__ProtocolClass__Group__8__Impl8651);
+ rule__ProtocolClass__IncomingMessagesAssignment_8();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop32;
+ }
+ } while (true);
+
+ after(grammarAccess.getProtocolClassAccess().getIncomingMessagesAssignment_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__8__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__9
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4129:1: rule__ProtocolClass__Group__9 : rule__ProtocolClass__Group__9__Impl rule__ProtocolClass__Group__10 ;
+ public final void rule__ProtocolClass__Group__9() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4133:1: ( rule__ProtocolClass__Group__9__Impl rule__ProtocolClass__Group__10 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4134:2: rule__ProtocolClass__Group__9__Impl rule__ProtocolClass__Group__10
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__9__Impl_in_rule__ProtocolClass__Group__98682);
+ rule__ProtocolClass__Group__9__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__10_in_rule__ProtocolClass__Group__98685);
+ rule__ProtocolClass__Group__10();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__9
+
+
+ // $ANTLR start rule__ProtocolClass__Group__9__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4141:1: rule__ProtocolClass__Group__9__Impl : ( '}' ) ;
+ public final void rule__ProtocolClass__Group__9__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4145:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4146:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4146:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4147:1: '}'
+ {
+ before(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_9());
+ match(input,25,FOLLOW_25_in_rule__ProtocolClass__Group__9__Impl8713);
+ after(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_9());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__9__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__10
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4160:1: rule__ProtocolClass__Group__10 : rule__ProtocolClass__Group__10__Impl rule__ProtocolClass__Group__11 ;
+ public final void rule__ProtocolClass__Group__10() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4164:1: ( rule__ProtocolClass__Group__10__Impl rule__ProtocolClass__Group__11 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4165:2: rule__ProtocolClass__Group__10__Impl rule__ProtocolClass__Group__11
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__10__Impl_in_rule__ProtocolClass__Group__108744);
+ rule__ProtocolClass__Group__10__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__11_in_rule__ProtocolClass__Group__108747);
+ rule__ProtocolClass__Group__11();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__10
+
+
+ // $ANTLR start rule__ProtocolClass__Group__10__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4172:1: rule__ProtocolClass__Group__10__Impl : ( 'outgoing' ) ;
+ public final void rule__ProtocolClass__Group__10__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4176:1: ( ( 'outgoing' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4177:1: ( 'outgoing' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4177:1: ( 'outgoing' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4178:1: 'outgoing'
+ {
+ before(grammarAccess.getProtocolClassAccess().getOutgoingKeyword_10());
+ match(input,38,FOLLOW_38_in_rule__ProtocolClass__Group__10__Impl8775);
+ after(grammarAccess.getProtocolClassAccess().getOutgoingKeyword_10());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__10__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__11
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4191:1: rule__ProtocolClass__Group__11 : rule__ProtocolClass__Group__11__Impl rule__ProtocolClass__Group__12 ;
+ public final void rule__ProtocolClass__Group__11() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4195:1: ( rule__ProtocolClass__Group__11__Impl rule__ProtocolClass__Group__12 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4196:2: rule__ProtocolClass__Group__11__Impl rule__ProtocolClass__Group__12
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__11__Impl_in_rule__ProtocolClass__Group__118806);
+ rule__ProtocolClass__Group__11__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__12_in_rule__ProtocolClass__Group__118809);
+ rule__ProtocolClass__Group__12();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__11
+
+
+ // $ANTLR start rule__ProtocolClass__Group__11__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4203:1: rule__ProtocolClass__Group__11__Impl : ( '{' ) ;
+ public final void rule__ProtocolClass__Group__11__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4207:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4208:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4208:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4209:1: '{'
+ {
+ before(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_11());
+ match(input,24,FOLLOW_24_in_rule__ProtocolClass__Group__11__Impl8837);
+ after(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_11());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__11__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__12
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4222:1: rule__ProtocolClass__Group__12 : rule__ProtocolClass__Group__12__Impl rule__ProtocolClass__Group__13 ;
+ public final void rule__ProtocolClass__Group__12() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4226:1: ( rule__ProtocolClass__Group__12__Impl rule__ProtocolClass__Group__13 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4227:2: rule__ProtocolClass__Group__12__Impl rule__ProtocolClass__Group__13
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__12__Impl_in_rule__ProtocolClass__Group__128868);
+ rule__ProtocolClass__Group__12__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__13_in_rule__ProtocolClass__Group__128871);
+ rule__ProtocolClass__Group__13();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__12
+
+
+ // $ANTLR start rule__ProtocolClass__Group__12__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4234:1: rule__ProtocolClass__Group__12__Impl : ( ( rule__ProtocolClass__OutgoingMessagesAssignment_12 )* ) ;
+ public final void rule__ProtocolClass__Group__12__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4238:1: ( ( ( rule__ProtocolClass__OutgoingMessagesAssignment_12 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4239:1: ( ( rule__ProtocolClass__OutgoingMessagesAssignment_12 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4239:1: ( ( rule__ProtocolClass__OutgoingMessagesAssignment_12 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4240:1: ( rule__ProtocolClass__OutgoingMessagesAssignment_12 )*
+ {
+ before(grammarAccess.getProtocolClassAccess().getOutgoingMessagesAssignment_12());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4241:1: ( rule__ProtocolClass__OutgoingMessagesAssignment_12 )*
+ loop33:
+ do {
+ int alt33=2;
+ int LA33_0 = input.LA(1);
+
+ if ( (LA33_0==44) ) {
+ alt33=1;
+ }
+
+
+ switch (alt33) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4241:2: rule__ProtocolClass__OutgoingMessagesAssignment_12
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__OutgoingMessagesAssignment_12_in_rule__ProtocolClass__Group__12__Impl8898);
+ rule__ProtocolClass__OutgoingMessagesAssignment_12();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop33;
+ }
+ } while (true);
+
+ after(grammarAccess.getProtocolClassAccess().getOutgoingMessagesAssignment_12());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__12__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__13
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4251:1: rule__ProtocolClass__Group__13 : rule__ProtocolClass__Group__13__Impl rule__ProtocolClass__Group__14 ;
+ public final void rule__ProtocolClass__Group__13() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4255:1: ( rule__ProtocolClass__Group__13__Impl rule__ProtocolClass__Group__14 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4256:2: rule__ProtocolClass__Group__13__Impl rule__ProtocolClass__Group__14
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__13__Impl_in_rule__ProtocolClass__Group__138929);
+ rule__ProtocolClass__Group__13__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__14_in_rule__ProtocolClass__Group__138932);
+ rule__ProtocolClass__Group__14();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__13
+
+
+ // $ANTLR start rule__ProtocolClass__Group__13__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4263:1: rule__ProtocolClass__Group__13__Impl : ( '}' ) ;
+ public final void rule__ProtocolClass__Group__13__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4267:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4268:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4268:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4269:1: '}'
+ {
+ before(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_13());
+ match(input,25,FOLLOW_25_in_rule__ProtocolClass__Group__13__Impl8960);
+ after(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_13());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__13__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__14
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4282:1: rule__ProtocolClass__Group__14 : rule__ProtocolClass__Group__14__Impl rule__ProtocolClass__Group__15 ;
+ public final void rule__ProtocolClass__Group__14() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4286:1: ( rule__ProtocolClass__Group__14__Impl rule__ProtocolClass__Group__15 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4287:2: rule__ProtocolClass__Group__14__Impl rule__ProtocolClass__Group__15
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__14__Impl_in_rule__ProtocolClass__Group__148991);
+ rule__ProtocolClass__Group__14__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__15_in_rule__ProtocolClass__Group__148994);
+ rule__ProtocolClass__Group__15();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__14
+
+
+ // $ANTLR start rule__ProtocolClass__Group__14__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4294:1: rule__ProtocolClass__Group__14__Impl : ( ( rule__ProtocolClass__Group_14__0 )? ) ;
+ public final void rule__ProtocolClass__Group__14__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4298:1: ( ( ( rule__ProtocolClass__Group_14__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4299:1: ( ( rule__ProtocolClass__Group_14__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4299:1: ( ( rule__ProtocolClass__Group_14__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4300:1: ( rule__ProtocolClass__Group_14__0 )?
+ {
+ before(grammarAccess.getProtocolClassAccess().getGroup_14());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4301:1: ( rule__ProtocolClass__Group_14__0 )?
+ int alt34=2;
+ int LA34_0 = input.LA(1);
+
+ if ( (LA34_0==41) ) {
+ alt34=1;
+ }
+ switch (alt34) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4301:2: rule__ProtocolClass__Group_14__0
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_14__0_in_rule__ProtocolClass__Group__14__Impl9021);
+ rule__ProtocolClass__Group_14__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getGroup_14());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__14__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__15
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4311:1: rule__ProtocolClass__Group__15 : rule__ProtocolClass__Group__15__Impl rule__ProtocolClass__Group__16 ;
+ public final void rule__ProtocolClass__Group__15() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4315:1: ( rule__ProtocolClass__Group__15__Impl rule__ProtocolClass__Group__16 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4316:2: rule__ProtocolClass__Group__15__Impl rule__ProtocolClass__Group__16
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__15__Impl_in_rule__ProtocolClass__Group__159052);
+ rule__ProtocolClass__Group__15__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__16_in_rule__ProtocolClass__Group__159055);
+ rule__ProtocolClass__Group__16();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__15
+
+
+ // $ANTLR start rule__ProtocolClass__Group__15__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4323:1: rule__ProtocolClass__Group__15__Impl : ( ( rule__ProtocolClass__Group_15__0 )? ) ;
+ public final void rule__ProtocolClass__Group__15__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4327:1: ( ( ( rule__ProtocolClass__Group_15__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4328:1: ( ( rule__ProtocolClass__Group_15__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4328:1: ( ( rule__ProtocolClass__Group_15__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4329:1: ( rule__ProtocolClass__Group_15__0 )?
+ {
+ before(grammarAccess.getProtocolClassAccess().getGroup_15());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4330:1: ( rule__ProtocolClass__Group_15__0 )?
+ int alt35=2;
+ int LA35_0 = input.LA(1);
+
+ if ( (LA35_0==43) ) {
+ alt35=1;
+ }
+ switch (alt35) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4330:2: rule__ProtocolClass__Group_15__0
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_15__0_in_rule__ProtocolClass__Group__15__Impl9082);
+ rule__ProtocolClass__Group_15__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getGroup_15());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__15__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__16
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4340:1: rule__ProtocolClass__Group__16 : rule__ProtocolClass__Group__16__Impl rule__ProtocolClass__Group__17 ;
+ public final void rule__ProtocolClass__Group__16() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4344:1: ( rule__ProtocolClass__Group__16__Impl rule__ProtocolClass__Group__17 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4345:2: rule__ProtocolClass__Group__16__Impl rule__ProtocolClass__Group__17
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__16__Impl_in_rule__ProtocolClass__Group__169113);
+ rule__ProtocolClass__Group__16__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__17_in_rule__ProtocolClass__Group__169116);
+ rule__ProtocolClass__Group__17();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__16
+
+
+ // $ANTLR start rule__ProtocolClass__Group__16__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4352:1: rule__ProtocolClass__Group__16__Impl : ( ( rule__ProtocolClass__SemanticsAssignment_16 )? ) ;
+ public final void rule__ProtocolClass__Group__16__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4356:1: ( ( ( rule__ProtocolClass__SemanticsAssignment_16 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4357:1: ( ( rule__ProtocolClass__SemanticsAssignment_16 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4357:1: ( ( rule__ProtocolClass__SemanticsAssignment_16 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4358:1: ( rule__ProtocolClass__SemanticsAssignment_16 )?
+ {
+ before(grammarAccess.getProtocolClassAccess().getSemanticsAssignment_16());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4359:1: ( rule__ProtocolClass__SemanticsAssignment_16 )?
+ int alt36=2;
+ int LA36_0 = input.LA(1);
+
+ if ( (LA36_0==47) ) {
+ alt36=1;
+ }
+ switch (alt36) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4359:2: rule__ProtocolClass__SemanticsAssignment_16
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__SemanticsAssignment_16_in_rule__ProtocolClass__Group__16__Impl9143);
+ rule__ProtocolClass__SemanticsAssignment_16();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getSemanticsAssignment_16());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__16__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group__17
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4369:1: rule__ProtocolClass__Group__17 : rule__ProtocolClass__Group__17__Impl ;
+ public final void rule__ProtocolClass__Group__17() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4373:1: ( rule__ProtocolClass__Group__17__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4374:2: rule__ProtocolClass__Group__17__Impl
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group__17__Impl_in_rule__ProtocolClass__Group__179174);
+ rule__ProtocolClass__Group__17__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__17
+
+
+ // $ANTLR start rule__ProtocolClass__Group__17__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4380:1: rule__ProtocolClass__Group__17__Impl : ( '}' ) ;
+ public final void rule__ProtocolClass__Group__17__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4384:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4385:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4385:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4386:1: '}'
+ {
+ before(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_17());
+ match(input,25,FOLLOW_25_in_rule__ProtocolClass__Group__17__Impl9202);
+ after(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_17());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group__17__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_2__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4435:1: rule__ProtocolClass__Group_2__0 : rule__ProtocolClass__Group_2__0__Impl rule__ProtocolClass__Group_2__1 ;
+ public final void rule__ProtocolClass__Group_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4439:1: ( rule__ProtocolClass__Group_2__0__Impl rule__ProtocolClass__Group_2__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4440:2: rule__ProtocolClass__Group_2__0__Impl rule__ProtocolClass__Group_2__1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_2__0__Impl_in_rule__ProtocolClass__Group_2__09269);
+ rule__ProtocolClass__Group_2__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_2__1_in_rule__ProtocolClass__Group_2__09272);
+ rule__ProtocolClass__Group_2__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_2__0
+
+
+ // $ANTLR start rule__ProtocolClass__Group_2__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4447:1: rule__ProtocolClass__Group_2__0__Impl : ( 'extends' ) ;
+ public final void rule__ProtocolClass__Group_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4451:1: ( ( 'extends' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4452:1: ( 'extends' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4452:1: ( 'extends' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4453:1: 'extends'
+ {
+ before(grammarAccess.getProtocolClassAccess().getExtendsKeyword_2_0());
+ match(input,28,FOLLOW_28_in_rule__ProtocolClass__Group_2__0__Impl9300);
+ after(grammarAccess.getProtocolClassAccess().getExtendsKeyword_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_2__0__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_2__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4466:1: rule__ProtocolClass__Group_2__1 : rule__ProtocolClass__Group_2__1__Impl ;
+ public final void rule__ProtocolClass__Group_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4470:1: ( rule__ProtocolClass__Group_2__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4471:2: rule__ProtocolClass__Group_2__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_2__1__Impl_in_rule__ProtocolClass__Group_2__19331);
+ rule__ProtocolClass__Group_2__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_2__1
+
+
+ // $ANTLR start rule__ProtocolClass__Group_2__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4477:1: rule__ProtocolClass__Group_2__1__Impl : ( ( rule__ProtocolClass__BaseAssignment_2_1 ) ) ;
+ public final void rule__ProtocolClass__Group_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4481:1: ( ( ( rule__ProtocolClass__BaseAssignment_2_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4482:1: ( ( rule__ProtocolClass__BaseAssignment_2_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4482:1: ( ( rule__ProtocolClass__BaseAssignment_2_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4483:1: ( rule__ProtocolClass__BaseAssignment_2_1 )
+ {
+ before(grammarAccess.getProtocolClassAccess().getBaseAssignment_2_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4484:1: ( rule__ProtocolClass__BaseAssignment_2_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4484:2: rule__ProtocolClass__BaseAssignment_2_1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__BaseAssignment_2_1_in_rule__ProtocolClass__Group_2__1__Impl9358);
+ rule__ProtocolClass__BaseAssignment_2_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getBaseAssignment_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_2__1__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_4__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4498:1: rule__ProtocolClass__Group_4__0 : rule__ProtocolClass__Group_4__0__Impl rule__ProtocolClass__Group_4__1 ;
+ public final void rule__ProtocolClass__Group_4__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4502:1: ( rule__ProtocolClass__Group_4__0__Impl rule__ProtocolClass__Group_4__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4503:2: rule__ProtocolClass__Group_4__0__Impl rule__ProtocolClass__Group_4__1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_4__0__Impl_in_rule__ProtocolClass__Group_4__09392);
+ rule__ProtocolClass__Group_4__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_4__1_in_rule__ProtocolClass__Group_4__09395);
+ rule__ProtocolClass__Group_4__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_4__0
+
+
+ // $ANTLR start rule__ProtocolClass__Group_4__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4510:1: rule__ProtocolClass__Group_4__0__Impl : ( 'usercode1' ) ;
+ public final void rule__ProtocolClass__Group_4__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4514:1: ( ( 'usercode1' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4515:1: ( 'usercode1' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4515:1: ( 'usercode1' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4516:1: 'usercode1'
+ {
+ before(grammarAccess.getProtocolClassAccess().getUsercode1Keyword_4_0());
+ match(input,39,FOLLOW_39_in_rule__ProtocolClass__Group_4__0__Impl9423);
+ after(grammarAccess.getProtocolClassAccess().getUsercode1Keyword_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_4__0__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_4__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4529:1: rule__ProtocolClass__Group_4__1 : rule__ProtocolClass__Group_4__1__Impl ;
+ public final void rule__ProtocolClass__Group_4__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4533:1: ( rule__ProtocolClass__Group_4__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4534:2: rule__ProtocolClass__Group_4__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_4__1__Impl_in_rule__ProtocolClass__Group_4__19454);
+ rule__ProtocolClass__Group_4__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_4__1
+
+
+ // $ANTLR start rule__ProtocolClass__Group_4__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4540:1: rule__ProtocolClass__Group_4__1__Impl : ( ( rule__ProtocolClass__UserCode1Assignment_4_1 ) ) ;
+ public final void rule__ProtocolClass__Group_4__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4544:1: ( ( ( rule__ProtocolClass__UserCode1Assignment_4_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4545:1: ( ( rule__ProtocolClass__UserCode1Assignment_4_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4545:1: ( ( rule__ProtocolClass__UserCode1Assignment_4_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4546:1: ( rule__ProtocolClass__UserCode1Assignment_4_1 )
+ {
+ before(grammarAccess.getProtocolClassAccess().getUserCode1Assignment_4_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4547:1: ( rule__ProtocolClass__UserCode1Assignment_4_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4547:2: rule__ProtocolClass__UserCode1Assignment_4_1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__UserCode1Assignment_4_1_in_rule__ProtocolClass__Group_4__1__Impl9481);
+ rule__ProtocolClass__UserCode1Assignment_4_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getUserCode1Assignment_4_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_4__1__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_5__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4561:1: rule__ProtocolClass__Group_5__0 : rule__ProtocolClass__Group_5__0__Impl rule__ProtocolClass__Group_5__1 ;
+ public final void rule__ProtocolClass__Group_5__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4565:1: ( rule__ProtocolClass__Group_5__0__Impl rule__ProtocolClass__Group_5__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4566:2: rule__ProtocolClass__Group_5__0__Impl rule__ProtocolClass__Group_5__1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_5__0__Impl_in_rule__ProtocolClass__Group_5__09515);
+ rule__ProtocolClass__Group_5__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_5__1_in_rule__ProtocolClass__Group_5__09518);
+ rule__ProtocolClass__Group_5__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_5__0
+
+
+ // $ANTLR start rule__ProtocolClass__Group_5__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4573:1: rule__ProtocolClass__Group_5__0__Impl : ( 'usercode2' ) ;
+ public final void rule__ProtocolClass__Group_5__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4577:1: ( ( 'usercode2' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4578:1: ( 'usercode2' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4578:1: ( 'usercode2' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4579:1: 'usercode2'
+ {
+ before(grammarAccess.getProtocolClassAccess().getUsercode2Keyword_5_0());
+ match(input,40,FOLLOW_40_in_rule__ProtocolClass__Group_5__0__Impl9546);
+ after(grammarAccess.getProtocolClassAccess().getUsercode2Keyword_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_5__0__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_5__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4592:1: rule__ProtocolClass__Group_5__1 : rule__ProtocolClass__Group_5__1__Impl ;
+ public final void rule__ProtocolClass__Group_5__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4596:1: ( rule__ProtocolClass__Group_5__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4597:2: rule__ProtocolClass__Group_5__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_5__1__Impl_in_rule__ProtocolClass__Group_5__19577);
+ rule__ProtocolClass__Group_5__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_5__1
+
+
+ // $ANTLR start rule__ProtocolClass__Group_5__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4603:1: rule__ProtocolClass__Group_5__1__Impl : ( ( rule__ProtocolClass__UserCode2Assignment_5_1 ) ) ;
+ public final void rule__ProtocolClass__Group_5__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4607:1: ( ( ( rule__ProtocolClass__UserCode2Assignment_5_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4608:1: ( ( rule__ProtocolClass__UserCode2Assignment_5_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4608:1: ( ( rule__ProtocolClass__UserCode2Assignment_5_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4609:1: ( rule__ProtocolClass__UserCode2Assignment_5_1 )
+ {
+ before(grammarAccess.getProtocolClassAccess().getUserCode2Assignment_5_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4610:1: ( rule__ProtocolClass__UserCode2Assignment_5_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4610:2: rule__ProtocolClass__UserCode2Assignment_5_1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__UserCode2Assignment_5_1_in_rule__ProtocolClass__Group_5__1__Impl9604);
+ rule__ProtocolClass__UserCode2Assignment_5_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getUserCode2Assignment_5_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_5__1__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_14__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4624:1: rule__ProtocolClass__Group_14__0 : rule__ProtocolClass__Group_14__0__Impl rule__ProtocolClass__Group_14__1 ;
+ public final void rule__ProtocolClass__Group_14__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4628:1: ( rule__ProtocolClass__Group_14__0__Impl rule__ProtocolClass__Group_14__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4629:2: rule__ProtocolClass__Group_14__0__Impl rule__ProtocolClass__Group_14__1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_14__0__Impl_in_rule__ProtocolClass__Group_14__09638);
+ rule__ProtocolClass__Group_14__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_14__1_in_rule__ProtocolClass__Group_14__09641);
+ rule__ProtocolClass__Group_14__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_14__0
+
+
+ // $ANTLR start rule__ProtocolClass__Group_14__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4636:1: rule__ProtocolClass__Group_14__0__Impl : ( 'regular' ) ;
+ public final void rule__ProtocolClass__Group_14__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4640:1: ( ( 'regular' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4641:1: ( 'regular' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4641:1: ( 'regular' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4642:1: 'regular'
+ {
+ before(grammarAccess.getProtocolClassAccess().getRegularKeyword_14_0());
+ match(input,41,FOLLOW_41_in_rule__ProtocolClass__Group_14__0__Impl9669);
+ after(grammarAccess.getProtocolClassAccess().getRegularKeyword_14_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_14__0__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_14__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4655:1: rule__ProtocolClass__Group_14__1 : rule__ProtocolClass__Group_14__1__Impl rule__ProtocolClass__Group_14__2 ;
+ public final void rule__ProtocolClass__Group_14__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4659:1: ( rule__ProtocolClass__Group_14__1__Impl rule__ProtocolClass__Group_14__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4660:2: rule__ProtocolClass__Group_14__1__Impl rule__ProtocolClass__Group_14__2
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_14__1__Impl_in_rule__ProtocolClass__Group_14__19700);
+ rule__ProtocolClass__Group_14__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_14__2_in_rule__ProtocolClass__Group_14__19703);
+ rule__ProtocolClass__Group_14__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_14__1
+
+
+ // $ANTLR start rule__ProtocolClass__Group_14__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4667:1: rule__ProtocolClass__Group_14__1__Impl : ( 'PortClass' ) ;
+ public final void rule__ProtocolClass__Group_14__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4671:1: ( ( 'PortClass' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4672:1: ( 'PortClass' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4672:1: ( 'PortClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4673:1: 'PortClass'
+ {
+ before(grammarAccess.getProtocolClassAccess().getPortClassKeyword_14_1());
+ match(input,42,FOLLOW_42_in_rule__ProtocolClass__Group_14__1__Impl9731);
+ after(grammarAccess.getProtocolClassAccess().getPortClassKeyword_14_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_14__1__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_14__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4686:1: rule__ProtocolClass__Group_14__2 : rule__ProtocolClass__Group_14__2__Impl ;
+ public final void rule__ProtocolClass__Group_14__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4690:1: ( rule__ProtocolClass__Group_14__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4691:2: rule__ProtocolClass__Group_14__2__Impl
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_14__2__Impl_in_rule__ProtocolClass__Group_14__29762);
+ rule__ProtocolClass__Group_14__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_14__2
+
+
+ // $ANTLR start rule__ProtocolClass__Group_14__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4697:1: rule__ProtocolClass__Group_14__2__Impl : ( ( rule__ProtocolClass__RegularAssignment_14_2 ) ) ;
+ public final void rule__ProtocolClass__Group_14__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4701:1: ( ( ( rule__ProtocolClass__RegularAssignment_14_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4702:1: ( ( rule__ProtocolClass__RegularAssignment_14_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4702:1: ( ( rule__ProtocolClass__RegularAssignment_14_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4703:1: ( rule__ProtocolClass__RegularAssignment_14_2 )
+ {
+ before(grammarAccess.getProtocolClassAccess().getRegularAssignment_14_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4704:1: ( rule__ProtocolClass__RegularAssignment_14_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4704:2: rule__ProtocolClass__RegularAssignment_14_2
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__RegularAssignment_14_2_in_rule__ProtocolClass__Group_14__2__Impl9789);
+ rule__ProtocolClass__RegularAssignment_14_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getRegularAssignment_14_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_14__2__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_15__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4720:1: rule__ProtocolClass__Group_15__0 : rule__ProtocolClass__Group_15__0__Impl rule__ProtocolClass__Group_15__1 ;
+ public final void rule__ProtocolClass__Group_15__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4724:1: ( rule__ProtocolClass__Group_15__0__Impl rule__ProtocolClass__Group_15__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4725:2: rule__ProtocolClass__Group_15__0__Impl rule__ProtocolClass__Group_15__1
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_15__0__Impl_in_rule__ProtocolClass__Group_15__09825);
+ rule__ProtocolClass__Group_15__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_15__1_in_rule__ProtocolClass__Group_15__09828);
+ rule__ProtocolClass__Group_15__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_15__0
+
+
+ // $ANTLR start rule__ProtocolClass__Group_15__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4732:1: rule__ProtocolClass__Group_15__0__Impl : ( 'conjugate' ) ;
+ public final void rule__ProtocolClass__Group_15__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4736:1: ( ( 'conjugate' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4737:1: ( 'conjugate' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4737:1: ( 'conjugate' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4738:1: 'conjugate'
+ {
+ before(grammarAccess.getProtocolClassAccess().getConjugateKeyword_15_0());
+ match(input,43,FOLLOW_43_in_rule__ProtocolClass__Group_15__0__Impl9856);
+ after(grammarAccess.getProtocolClassAccess().getConjugateKeyword_15_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_15__0__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_15__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4751:1: rule__ProtocolClass__Group_15__1 : rule__ProtocolClass__Group_15__1__Impl rule__ProtocolClass__Group_15__2 ;
+ public final void rule__ProtocolClass__Group_15__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4755:1: ( rule__ProtocolClass__Group_15__1__Impl rule__ProtocolClass__Group_15__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4756:2: rule__ProtocolClass__Group_15__1__Impl rule__ProtocolClass__Group_15__2
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_15__1__Impl_in_rule__ProtocolClass__Group_15__19887);
+ rule__ProtocolClass__Group_15__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_15__2_in_rule__ProtocolClass__Group_15__19890);
+ rule__ProtocolClass__Group_15__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_15__1
+
+
+ // $ANTLR start rule__ProtocolClass__Group_15__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4763:1: rule__ProtocolClass__Group_15__1__Impl : ( 'PortClass' ) ;
+ public final void rule__ProtocolClass__Group_15__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4767:1: ( ( 'PortClass' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4768:1: ( 'PortClass' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4768:1: ( 'PortClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4769:1: 'PortClass'
+ {
+ before(grammarAccess.getProtocolClassAccess().getPortClassKeyword_15_1());
+ match(input,42,FOLLOW_42_in_rule__ProtocolClass__Group_15__1__Impl9918);
+ after(grammarAccess.getProtocolClassAccess().getPortClassKeyword_15_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_15__1__Impl
+
+
+ // $ANTLR start rule__ProtocolClass__Group_15__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4782:1: rule__ProtocolClass__Group_15__2 : rule__ProtocolClass__Group_15__2__Impl ;
+ public final void rule__ProtocolClass__Group_15__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4786:1: ( rule__ProtocolClass__Group_15__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4787:2: rule__ProtocolClass__Group_15__2__Impl
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__Group_15__2__Impl_in_rule__ProtocolClass__Group_15__29949);
+ rule__ProtocolClass__Group_15__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_15__2
+
+
+ // $ANTLR start rule__ProtocolClass__Group_15__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4793:1: rule__ProtocolClass__Group_15__2__Impl : ( ( rule__ProtocolClass__ConjugateAssignment_15_2 ) ) ;
+ public final void rule__ProtocolClass__Group_15__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4797:1: ( ( ( rule__ProtocolClass__ConjugateAssignment_15_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4798:1: ( ( rule__ProtocolClass__ConjugateAssignment_15_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4798:1: ( ( rule__ProtocolClass__ConjugateAssignment_15_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4799:1: ( rule__ProtocolClass__ConjugateAssignment_15_2 )
+ {
+ before(grammarAccess.getProtocolClassAccess().getConjugateAssignment_15_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4800:1: ( rule__ProtocolClass__ConjugateAssignment_15_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4800:2: rule__ProtocolClass__ConjugateAssignment_15_2
+ {
+ pushFollow(FOLLOW_rule__ProtocolClass__ConjugateAssignment_15_2_in_rule__ProtocolClass__Group_15__2__Impl9976);
+ rule__ProtocolClass__ConjugateAssignment_15_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getConjugateAssignment_15_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__Group_15__2__Impl
+
+
+ // $ANTLR start rule__Message__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4816:1: rule__Message__Group__0 : rule__Message__Group__0__Impl rule__Message__Group__1 ;
+ public final void rule__Message__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4820:1: ( rule__Message__Group__0__Impl rule__Message__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4821:2: rule__Message__Group__0__Impl rule__Message__Group__1
+ {
+ pushFollow(FOLLOW_rule__Message__Group__0__Impl_in_rule__Message__Group__010012);
+ rule__Message__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Message__Group__1_in_rule__Message__Group__010015);
+ rule__Message__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__0
+
+
+ // $ANTLR start rule__Message__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4828:1: rule__Message__Group__0__Impl : ( 'Message' ) ;
+ public final void rule__Message__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4832:1: ( ( 'Message' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4833:1: ( 'Message' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4833:1: ( 'Message' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4834:1: 'Message'
+ {
+ before(grammarAccess.getMessageAccess().getMessageKeyword_0());
+ match(input,44,FOLLOW_44_in_rule__Message__Group__0__Impl10043);
+ after(grammarAccess.getMessageAccess().getMessageKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__0__Impl
+
+
+ // $ANTLR start rule__Message__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4847:1: rule__Message__Group__1 : rule__Message__Group__1__Impl rule__Message__Group__2 ;
+ public final void rule__Message__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4851:1: ( rule__Message__Group__1__Impl rule__Message__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4852:2: rule__Message__Group__1__Impl rule__Message__Group__2
+ {
+ pushFollow(FOLLOW_rule__Message__Group__1__Impl_in_rule__Message__Group__110074);
+ rule__Message__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Message__Group__2_in_rule__Message__Group__110077);
+ rule__Message__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__1
+
+
+ // $ANTLR start rule__Message__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4859:1: rule__Message__Group__1__Impl : ( ( rule__Message__NameAssignment_1 ) ) ;
+ public final void rule__Message__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4863:1: ( ( ( rule__Message__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4864:1: ( ( rule__Message__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4864:1: ( ( rule__Message__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4865:1: ( rule__Message__NameAssignment_1 )
+ {
+ before(grammarAccess.getMessageAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4866:1: ( rule__Message__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4866:2: rule__Message__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Message__NameAssignment_1_in_rule__Message__Group__1__Impl10104);
+ rule__Message__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__1__Impl
+
+
+ // $ANTLR start rule__Message__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4876:1: rule__Message__Group__2 : rule__Message__Group__2__Impl rule__Message__Group__3 ;
+ public final void rule__Message__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4880:1: ( rule__Message__Group__2__Impl rule__Message__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4881:2: rule__Message__Group__2__Impl rule__Message__Group__3
+ {
+ pushFollow(FOLLOW_rule__Message__Group__2__Impl_in_rule__Message__Group__210134);
+ rule__Message__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Message__Group__3_in_rule__Message__Group__210137);
+ rule__Message__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__2
+
+
+ // $ANTLR start rule__Message__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4888:1: rule__Message__Group__2__Impl : ( '(' ) ;
+ public final void rule__Message__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4892:1: ( ( '(' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4893:1: ( '(' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4893:1: ( '(' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4894:1: '('
+ {
+ before(grammarAccess.getMessageAccess().getLeftParenthesisKeyword_2());
+ match(input,33,FOLLOW_33_in_rule__Message__Group__2__Impl10165);
+ after(grammarAccess.getMessageAccess().getLeftParenthesisKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__2__Impl
+
+
+ // $ANTLR start rule__Message__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4907:1: rule__Message__Group__3 : rule__Message__Group__3__Impl rule__Message__Group__4 ;
+ public final void rule__Message__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4911:1: ( rule__Message__Group__3__Impl rule__Message__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4912:2: rule__Message__Group__3__Impl rule__Message__Group__4
+ {
+ pushFollow(FOLLOW_rule__Message__Group__3__Impl_in_rule__Message__Group__310196);
+ rule__Message__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Message__Group__4_in_rule__Message__Group__310199);
+ rule__Message__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__3
+
+
+ // $ANTLR start rule__Message__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4919:1: rule__Message__Group__3__Impl : ( ( rule__Message__Group_3__0 )? ) ;
+ public final void rule__Message__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4923:1: ( ( ( rule__Message__Group_3__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4924:1: ( ( rule__Message__Group_3__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4924:1: ( ( rule__Message__Group_3__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4925:1: ( rule__Message__Group_3__0 )?
+ {
+ before(grammarAccess.getMessageAccess().getGroup_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4926:1: ( rule__Message__Group_3__0 )?
+ int alt37=2;
+ int LA37_0 = input.LA(1);
+
+ if ( (LA37_0==RULE_ID) ) {
+ alt37=1;
+ }
+ switch (alt37) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4926:2: rule__Message__Group_3__0
+ {
+ pushFollow(FOLLOW_rule__Message__Group_3__0_in_rule__Message__Group__3__Impl10226);
+ rule__Message__Group_3__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getMessageAccess().getGroup_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__3__Impl
+
+
+ // $ANTLR start rule__Message__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4936:1: rule__Message__Group__4 : rule__Message__Group__4__Impl ;
+ public final void rule__Message__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4940:1: ( rule__Message__Group__4__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4941:2: rule__Message__Group__4__Impl
+ {
+ pushFollow(FOLLOW_rule__Message__Group__4__Impl_in_rule__Message__Group__410257);
+ rule__Message__Group__4__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__4
+
+
+ // $ANTLR start rule__Message__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4947:1: rule__Message__Group__4__Impl : ( ')' ) ;
+ public final void rule__Message__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4951:1: ( ( ')' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4952:1: ( ')' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4952:1: ( ')' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4953:1: ')'
+ {
+ before(grammarAccess.getMessageAccess().getRightParenthesisKeyword_4());
+ match(input,34,FOLLOW_34_in_rule__Message__Group__4__Impl10285);
+ after(grammarAccess.getMessageAccess().getRightParenthesisKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group__4__Impl
+
+
+ // $ANTLR start rule__Message__Group_3__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4976:1: rule__Message__Group_3__0 : rule__Message__Group_3__0__Impl rule__Message__Group_3__1 ;
+ public final void rule__Message__Group_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4980:1: ( rule__Message__Group_3__0__Impl rule__Message__Group_3__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4981:2: rule__Message__Group_3__0__Impl rule__Message__Group_3__1
+ {
+ pushFollow(FOLLOW_rule__Message__Group_3__0__Impl_in_rule__Message__Group_3__010326);
+ rule__Message__Group_3__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Message__Group_3__1_in_rule__Message__Group_3__010329);
+ rule__Message__Group_3__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3__0
+
+
+ // $ANTLR start rule__Message__Group_3__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4988:1: rule__Message__Group_3__0__Impl : ( ( rule__Message__ArgumentsAssignment_3_0 ) ) ;
+ public final void rule__Message__Group_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4992:1: ( ( ( rule__Message__ArgumentsAssignment_3_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4993:1: ( ( rule__Message__ArgumentsAssignment_3_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4993:1: ( ( rule__Message__ArgumentsAssignment_3_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4994:1: ( rule__Message__ArgumentsAssignment_3_0 )
+ {
+ before(grammarAccess.getMessageAccess().getArgumentsAssignment_3_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4995:1: ( rule__Message__ArgumentsAssignment_3_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:4995:2: rule__Message__ArgumentsAssignment_3_0
+ {
+ pushFollow(FOLLOW_rule__Message__ArgumentsAssignment_3_0_in_rule__Message__Group_3__0__Impl10356);
+ rule__Message__ArgumentsAssignment_3_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageAccess().getArgumentsAssignment_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3__0__Impl
+
+
+ // $ANTLR start rule__Message__Group_3__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5005:1: rule__Message__Group_3__1 : rule__Message__Group_3__1__Impl ;
+ public final void rule__Message__Group_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5009:1: ( rule__Message__Group_3__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5010:2: rule__Message__Group_3__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Message__Group_3__1__Impl_in_rule__Message__Group_3__110386);
+ rule__Message__Group_3__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3__1
+
+
+ // $ANTLR start rule__Message__Group_3__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5016:1: rule__Message__Group_3__1__Impl : ( ( rule__Message__Group_3_1__0 )* ) ;
+ public final void rule__Message__Group_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5020:1: ( ( ( rule__Message__Group_3_1__0 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5021:1: ( ( rule__Message__Group_3_1__0 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5021:1: ( ( rule__Message__Group_3_1__0 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5022:1: ( rule__Message__Group_3_1__0 )*
+ {
+ before(grammarAccess.getMessageAccess().getGroup_3_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5023:1: ( rule__Message__Group_3_1__0 )*
+ loop38:
+ do {
+ int alt38=2;
+ int LA38_0 = input.LA(1);
+
+ if ( (LA38_0==35) ) {
+ alt38=1;
+ }
+
+
+ switch (alt38) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5023:2: rule__Message__Group_3_1__0
+ {
+ pushFollow(FOLLOW_rule__Message__Group_3_1__0_in_rule__Message__Group_3__1__Impl10413);
+ rule__Message__Group_3_1__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop38;
+ }
+ } while (true);
+
+ after(grammarAccess.getMessageAccess().getGroup_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3__1__Impl
+
+
+ // $ANTLR start rule__Message__Group_3_1__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5037:1: rule__Message__Group_3_1__0 : rule__Message__Group_3_1__0__Impl rule__Message__Group_3_1__1 ;
+ public final void rule__Message__Group_3_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5041:1: ( rule__Message__Group_3_1__0__Impl rule__Message__Group_3_1__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5042:2: rule__Message__Group_3_1__0__Impl rule__Message__Group_3_1__1
+ {
+ pushFollow(FOLLOW_rule__Message__Group_3_1__0__Impl_in_rule__Message__Group_3_1__010448);
+ rule__Message__Group_3_1__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Message__Group_3_1__1_in_rule__Message__Group_3_1__010451);
+ rule__Message__Group_3_1__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3_1__0
+
+
+ // $ANTLR start rule__Message__Group_3_1__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5049:1: rule__Message__Group_3_1__0__Impl : ( ',' ) ;
+ public final void rule__Message__Group_3_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5053:1: ( ( ',' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5054:1: ( ',' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5054:1: ( ',' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5055:1: ','
+ {
+ before(grammarAccess.getMessageAccess().getCommaKeyword_3_1_0());
+ match(input,35,FOLLOW_35_in_rule__Message__Group_3_1__0__Impl10479);
+ after(grammarAccess.getMessageAccess().getCommaKeyword_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3_1__0__Impl
+
+
+ // $ANTLR start rule__Message__Group_3_1__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5068:1: rule__Message__Group_3_1__1 : rule__Message__Group_3_1__1__Impl ;
+ public final void rule__Message__Group_3_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5072:1: ( rule__Message__Group_3_1__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5073:2: rule__Message__Group_3_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Message__Group_3_1__1__Impl_in_rule__Message__Group_3_1__110510);
+ rule__Message__Group_3_1__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3_1__1
+
+
+ // $ANTLR start rule__Message__Group_3_1__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5079:1: rule__Message__Group_3_1__1__Impl : ( ( rule__Message__ArgumentsAssignment_3_1_1 ) ) ;
+ public final void rule__Message__Group_3_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5083:1: ( ( ( rule__Message__ArgumentsAssignment_3_1_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5084:1: ( ( rule__Message__ArgumentsAssignment_3_1_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5084:1: ( ( rule__Message__ArgumentsAssignment_3_1_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5085:1: ( rule__Message__ArgumentsAssignment_3_1_1 )
+ {
+ before(grammarAccess.getMessageAccess().getArgumentsAssignment_3_1_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5086:1: ( rule__Message__ArgumentsAssignment_3_1_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5086:2: rule__Message__ArgumentsAssignment_3_1_1
+ {
+ pushFollow(FOLLOW_rule__Message__ArgumentsAssignment_3_1_1_in_rule__Message__Group_3_1__1__Impl10537);
+ rule__Message__ArgumentsAssignment_3_1_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageAccess().getArgumentsAssignment_3_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__Group_3_1__1__Impl
+
+
+ // $ANTLR start rule__PortClass__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5100:1: rule__PortClass__Group__0 : rule__PortClass__Group__0__Impl rule__PortClass__Group__1 ;
+ public final void rule__PortClass__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5104:1: ( rule__PortClass__Group__0__Impl rule__PortClass__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5105:2: rule__PortClass__Group__0__Impl rule__PortClass__Group__1
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group__0__Impl_in_rule__PortClass__Group__010571);
+ rule__PortClass__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__PortClass__Group__1_in_rule__PortClass__Group__010574);
+ rule__PortClass__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__0
+
+
+ // $ANTLR start rule__PortClass__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5112:1: rule__PortClass__Group__0__Impl : ( '{' ) ;
+ public final void rule__PortClass__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5116:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5117:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5117:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5118:1: '{'
+ {
+ before(grammarAccess.getPortClassAccess().getLeftCurlyBracketKeyword_0());
+ match(input,24,FOLLOW_24_in_rule__PortClass__Group__0__Impl10602);
+ after(grammarAccess.getPortClassAccess().getLeftCurlyBracketKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__0__Impl
+
+
+ // $ANTLR start rule__PortClass__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5131:1: rule__PortClass__Group__1 : rule__PortClass__Group__1__Impl rule__PortClass__Group__2 ;
+ public final void rule__PortClass__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5135:1: ( rule__PortClass__Group__1__Impl rule__PortClass__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5136:2: rule__PortClass__Group__1__Impl rule__PortClass__Group__2
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group__1__Impl_in_rule__PortClass__Group__110633);
+ rule__PortClass__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__PortClass__Group__2_in_rule__PortClass__Group__110636);
+ rule__PortClass__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__1
+
+
+ // $ANTLR start rule__PortClass__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5143:1: rule__PortClass__Group__1__Impl : ( ( rule__PortClass__Group_1__0 )? ) ;
+ public final void rule__PortClass__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5147:1: ( ( ( rule__PortClass__Group_1__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5148:1: ( ( rule__PortClass__Group_1__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5148:1: ( ( rule__PortClass__Group_1__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5149:1: ( rule__PortClass__Group_1__0 )?
+ {
+ before(grammarAccess.getPortClassAccess().getGroup_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5150:1: ( rule__PortClass__Group_1__0 )?
+ int alt39=2;
+ int LA39_0 = input.LA(1);
+
+ if ( (LA39_0==45) ) {
+ alt39=1;
+ }
+ switch (alt39) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5150:2: rule__PortClass__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group_1__0_in_rule__PortClass__Group__1__Impl10663);
+ rule__PortClass__Group_1__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getPortClassAccess().getGroup_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__1__Impl
+
+
+ // $ANTLR start rule__PortClass__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5160:1: rule__PortClass__Group__2 : rule__PortClass__Group__2__Impl rule__PortClass__Group__3 ;
+ public final void rule__PortClass__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5164:1: ( rule__PortClass__Group__2__Impl rule__PortClass__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5165:2: rule__PortClass__Group__2__Impl rule__PortClass__Group__3
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group__2__Impl_in_rule__PortClass__Group__210694);
+ rule__PortClass__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__PortClass__Group__3_in_rule__PortClass__Group__210697);
+ rule__PortClass__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__2
+
+
+ // $ANTLR start rule__PortClass__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5172:1: rule__PortClass__Group__2__Impl : ( ( ( rule__PortClass__Alternatives_2 ) ) ( ( rule__PortClass__Alternatives_2 )* ) ) ;
+ public final void rule__PortClass__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5176:1: ( ( ( ( rule__PortClass__Alternatives_2 ) ) ( ( rule__PortClass__Alternatives_2 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5177:1: ( ( ( rule__PortClass__Alternatives_2 ) ) ( ( rule__PortClass__Alternatives_2 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5177:1: ( ( ( rule__PortClass__Alternatives_2 ) ) ( ( rule__PortClass__Alternatives_2 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5178:1: ( ( rule__PortClass__Alternatives_2 ) ) ( ( rule__PortClass__Alternatives_2 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5178:1: ( ( rule__PortClass__Alternatives_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5179:1: ( rule__PortClass__Alternatives_2 )
+ {
+ before(grammarAccess.getPortClassAccess().getAlternatives_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5180:1: ( rule__PortClass__Alternatives_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5180:2: rule__PortClass__Alternatives_2
+ {
+ pushFollow(FOLLOW_rule__PortClass__Alternatives_2_in_rule__PortClass__Group__2__Impl10726);
+ rule__PortClass__Alternatives_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortClassAccess().getAlternatives_2());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5183:1: ( ( rule__PortClass__Alternatives_2 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5184:1: ( rule__PortClass__Alternatives_2 )*
+ {
+ before(grammarAccess.getPortClassAccess().getAlternatives_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5185:1: ( rule__PortClass__Alternatives_2 )*
+ loop40:
+ do {
+ int alt40=2;
+ int LA40_0 = input.LA(1);
+
+ if ( (LA40_0==29||LA40_0==32||LA40_0==46) ) {
+ alt40=1;
+ }
+
+
+ switch (alt40) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5185:2: rule__PortClass__Alternatives_2
+ {
+ pushFollow(FOLLOW_rule__PortClass__Alternatives_2_in_rule__PortClass__Group__2__Impl10738);
+ rule__PortClass__Alternatives_2();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop40;
+ }
+ } while (true);
+
+ after(grammarAccess.getPortClassAccess().getAlternatives_2());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__2__Impl
+
+
+ // $ANTLR start rule__PortClass__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5196:1: rule__PortClass__Group__3 : rule__PortClass__Group__3__Impl ;
+ public final void rule__PortClass__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5200:1: ( rule__PortClass__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5201:2: rule__PortClass__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group__3__Impl_in_rule__PortClass__Group__310771);
+ rule__PortClass__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__3
+
+
+ // $ANTLR start rule__PortClass__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5207:1: rule__PortClass__Group__3__Impl : ( '}' ) ;
+ public final void rule__PortClass__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5211:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5212:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5212:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5213:1: '}'
+ {
+ before(grammarAccess.getPortClassAccess().getRightCurlyBracketKeyword_3());
+ match(input,25,FOLLOW_25_in_rule__PortClass__Group__3__Impl10799);
+ after(grammarAccess.getPortClassAccess().getRightCurlyBracketKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group__3__Impl
+
+
+ // $ANTLR start rule__PortClass__Group_1__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5234:1: rule__PortClass__Group_1__0 : rule__PortClass__Group_1__0__Impl rule__PortClass__Group_1__1 ;
+ public final void rule__PortClass__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5238:1: ( rule__PortClass__Group_1__0__Impl rule__PortClass__Group_1__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5239:2: rule__PortClass__Group_1__0__Impl rule__PortClass__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group_1__0__Impl_in_rule__PortClass__Group_1__010838);
+ rule__PortClass__Group_1__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__PortClass__Group_1__1_in_rule__PortClass__Group_1__010841);
+ rule__PortClass__Group_1__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group_1__0
+
+
+ // $ANTLR start rule__PortClass__Group_1__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5246:1: rule__PortClass__Group_1__0__Impl : ( 'usercode' ) ;
+ public final void rule__PortClass__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5250:1: ( ( 'usercode' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5251:1: ( 'usercode' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5251:1: ( 'usercode' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5252:1: 'usercode'
+ {
+ before(grammarAccess.getPortClassAccess().getUsercodeKeyword_1_0());
+ match(input,45,FOLLOW_45_in_rule__PortClass__Group_1__0__Impl10869);
+ after(grammarAccess.getPortClassAccess().getUsercodeKeyword_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group_1__0__Impl
+
+
+ // $ANTLR start rule__PortClass__Group_1__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5265:1: rule__PortClass__Group_1__1 : rule__PortClass__Group_1__1__Impl ;
+ public final void rule__PortClass__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5269:1: ( rule__PortClass__Group_1__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5270:2: rule__PortClass__Group_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__PortClass__Group_1__1__Impl_in_rule__PortClass__Group_1__110900);
+ rule__PortClass__Group_1__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group_1__1
+
+
+ // $ANTLR start rule__PortClass__Group_1__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5276:1: rule__PortClass__Group_1__1__Impl : ( ( rule__PortClass__UserCodeAssignment_1_1 ) ) ;
+ public final void rule__PortClass__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5280:1: ( ( ( rule__PortClass__UserCodeAssignment_1_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5281:1: ( ( rule__PortClass__UserCodeAssignment_1_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5281:1: ( ( rule__PortClass__UserCodeAssignment_1_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5282:1: ( rule__PortClass__UserCodeAssignment_1_1 )
+ {
+ before(grammarAccess.getPortClassAccess().getUserCodeAssignment_1_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5283:1: ( rule__PortClass__UserCodeAssignment_1_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5283:2: rule__PortClass__UserCodeAssignment_1_1
+ {
+ pushFollow(FOLLOW_rule__PortClass__UserCodeAssignment_1_1_in_rule__PortClass__Group_1__1__Impl10927);
+ rule__PortClass__UserCodeAssignment_1_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortClassAccess().getUserCodeAssignment_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__Group_1__1__Impl
+
+
+ // $ANTLR start rule__MessageHandler__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5297:1: rule__MessageHandler__Group__0 : rule__MessageHandler__Group__0__Impl rule__MessageHandler__Group__1 ;
+ public final void rule__MessageHandler__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5301:1: ( rule__MessageHandler__Group__0__Impl rule__MessageHandler__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5302:2: rule__MessageHandler__Group__0__Impl rule__MessageHandler__Group__1
+ {
+ pushFollow(FOLLOW_rule__MessageHandler__Group__0__Impl_in_rule__MessageHandler__Group__010961);
+ rule__MessageHandler__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__MessageHandler__Group__1_in_rule__MessageHandler__Group__010964);
+ rule__MessageHandler__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__Group__0
+
+
+ // $ANTLR start rule__MessageHandler__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5309:1: rule__MessageHandler__Group__0__Impl : ( 'handle' ) ;
+ public final void rule__MessageHandler__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5313:1: ( ( 'handle' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5314:1: ( 'handle' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5314:1: ( 'handle' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5315:1: 'handle'
+ {
+ before(grammarAccess.getMessageHandlerAccess().getHandleKeyword_0());
+ match(input,46,FOLLOW_46_in_rule__MessageHandler__Group__0__Impl10992);
+ after(grammarAccess.getMessageHandlerAccess().getHandleKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__Group__0__Impl
+
+
+ // $ANTLR start rule__MessageHandler__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5328:1: rule__MessageHandler__Group__1 : rule__MessageHandler__Group__1__Impl rule__MessageHandler__Group__2 ;
+ public final void rule__MessageHandler__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5332:1: ( rule__MessageHandler__Group__1__Impl rule__MessageHandler__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5333:2: rule__MessageHandler__Group__1__Impl rule__MessageHandler__Group__2
+ {
+ pushFollow(FOLLOW_rule__MessageHandler__Group__1__Impl_in_rule__MessageHandler__Group__111023);
+ rule__MessageHandler__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__MessageHandler__Group__2_in_rule__MessageHandler__Group__111026);
+ rule__MessageHandler__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__Group__1
+
+
+ // $ANTLR start rule__MessageHandler__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5340:1: rule__MessageHandler__Group__1__Impl : ( ( rule__MessageHandler__MsgAssignment_1 ) ) ;
+ public final void rule__MessageHandler__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5344:1: ( ( ( rule__MessageHandler__MsgAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5345:1: ( ( rule__MessageHandler__MsgAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5345:1: ( ( rule__MessageHandler__MsgAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5346:1: ( rule__MessageHandler__MsgAssignment_1 )
+ {
+ before(grammarAccess.getMessageHandlerAccess().getMsgAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5347:1: ( rule__MessageHandler__MsgAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5347:2: rule__MessageHandler__MsgAssignment_1
+ {
+ pushFollow(FOLLOW_rule__MessageHandler__MsgAssignment_1_in_rule__MessageHandler__Group__1__Impl11053);
+ rule__MessageHandler__MsgAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageHandlerAccess().getMsgAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__Group__1__Impl
+
+
+ // $ANTLR start rule__MessageHandler__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5357:1: rule__MessageHandler__Group__2 : rule__MessageHandler__Group__2__Impl ;
+ public final void rule__MessageHandler__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5361:1: ( rule__MessageHandler__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5362:2: rule__MessageHandler__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__MessageHandler__Group__2__Impl_in_rule__MessageHandler__Group__211083);
+ rule__MessageHandler__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__Group__2
+
+
+ // $ANTLR start rule__MessageHandler__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5368:1: rule__MessageHandler__Group__2__Impl : ( ( rule__MessageHandler__DetailCodeAssignment_2 ) ) ;
+ public final void rule__MessageHandler__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5372:1: ( ( ( rule__MessageHandler__DetailCodeAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5373:1: ( ( rule__MessageHandler__DetailCodeAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5373:1: ( ( rule__MessageHandler__DetailCodeAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5374:1: ( rule__MessageHandler__DetailCodeAssignment_2 )
+ {
+ before(grammarAccess.getMessageHandlerAccess().getDetailCodeAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5375:1: ( rule__MessageHandler__DetailCodeAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5375:2: rule__MessageHandler__DetailCodeAssignment_2
+ {
+ pushFollow(FOLLOW_rule__MessageHandler__DetailCodeAssignment_2_in_rule__MessageHandler__Group__2__Impl11110);
+ rule__MessageHandler__DetailCodeAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageHandlerAccess().getDetailCodeAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__Group__2__Impl
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5391:1: rule__ProtocolSemantics__Group__0 : rule__ProtocolSemantics__Group__0__Impl rule__ProtocolSemantics__Group__1 ;
+ public final void rule__ProtocolSemantics__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5395:1: ( rule__ProtocolSemantics__Group__0__Impl rule__ProtocolSemantics__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5396:2: rule__ProtocolSemantics__Group__0__Impl rule__ProtocolSemantics__Group__1
+ {
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__0__Impl_in_rule__ProtocolSemantics__Group__011146);
+ rule__ProtocolSemantics__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__1_in_rule__ProtocolSemantics__Group__011149);
+ rule__ProtocolSemantics__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__0
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5403:1: rule__ProtocolSemantics__Group__0__Impl : ( 'semantics' ) ;
+ public final void rule__ProtocolSemantics__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5407:1: ( ( 'semantics' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5408:1: ( 'semantics' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5408:1: ( 'semantics' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5409:1: 'semantics'
+ {
+ before(grammarAccess.getProtocolSemanticsAccess().getSemanticsKeyword_0());
+ match(input,47,FOLLOW_47_in_rule__ProtocolSemantics__Group__0__Impl11177);
+ after(grammarAccess.getProtocolSemanticsAccess().getSemanticsKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__0__Impl
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5422:1: rule__ProtocolSemantics__Group__1 : rule__ProtocolSemantics__Group__1__Impl rule__ProtocolSemantics__Group__2 ;
+ public final void rule__ProtocolSemantics__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5426:1: ( rule__ProtocolSemantics__Group__1__Impl rule__ProtocolSemantics__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5427:2: rule__ProtocolSemantics__Group__1__Impl rule__ProtocolSemantics__Group__2
+ {
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__1__Impl_in_rule__ProtocolSemantics__Group__111208);
+ rule__ProtocolSemantics__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__2_in_rule__ProtocolSemantics__Group__111211);
+ rule__ProtocolSemantics__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__1
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5434:1: rule__ProtocolSemantics__Group__1__Impl : ( '{' ) ;
+ public final void rule__ProtocolSemantics__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5438:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5439:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5439:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5440:1: '{'
+ {
+ before(grammarAccess.getProtocolSemanticsAccess().getLeftCurlyBracketKeyword_1());
+ match(input,24,FOLLOW_24_in_rule__ProtocolSemantics__Group__1__Impl11239);
+ after(grammarAccess.getProtocolSemanticsAccess().getLeftCurlyBracketKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__1__Impl
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5453:1: rule__ProtocolSemantics__Group__2 : rule__ProtocolSemantics__Group__2__Impl rule__ProtocolSemantics__Group__3 ;
+ public final void rule__ProtocolSemantics__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5457:1: ( rule__ProtocolSemantics__Group__2__Impl rule__ProtocolSemantics__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5458:2: rule__ProtocolSemantics__Group__2__Impl rule__ProtocolSemantics__Group__3
+ {
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__2__Impl_in_rule__ProtocolSemantics__Group__211270);
+ rule__ProtocolSemantics__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__3_in_rule__ProtocolSemantics__Group__211273);
+ rule__ProtocolSemantics__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__2
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5465:1: rule__ProtocolSemantics__Group__2__Impl : ( ( ( rule__ProtocolSemantics__RulesAssignment_2 ) ) ( ( rule__ProtocolSemantics__RulesAssignment_2 )* ) ) ;
+ public final void rule__ProtocolSemantics__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5469:1: ( ( ( ( rule__ProtocolSemantics__RulesAssignment_2 ) ) ( ( rule__ProtocolSemantics__RulesAssignment_2 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5470:1: ( ( ( rule__ProtocolSemantics__RulesAssignment_2 ) ) ( ( rule__ProtocolSemantics__RulesAssignment_2 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5470:1: ( ( ( rule__ProtocolSemantics__RulesAssignment_2 ) ) ( ( rule__ProtocolSemantics__RulesAssignment_2 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5471:1: ( ( rule__ProtocolSemantics__RulesAssignment_2 ) ) ( ( rule__ProtocolSemantics__RulesAssignment_2 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5471:1: ( ( rule__ProtocolSemantics__RulesAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5472:1: ( rule__ProtocolSemantics__RulesAssignment_2 )
+ {
+ before(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5473:1: ( rule__ProtocolSemantics__RulesAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5473:2: rule__ProtocolSemantics__RulesAssignment_2
+ {
+ pushFollow(FOLLOW_rule__ProtocolSemantics__RulesAssignment_2_in_rule__ProtocolSemantics__Group__2__Impl11302);
+ rule__ProtocolSemantics__RulesAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5476:1: ( ( rule__ProtocolSemantics__RulesAssignment_2 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5477:1: ( rule__ProtocolSemantics__RulesAssignment_2 )*
+ {
+ before(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5478:1: ( rule__ProtocolSemantics__RulesAssignment_2 )*
+ loop41:
+ do {
+ int alt41=2;
+ int LA41_0 = input.LA(1);
+
+ if ( (LA41_0==48||LA41_0==50) ) {
+ alt41=1;
+ }
+
+
+ switch (alt41) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5478:2: rule__ProtocolSemantics__RulesAssignment_2
+ {
+ pushFollow(FOLLOW_rule__ProtocolSemantics__RulesAssignment_2_in_rule__ProtocolSemantics__Group__2__Impl11314);
+ rule__ProtocolSemantics__RulesAssignment_2();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop41;
+ }
+ } while (true);
+
+ after(grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__2__Impl
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5489:1: rule__ProtocolSemantics__Group__3 : rule__ProtocolSemantics__Group__3__Impl ;
+ public final void rule__ProtocolSemantics__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5493:1: ( rule__ProtocolSemantics__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5494:2: rule__ProtocolSemantics__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__ProtocolSemantics__Group__3__Impl_in_rule__ProtocolSemantics__Group__311347);
+ rule__ProtocolSemantics__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__3
+
+
+ // $ANTLR start rule__ProtocolSemantics__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5500:1: rule__ProtocolSemantics__Group__3__Impl : ( '}' ) ;
+ public final void rule__ProtocolSemantics__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5504:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5505:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5505:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5506:1: '}'
+ {
+ before(grammarAccess.getProtocolSemanticsAccess().getRightCurlyBracketKeyword_3());
+ match(input,25,FOLLOW_25_in_rule__ProtocolSemantics__Group__3__Impl11375);
+ after(grammarAccess.getProtocolSemanticsAccess().getRightCurlyBracketKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__Group__3__Impl
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5527:1: rule__SemanticsInRule__Group__0 : rule__SemanticsInRule__Group__0__Impl rule__SemanticsInRule__Group__1 ;
+ public final void rule__SemanticsInRule__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5531:1: ( rule__SemanticsInRule__Group__0__Impl rule__SemanticsInRule__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5532:2: rule__SemanticsInRule__Group__0__Impl rule__SemanticsInRule__Group__1
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__0__Impl_in_rule__SemanticsInRule__Group__011414);
+ rule__SemanticsInRule__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__1_in_rule__SemanticsInRule__Group__011417);
+ rule__SemanticsInRule__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__0
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5539:1: rule__SemanticsInRule__Group__0__Impl : ( 'in' ) ;
+ public final void rule__SemanticsInRule__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5543:1: ( ( 'in' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5544:1: ( 'in' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5544:1: ( 'in' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5545:1: 'in'
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getInKeyword_0());
+ match(input,48,FOLLOW_48_in_rule__SemanticsInRule__Group__0__Impl11445);
+ after(grammarAccess.getSemanticsInRuleAccess().getInKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__0__Impl
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5558:1: rule__SemanticsInRule__Group__1 : rule__SemanticsInRule__Group__1__Impl rule__SemanticsInRule__Group__2 ;
+ public final void rule__SemanticsInRule__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5562:1: ( rule__SemanticsInRule__Group__1__Impl rule__SemanticsInRule__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5563:2: rule__SemanticsInRule__Group__1__Impl rule__SemanticsInRule__Group__2
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__1__Impl_in_rule__SemanticsInRule__Group__111476);
+ rule__SemanticsInRule__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__2_in_rule__SemanticsInRule__Group__111479);
+ rule__SemanticsInRule__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__1
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5570:1: rule__SemanticsInRule__Group__1__Impl : ( ( rule__SemanticsInRule__MsgAssignment_1 ) ) ;
+ public final void rule__SemanticsInRule__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5574:1: ( ( ( rule__SemanticsInRule__MsgAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5575:1: ( ( rule__SemanticsInRule__MsgAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5575:1: ( ( rule__SemanticsInRule__MsgAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5576:1: ( rule__SemanticsInRule__MsgAssignment_1 )
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getMsgAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5577:1: ( rule__SemanticsInRule__MsgAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5577:2: rule__SemanticsInRule__MsgAssignment_1
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__MsgAssignment_1_in_rule__SemanticsInRule__Group__1__Impl11506);
+ rule__SemanticsInRule__MsgAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSemanticsInRuleAccess().getMsgAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__1__Impl
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5587:1: rule__SemanticsInRule__Group__2 : rule__SemanticsInRule__Group__2__Impl rule__SemanticsInRule__Group__3 ;
+ public final void rule__SemanticsInRule__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5591:1: ( rule__SemanticsInRule__Group__2__Impl rule__SemanticsInRule__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5592:2: rule__SemanticsInRule__Group__2__Impl rule__SemanticsInRule__Group__3
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__2__Impl_in_rule__SemanticsInRule__Group__211536);
+ rule__SemanticsInRule__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__3_in_rule__SemanticsInRule__Group__211539);
+ rule__SemanticsInRule__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__2
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5599:1: rule__SemanticsInRule__Group__2__Impl : ( '->' ) ;
+ public final void rule__SemanticsInRule__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5603:1: ( ( '->' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5604:1: ( '->' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5604:1: ( '->' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5605:1: '->'
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getHyphenMinusGreaterThanSignKeyword_2());
+ match(input,49,FOLLOW_49_in_rule__SemanticsInRule__Group__2__Impl11567);
+ after(grammarAccess.getSemanticsInRuleAccess().getHyphenMinusGreaterThanSignKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__2__Impl
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5618:1: rule__SemanticsInRule__Group__3 : rule__SemanticsInRule__Group__3__Impl rule__SemanticsInRule__Group__4 ;
+ public final void rule__SemanticsInRule__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5622:1: ( rule__SemanticsInRule__Group__3__Impl rule__SemanticsInRule__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5623:2: rule__SemanticsInRule__Group__3__Impl rule__SemanticsInRule__Group__4
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__3__Impl_in_rule__SemanticsInRule__Group__311598);
+ rule__SemanticsInRule__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__4_in_rule__SemanticsInRule__Group__311601);
+ rule__SemanticsInRule__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__3
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5630:1: rule__SemanticsInRule__Group__3__Impl : ( '{' ) ;
+ public final void rule__SemanticsInRule__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5634:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5635:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5635:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5636:1: '{'
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getLeftCurlyBracketKeyword_3());
+ match(input,24,FOLLOW_24_in_rule__SemanticsInRule__Group__3__Impl11629);
+ after(grammarAccess.getSemanticsInRuleAccess().getLeftCurlyBracketKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__3__Impl
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5649:1: rule__SemanticsInRule__Group__4 : rule__SemanticsInRule__Group__4__Impl rule__SemanticsInRule__Group__5 ;
+ public final void rule__SemanticsInRule__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5653:1: ( rule__SemanticsInRule__Group__4__Impl rule__SemanticsInRule__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5654:2: rule__SemanticsInRule__Group__4__Impl rule__SemanticsInRule__Group__5
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__4__Impl_in_rule__SemanticsInRule__Group__411660);
+ rule__SemanticsInRule__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__5_in_rule__SemanticsInRule__Group__411663);
+ rule__SemanticsInRule__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__4
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5661:1: rule__SemanticsInRule__Group__4__Impl : ( ( rule__SemanticsInRule__FollowUpsAssignment_4 )* ) ;
+ public final void rule__SemanticsInRule__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5665:1: ( ( ( rule__SemanticsInRule__FollowUpsAssignment_4 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5666:1: ( ( rule__SemanticsInRule__FollowUpsAssignment_4 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5666:1: ( ( rule__SemanticsInRule__FollowUpsAssignment_4 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5667:1: ( rule__SemanticsInRule__FollowUpsAssignment_4 )*
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getFollowUpsAssignment_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5668:1: ( rule__SemanticsInRule__FollowUpsAssignment_4 )*
+ loop42:
+ do {
+ int alt42=2;
+ int LA42_0 = input.LA(1);
+
+ if ( (LA42_0==48||LA42_0==50) ) {
+ alt42=1;
+ }
+
+
+ switch (alt42) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5668:2: rule__SemanticsInRule__FollowUpsAssignment_4
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__FollowUpsAssignment_4_in_rule__SemanticsInRule__Group__4__Impl11690);
+ rule__SemanticsInRule__FollowUpsAssignment_4();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop42;
+ }
+ } while (true);
+
+ after(grammarAccess.getSemanticsInRuleAccess().getFollowUpsAssignment_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__4__Impl
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5678:1: rule__SemanticsInRule__Group__5 : rule__SemanticsInRule__Group__5__Impl ;
+ public final void rule__SemanticsInRule__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5682:1: ( rule__SemanticsInRule__Group__5__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5683:2: rule__SemanticsInRule__Group__5__Impl
+ {
+ pushFollow(FOLLOW_rule__SemanticsInRule__Group__5__Impl_in_rule__SemanticsInRule__Group__511721);
+ rule__SemanticsInRule__Group__5__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__5
+
+
+ // $ANTLR start rule__SemanticsInRule__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5689:1: rule__SemanticsInRule__Group__5__Impl : ( '}' ) ;
+ public final void rule__SemanticsInRule__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5693:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5694:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5694:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5695:1: '}'
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getRightCurlyBracketKeyword_5());
+ match(input,25,FOLLOW_25_in_rule__SemanticsInRule__Group__5__Impl11749);
+ after(grammarAccess.getSemanticsInRuleAccess().getRightCurlyBracketKeyword_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__Group__5__Impl
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5720:1: rule__SemanticsOutRule__Group__0 : rule__SemanticsOutRule__Group__0__Impl rule__SemanticsOutRule__Group__1 ;
+ public final void rule__SemanticsOutRule__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5724:1: ( rule__SemanticsOutRule__Group__0__Impl rule__SemanticsOutRule__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5725:2: rule__SemanticsOutRule__Group__0__Impl rule__SemanticsOutRule__Group__1
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__0__Impl_in_rule__SemanticsOutRule__Group__011792);
+ rule__SemanticsOutRule__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__1_in_rule__SemanticsOutRule__Group__011795);
+ rule__SemanticsOutRule__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__0
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5732:1: rule__SemanticsOutRule__Group__0__Impl : ( 'out' ) ;
+ public final void rule__SemanticsOutRule__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5736:1: ( ( 'out' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5737:1: ( 'out' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5737:1: ( 'out' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5738:1: 'out'
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getOutKeyword_0());
+ match(input,50,FOLLOW_50_in_rule__SemanticsOutRule__Group__0__Impl11823);
+ after(grammarAccess.getSemanticsOutRuleAccess().getOutKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__0__Impl
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5751:1: rule__SemanticsOutRule__Group__1 : rule__SemanticsOutRule__Group__1__Impl rule__SemanticsOutRule__Group__2 ;
+ public final void rule__SemanticsOutRule__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5755:1: ( rule__SemanticsOutRule__Group__1__Impl rule__SemanticsOutRule__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5756:2: rule__SemanticsOutRule__Group__1__Impl rule__SemanticsOutRule__Group__2
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__1__Impl_in_rule__SemanticsOutRule__Group__111854);
+ rule__SemanticsOutRule__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__2_in_rule__SemanticsOutRule__Group__111857);
+ rule__SemanticsOutRule__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__1
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5763:1: rule__SemanticsOutRule__Group__1__Impl : ( ( rule__SemanticsOutRule__MsgAssignment_1 ) ) ;
+ public final void rule__SemanticsOutRule__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5767:1: ( ( ( rule__SemanticsOutRule__MsgAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5768:1: ( ( rule__SemanticsOutRule__MsgAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5768:1: ( ( rule__SemanticsOutRule__MsgAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5769:1: ( rule__SemanticsOutRule__MsgAssignment_1 )
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getMsgAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5770:1: ( rule__SemanticsOutRule__MsgAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5770:2: rule__SemanticsOutRule__MsgAssignment_1
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__MsgAssignment_1_in_rule__SemanticsOutRule__Group__1__Impl11884);
+ rule__SemanticsOutRule__MsgAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSemanticsOutRuleAccess().getMsgAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__1__Impl
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5780:1: rule__SemanticsOutRule__Group__2 : rule__SemanticsOutRule__Group__2__Impl rule__SemanticsOutRule__Group__3 ;
+ public final void rule__SemanticsOutRule__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5784:1: ( rule__SemanticsOutRule__Group__2__Impl rule__SemanticsOutRule__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5785:2: rule__SemanticsOutRule__Group__2__Impl rule__SemanticsOutRule__Group__3
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__2__Impl_in_rule__SemanticsOutRule__Group__211914);
+ rule__SemanticsOutRule__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__3_in_rule__SemanticsOutRule__Group__211917);
+ rule__SemanticsOutRule__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__2
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5792:1: rule__SemanticsOutRule__Group__2__Impl : ( '->' ) ;
+ public final void rule__SemanticsOutRule__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5796:1: ( ( '->' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5797:1: ( '->' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5797:1: ( '->' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5798:1: '->'
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getHyphenMinusGreaterThanSignKeyword_2());
+ match(input,49,FOLLOW_49_in_rule__SemanticsOutRule__Group__2__Impl11945);
+ after(grammarAccess.getSemanticsOutRuleAccess().getHyphenMinusGreaterThanSignKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__2__Impl
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5811:1: rule__SemanticsOutRule__Group__3 : rule__SemanticsOutRule__Group__3__Impl rule__SemanticsOutRule__Group__4 ;
+ public final void rule__SemanticsOutRule__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5815:1: ( rule__SemanticsOutRule__Group__3__Impl rule__SemanticsOutRule__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5816:2: rule__SemanticsOutRule__Group__3__Impl rule__SemanticsOutRule__Group__4
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__3__Impl_in_rule__SemanticsOutRule__Group__311976);
+ rule__SemanticsOutRule__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__4_in_rule__SemanticsOutRule__Group__311979);
+ rule__SemanticsOutRule__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__3
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5823:1: rule__SemanticsOutRule__Group__3__Impl : ( '{' ) ;
+ public final void rule__SemanticsOutRule__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5827:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5828:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5828:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5829:1: '{'
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getLeftCurlyBracketKeyword_3());
+ match(input,24,FOLLOW_24_in_rule__SemanticsOutRule__Group__3__Impl12007);
+ after(grammarAccess.getSemanticsOutRuleAccess().getLeftCurlyBracketKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__3__Impl
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5842:1: rule__SemanticsOutRule__Group__4 : rule__SemanticsOutRule__Group__4__Impl rule__SemanticsOutRule__Group__5 ;
+ public final void rule__SemanticsOutRule__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5846:1: ( rule__SemanticsOutRule__Group__4__Impl rule__SemanticsOutRule__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5847:2: rule__SemanticsOutRule__Group__4__Impl rule__SemanticsOutRule__Group__5
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__4__Impl_in_rule__SemanticsOutRule__Group__412038);
+ rule__SemanticsOutRule__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__5_in_rule__SemanticsOutRule__Group__412041);
+ rule__SemanticsOutRule__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__4
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5854:1: rule__SemanticsOutRule__Group__4__Impl : ( ( rule__SemanticsOutRule__FollowUpsAssignment_4 )* ) ;
+ public final void rule__SemanticsOutRule__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5858:1: ( ( ( rule__SemanticsOutRule__FollowUpsAssignment_4 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5859:1: ( ( rule__SemanticsOutRule__FollowUpsAssignment_4 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5859:1: ( ( rule__SemanticsOutRule__FollowUpsAssignment_4 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5860:1: ( rule__SemanticsOutRule__FollowUpsAssignment_4 )*
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsAssignment_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5861:1: ( rule__SemanticsOutRule__FollowUpsAssignment_4 )*
+ loop43:
+ do {
+ int alt43=2;
+ int LA43_0 = input.LA(1);
+
+ if ( (LA43_0==48||LA43_0==50) ) {
+ alt43=1;
+ }
+
+
+ switch (alt43) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5861:2: rule__SemanticsOutRule__FollowUpsAssignment_4
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__FollowUpsAssignment_4_in_rule__SemanticsOutRule__Group__4__Impl12068);
+ rule__SemanticsOutRule__FollowUpsAssignment_4();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop43;
+ }
+ } while (true);
+
+ after(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsAssignment_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__4__Impl
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5871:1: rule__SemanticsOutRule__Group__5 : rule__SemanticsOutRule__Group__5__Impl ;
+ public final void rule__SemanticsOutRule__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5875:1: ( rule__SemanticsOutRule__Group__5__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5876:2: rule__SemanticsOutRule__Group__5__Impl
+ {
+ pushFollow(FOLLOW_rule__SemanticsOutRule__Group__5__Impl_in_rule__SemanticsOutRule__Group__512099);
+ rule__SemanticsOutRule__Group__5__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__5
+
+
+ // $ANTLR start rule__SemanticsOutRule__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5882:1: rule__SemanticsOutRule__Group__5__Impl : ( '}' ) ;
+ public final void rule__SemanticsOutRule__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5886:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5887:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5887:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5888:1: '}'
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getRightCurlyBracketKeyword_5());
+ match(input,25,FOLLOW_25_in_rule__SemanticsOutRule__Group__5__Impl12127);
+ after(grammarAccess.getSemanticsOutRuleAccess().getRightCurlyBracketKeyword_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__Group__5__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5913:1: rule__ActorClass__Group__0 : rule__ActorClass__Group__0__Impl rule__ActorClass__Group__1 ;
+ public final void rule__ActorClass__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5917:1: ( rule__ActorClass__Group__0__Impl rule__ActorClass__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5918:2: rule__ActorClass__Group__0__Impl rule__ActorClass__Group__1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__0__Impl_in_rule__ActorClass__Group__012170);
+ rule__ActorClass__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__1_in_rule__ActorClass__Group__012173);
+ rule__ActorClass__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__0
+
+
+ // $ANTLR start rule__ActorClass__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5925:1: rule__ActorClass__Group__0__Impl : ( ( rule__ActorClass__AbstractAssignment_0 )? ) ;
+ public final void rule__ActorClass__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5929:1: ( ( ( rule__ActorClass__AbstractAssignment_0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5930:1: ( ( rule__ActorClass__AbstractAssignment_0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5930:1: ( ( rule__ActorClass__AbstractAssignment_0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5931:1: ( rule__ActorClass__AbstractAssignment_0 )?
+ {
+ before(grammarAccess.getActorClassAccess().getAbstractAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5932:1: ( rule__ActorClass__AbstractAssignment_0 )?
+ int alt44=2;
+ int LA44_0 = input.LA(1);
+
+ if ( (LA44_0==97) ) {
+ alt44=1;
+ }
+ switch (alt44) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5932:2: rule__ActorClass__AbstractAssignment_0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__AbstractAssignment_0_in_rule__ActorClass__Group__0__Impl12200);
+ rule__ActorClass__AbstractAssignment_0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getAbstractAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__0__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5942:1: rule__ActorClass__Group__1 : rule__ActorClass__Group__1__Impl rule__ActorClass__Group__2 ;
+ public final void rule__ActorClass__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5946:1: ( rule__ActorClass__Group__1__Impl rule__ActorClass__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5947:2: rule__ActorClass__Group__1__Impl rule__ActorClass__Group__2
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__1__Impl_in_rule__ActorClass__Group__112231);
+ rule__ActorClass__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__2_in_rule__ActorClass__Group__112234);
+ rule__ActorClass__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__1
+
+
+ // $ANTLR start rule__ActorClass__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5954:1: rule__ActorClass__Group__1__Impl : ( 'ActorClass' ) ;
+ public final void rule__ActorClass__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5958:1: ( ( 'ActorClass' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5959:1: ( 'ActorClass' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5959:1: ( 'ActorClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5960:1: 'ActorClass'
+ {
+ before(grammarAccess.getActorClassAccess().getActorClassKeyword_1());
+ match(input,51,FOLLOW_51_in_rule__ActorClass__Group__1__Impl12262);
+ after(grammarAccess.getActorClassAccess().getActorClassKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__1__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5973:1: rule__ActorClass__Group__2 : rule__ActorClass__Group__2__Impl rule__ActorClass__Group__3 ;
+ public final void rule__ActorClass__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5977:1: ( rule__ActorClass__Group__2__Impl rule__ActorClass__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5978:2: rule__ActorClass__Group__2__Impl rule__ActorClass__Group__3
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__2__Impl_in_rule__ActorClass__Group__212293);
+ rule__ActorClass__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__3_in_rule__ActorClass__Group__212296);
+ rule__ActorClass__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__2
+
+
+ // $ANTLR start rule__ActorClass__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5985:1: rule__ActorClass__Group__2__Impl : ( ( rule__ActorClass__NameAssignment_2 ) ) ;
+ public final void rule__ActorClass__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5989:1: ( ( ( rule__ActorClass__NameAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5990:1: ( ( rule__ActorClass__NameAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5990:1: ( ( rule__ActorClass__NameAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5991:1: ( rule__ActorClass__NameAssignment_2 )
+ {
+ before(grammarAccess.getActorClassAccess().getNameAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5992:1: ( rule__ActorClass__NameAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:5992:2: rule__ActorClass__NameAssignment_2
+ {
+ pushFollow(FOLLOW_rule__ActorClass__NameAssignment_2_in_rule__ActorClass__Group__2__Impl12323);
+ rule__ActorClass__NameAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getNameAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__2__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6002:1: rule__ActorClass__Group__3 : rule__ActorClass__Group__3__Impl rule__ActorClass__Group__4 ;
+ public final void rule__ActorClass__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6006:1: ( rule__ActorClass__Group__3__Impl rule__ActorClass__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6007:2: rule__ActorClass__Group__3__Impl rule__ActorClass__Group__4
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__3__Impl_in_rule__ActorClass__Group__312353);
+ rule__ActorClass__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__4_in_rule__ActorClass__Group__312356);
+ rule__ActorClass__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__3
+
+
+ // $ANTLR start rule__ActorClass__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6014:1: rule__ActorClass__Group__3__Impl : ( ( rule__ActorClass__Group_3__0 )? ) ;
+ public final void rule__ActorClass__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6018:1: ( ( ( rule__ActorClass__Group_3__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6019:1: ( ( rule__ActorClass__Group_3__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6019:1: ( ( rule__ActorClass__Group_3__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6020:1: ( rule__ActorClass__Group_3__0 )?
+ {
+ before(grammarAccess.getActorClassAccess().getGroup_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6021:1: ( rule__ActorClass__Group_3__0 )?
+ int alt45=2;
+ int LA45_0 = input.LA(1);
+
+ if ( (LA45_0==28) ) {
+ alt45=1;
+ }
+ switch (alt45) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6021:2: rule__ActorClass__Group_3__0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_3__0_in_rule__ActorClass__Group__3__Impl12383);
+ rule__ActorClass__Group_3__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getGroup_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__3__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6031:1: rule__ActorClass__Group__4 : rule__ActorClass__Group__4__Impl rule__ActorClass__Group__5 ;
+ public final void rule__ActorClass__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6035:1: ( rule__ActorClass__Group__4__Impl rule__ActorClass__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6036:2: rule__ActorClass__Group__4__Impl rule__ActorClass__Group__5
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__4__Impl_in_rule__ActorClass__Group__412414);
+ rule__ActorClass__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__5_in_rule__ActorClass__Group__412417);
+ rule__ActorClass__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__4
+
+
+ // $ANTLR start rule__ActorClass__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6043:1: rule__ActorClass__Group__4__Impl : ( '{' ) ;
+ public final void rule__ActorClass__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6047:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6048:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6048:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6049:1: '{'
+ {
+ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_4());
+ match(input,24,FOLLOW_24_in_rule__ActorClass__Group__4__Impl12445);
+ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__4__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6062:1: rule__ActorClass__Group__5 : rule__ActorClass__Group__5__Impl rule__ActorClass__Group__6 ;
+ public final void rule__ActorClass__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6066:1: ( rule__ActorClass__Group__5__Impl rule__ActorClass__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6067:2: rule__ActorClass__Group__5__Impl rule__ActorClass__Group__6
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__5__Impl_in_rule__ActorClass__Group__512476);
+ rule__ActorClass__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__6_in_rule__ActorClass__Group__512479);
+ rule__ActorClass__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__5
+
+
+ // $ANTLR start rule__ActorClass__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6074:1: rule__ActorClass__Group__5__Impl : ( ( rule__ActorClass__Group_5__0 )? ) ;
+ public final void rule__ActorClass__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6078:1: ( ( ( rule__ActorClass__Group_5__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6079:1: ( ( rule__ActorClass__Group_5__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6079:1: ( ( rule__ActorClass__Group_5__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6080:1: ( rule__ActorClass__Group_5__0 )?
+ {
+ before(grammarAccess.getActorClassAccess().getGroup_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6081:1: ( rule__ActorClass__Group_5__0 )?
+ int alt46=2;
+ int LA46_0 = input.LA(1);
+
+ if ( (LA46_0==52) ) {
+ alt46=1;
+ }
+ switch (alt46) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6081:2: rule__ActorClass__Group_5__0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__0_in_rule__ActorClass__Group__5__Impl12506);
+ rule__ActorClass__Group_5__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getGroup_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__5__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6091:1: rule__ActorClass__Group__6 : rule__ActorClass__Group__6__Impl rule__ActorClass__Group__7 ;
+ public final void rule__ActorClass__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6095:1: ( rule__ActorClass__Group__6__Impl rule__ActorClass__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6096:2: rule__ActorClass__Group__6__Impl rule__ActorClass__Group__7
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__6__Impl_in_rule__ActorClass__Group__612537);
+ rule__ActorClass__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__7_in_rule__ActorClass__Group__612540);
+ rule__ActorClass__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__6
+
+
+ // $ANTLR start rule__ActorClass__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6103:1: rule__ActorClass__Group__6__Impl : ( ( rule__ActorClass__Group_6__0 )? ) ;
+ public final void rule__ActorClass__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6107:1: ( ( ( rule__ActorClass__Group_6__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6108:1: ( ( rule__ActorClass__Group_6__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6108:1: ( ( rule__ActorClass__Group_6__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6109:1: ( rule__ActorClass__Group_6__0 )?
+ {
+ before(grammarAccess.getActorClassAccess().getGroup_6());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6110:1: ( rule__ActorClass__Group_6__0 )?
+ int alt47=2;
+ int LA47_0 = input.LA(1);
+
+ if ( (LA47_0==53) ) {
+ alt47=1;
+ }
+ switch (alt47) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6110:2: rule__ActorClass__Group_6__0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__0_in_rule__ActorClass__Group__6__Impl12567);
+ rule__ActorClass__Group_6__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getGroup_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__6__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6120:1: rule__ActorClass__Group__7 : rule__ActorClass__Group__7__Impl rule__ActorClass__Group__8 ;
+ public final void rule__ActorClass__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6124:1: ( rule__ActorClass__Group__7__Impl rule__ActorClass__Group__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6125:2: rule__ActorClass__Group__7__Impl rule__ActorClass__Group__8
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__7__Impl_in_rule__ActorClass__Group__712598);
+ rule__ActorClass__Group__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group__8_in_rule__ActorClass__Group__712601);
+ rule__ActorClass__Group__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__7
+
+
+ // $ANTLR start rule__ActorClass__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6132:1: rule__ActorClass__Group__7__Impl : ( ( rule__ActorClass__Group_7__0 )? ) ;
+ public final void rule__ActorClass__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6136:1: ( ( ( rule__ActorClass__Group_7__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6137:1: ( ( rule__ActorClass__Group_7__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6137:1: ( ( rule__ActorClass__Group_7__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6138:1: ( rule__ActorClass__Group_7__0 )?
+ {
+ before(grammarAccess.getActorClassAccess().getGroup_7());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6139:1: ( rule__ActorClass__Group_7__0 )?
+ int alt48=2;
+ int LA48_0 = input.LA(1);
+
+ if ( (LA48_0==54) ) {
+ alt48=1;
+ }
+ switch (alt48) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6139:2: rule__ActorClass__Group_7__0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__0_in_rule__ActorClass__Group__7__Impl12628);
+ rule__ActorClass__Group_7__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getGroup_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__7__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6149:1: rule__ActorClass__Group__8 : rule__ActorClass__Group__8__Impl ;
+ public final void rule__ActorClass__Group__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6153:1: ( rule__ActorClass__Group__8__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6154:2: rule__ActorClass__Group__8__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group__8__Impl_in_rule__ActorClass__Group__812659);
+ rule__ActorClass__Group__8__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__8
+
+
+ // $ANTLR start rule__ActorClass__Group__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6160:1: rule__ActorClass__Group__8__Impl : ( '}' ) ;
+ public final void rule__ActorClass__Group__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6164:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6165:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6165:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6166:1: '}'
+ {
+ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_8());
+ match(input,25,FOLLOW_25_in_rule__ActorClass__Group__8__Impl12687);
+ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group__8__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_3__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6197:1: rule__ActorClass__Group_3__0 : rule__ActorClass__Group_3__0__Impl rule__ActorClass__Group_3__1 ;
+ public final void rule__ActorClass__Group_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6201:1: ( rule__ActorClass__Group_3__0__Impl rule__ActorClass__Group_3__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6202:2: rule__ActorClass__Group_3__0__Impl rule__ActorClass__Group_3__1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_3__0__Impl_in_rule__ActorClass__Group_3__012736);
+ rule__ActorClass__Group_3__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_3__1_in_rule__ActorClass__Group_3__012739);
+ rule__ActorClass__Group_3__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_3__0
+
+
+ // $ANTLR start rule__ActorClass__Group_3__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6209:1: rule__ActorClass__Group_3__0__Impl : ( 'extends' ) ;
+ public final void rule__ActorClass__Group_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6213:1: ( ( 'extends' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6214:1: ( 'extends' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6214:1: ( 'extends' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6215:1: 'extends'
+ {
+ before(grammarAccess.getActorClassAccess().getExtendsKeyword_3_0());
+ match(input,28,FOLLOW_28_in_rule__ActorClass__Group_3__0__Impl12767);
+ after(grammarAccess.getActorClassAccess().getExtendsKeyword_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_3__0__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_3__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6228:1: rule__ActorClass__Group_3__1 : rule__ActorClass__Group_3__1__Impl ;
+ public final void rule__ActorClass__Group_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6232:1: ( rule__ActorClass__Group_3__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6233:2: rule__ActorClass__Group_3__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_3__1__Impl_in_rule__ActorClass__Group_3__112798);
+ rule__ActorClass__Group_3__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_3__1
+
+
+ // $ANTLR start rule__ActorClass__Group_3__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6239:1: rule__ActorClass__Group_3__1__Impl : ( ( rule__ActorClass__BaseAssignment_3_1 ) ) ;
+ public final void rule__ActorClass__Group_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6243:1: ( ( ( rule__ActorClass__BaseAssignment_3_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6244:1: ( ( rule__ActorClass__BaseAssignment_3_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6244:1: ( ( rule__ActorClass__BaseAssignment_3_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6245:1: ( rule__ActorClass__BaseAssignment_3_1 )
+ {
+ before(grammarAccess.getActorClassAccess().getBaseAssignment_3_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6246:1: ( rule__ActorClass__BaseAssignment_3_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6246:2: rule__ActorClass__BaseAssignment_3_1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__BaseAssignment_3_1_in_rule__ActorClass__Group_3__1__Impl12825);
+ rule__ActorClass__BaseAssignment_3_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getBaseAssignment_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_3__1__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_5__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6260:1: rule__ActorClass__Group_5__0 : rule__ActorClass__Group_5__0__Impl rule__ActorClass__Group_5__1 ;
+ public final void rule__ActorClass__Group_5__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6264:1: ( rule__ActorClass__Group_5__0__Impl rule__ActorClass__Group_5__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6265:2: rule__ActorClass__Group_5__0__Impl rule__ActorClass__Group_5__1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__0__Impl_in_rule__ActorClass__Group_5__012859);
+ rule__ActorClass__Group_5__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__1_in_rule__ActorClass__Group_5__012862);
+ rule__ActorClass__Group_5__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__0
+
+
+ // $ANTLR start rule__ActorClass__Group_5__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6272:1: rule__ActorClass__Group_5__0__Impl : ( 'Interface' ) ;
+ public final void rule__ActorClass__Group_5__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6276:1: ( ( 'Interface' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6277:1: ( 'Interface' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6277:1: ( 'Interface' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6278:1: 'Interface'
+ {
+ before(grammarAccess.getActorClassAccess().getInterfaceKeyword_5_0());
+ match(input,52,FOLLOW_52_in_rule__ActorClass__Group_5__0__Impl12890);
+ after(grammarAccess.getActorClassAccess().getInterfaceKeyword_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__0__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_5__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6291:1: rule__ActorClass__Group_5__1 : rule__ActorClass__Group_5__1__Impl rule__ActorClass__Group_5__2 ;
+ public final void rule__ActorClass__Group_5__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6295:1: ( rule__ActorClass__Group_5__1__Impl rule__ActorClass__Group_5__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6296:2: rule__ActorClass__Group_5__1__Impl rule__ActorClass__Group_5__2
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__1__Impl_in_rule__ActorClass__Group_5__112921);
+ rule__ActorClass__Group_5__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__2_in_rule__ActorClass__Group_5__112924);
+ rule__ActorClass__Group_5__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__1
+
+
+ // $ANTLR start rule__ActorClass__Group_5__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6303:1: rule__ActorClass__Group_5__1__Impl : ( '{' ) ;
+ public final void rule__ActorClass__Group_5__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6307:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6308:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6308:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6309:1: '{'
+ {
+ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_5_1());
+ match(input,24,FOLLOW_24_in_rule__ActorClass__Group_5__1__Impl12952);
+ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_5_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__1__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_5__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6322:1: rule__ActorClass__Group_5__2 : rule__ActorClass__Group_5__2__Impl rule__ActorClass__Group_5__3 ;
+ public final void rule__ActorClass__Group_5__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6326:1: ( rule__ActorClass__Group_5__2__Impl rule__ActorClass__Group_5__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6327:2: rule__ActorClass__Group_5__2__Impl rule__ActorClass__Group_5__3
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__2__Impl_in_rule__ActorClass__Group_5__212983);
+ rule__ActorClass__Group_5__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__3_in_rule__ActorClass__Group_5__212986);
+ rule__ActorClass__Group_5__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__2
+
+
+ // $ANTLR start rule__ActorClass__Group_5__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6334:1: rule__ActorClass__Group_5__2__Impl : ( ( rule__ActorClass__IfPortsAssignment_5_2 )* ) ;
+ public final void rule__ActorClass__Group_5__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6338:1: ( ( ( rule__ActorClass__IfPortsAssignment_5_2 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6339:1: ( ( rule__ActorClass__IfPortsAssignment_5_2 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6339:1: ( ( rule__ActorClass__IfPortsAssignment_5_2 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6340:1: ( rule__ActorClass__IfPortsAssignment_5_2 )*
+ {
+ before(grammarAccess.getActorClassAccess().getIfPortsAssignment_5_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6341:1: ( rule__ActorClass__IfPortsAssignment_5_2 )*
+ loop49:
+ do {
+ int alt49=2;
+ int LA49_0 = input.LA(1);
+
+ if ( (LA49_0==55||LA49_0==98) ) {
+ alt49=1;
+ }
+
+
+ switch (alt49) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6341:2: rule__ActorClass__IfPortsAssignment_5_2
+ {
+ pushFollow(FOLLOW_rule__ActorClass__IfPortsAssignment_5_2_in_rule__ActorClass__Group_5__2__Impl13013);
+ rule__ActorClass__IfPortsAssignment_5_2();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop49;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getIfPortsAssignment_5_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__2__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_5__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6351:1: rule__ActorClass__Group_5__3 : rule__ActorClass__Group_5__3__Impl rule__ActorClass__Group_5__4 ;
+ public final void rule__ActorClass__Group_5__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6355:1: ( rule__ActorClass__Group_5__3__Impl rule__ActorClass__Group_5__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6356:2: rule__ActorClass__Group_5__3__Impl rule__ActorClass__Group_5__4
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__3__Impl_in_rule__ActorClass__Group_5__313044);
+ rule__ActorClass__Group_5__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__4_in_rule__ActorClass__Group_5__313047);
+ rule__ActorClass__Group_5__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__3
+
+
+ // $ANTLR start rule__ActorClass__Group_5__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6363:1: rule__ActorClass__Group_5__3__Impl : ( ( rule__ActorClass__IfSPPsAssignment_5_3 )* ) ;
+ public final void rule__ActorClass__Group_5__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6367:1: ( ( ( rule__ActorClass__IfSPPsAssignment_5_3 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6368:1: ( ( rule__ActorClass__IfSPPsAssignment_5_3 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6368:1: ( ( rule__ActorClass__IfSPPsAssignment_5_3 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6369:1: ( rule__ActorClass__IfSPPsAssignment_5_3 )*
+ {
+ before(grammarAccess.getActorClassAccess().getIfSPPsAssignment_5_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6370:1: ( rule__ActorClass__IfSPPsAssignment_5_3 )*
+ loop50:
+ do {
+ int alt50=2;
+ int LA50_0 = input.LA(1);
+
+ if ( (LA50_0==58) ) {
+ alt50=1;
+ }
+
+
+ switch (alt50) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6370:2: rule__ActorClass__IfSPPsAssignment_5_3
+ {
+ pushFollow(FOLLOW_rule__ActorClass__IfSPPsAssignment_5_3_in_rule__ActorClass__Group_5__3__Impl13074);
+ rule__ActorClass__IfSPPsAssignment_5_3();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop50;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getIfSPPsAssignment_5_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__3__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_5__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6380:1: rule__ActorClass__Group_5__4 : rule__ActorClass__Group_5__4__Impl ;
+ public final void rule__ActorClass__Group_5__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6384:1: ( rule__ActorClass__Group_5__4__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6385:2: rule__ActorClass__Group_5__4__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_5__4__Impl_in_rule__ActorClass__Group_5__413105);
+ rule__ActorClass__Group_5__4__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__4
+
+
+ // $ANTLR start rule__ActorClass__Group_5__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6391:1: rule__ActorClass__Group_5__4__Impl : ( '}' ) ;
+ public final void rule__ActorClass__Group_5__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6395:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6396:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6396:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6397:1: '}'
+ {
+ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_5_4());
+ match(input,25,FOLLOW_25_in_rule__ActorClass__Group_5__4__Impl13133);
+ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_5_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_5__4__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6420:1: rule__ActorClass__Group_6__0 : rule__ActorClass__Group_6__0__Impl rule__ActorClass__Group_6__1 ;
+ public final void rule__ActorClass__Group_6__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6424:1: ( rule__ActorClass__Group_6__0__Impl rule__ActorClass__Group_6__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6425:2: rule__ActorClass__Group_6__0__Impl rule__ActorClass__Group_6__1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__0__Impl_in_rule__ActorClass__Group_6__013174);
+ rule__ActorClass__Group_6__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__1_in_rule__ActorClass__Group_6__013177);
+ rule__ActorClass__Group_6__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__0
+
+
+ // $ANTLR start rule__ActorClass__Group_6__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6432:1: rule__ActorClass__Group_6__0__Impl : ( 'Structure' ) ;
+ public final void rule__ActorClass__Group_6__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6436:1: ( ( 'Structure' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6437:1: ( 'Structure' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6437:1: ( 'Structure' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6438:1: 'Structure'
+ {
+ before(grammarAccess.getActorClassAccess().getStructureKeyword_6_0());
+ match(input,53,FOLLOW_53_in_rule__ActorClass__Group_6__0__Impl13205);
+ after(grammarAccess.getActorClassAccess().getStructureKeyword_6_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__0__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6451:1: rule__ActorClass__Group_6__1 : rule__ActorClass__Group_6__1__Impl rule__ActorClass__Group_6__2 ;
+ public final void rule__ActorClass__Group_6__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6455:1: ( rule__ActorClass__Group_6__1__Impl rule__ActorClass__Group_6__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6456:2: rule__ActorClass__Group_6__1__Impl rule__ActorClass__Group_6__2
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__1__Impl_in_rule__ActorClass__Group_6__113236);
+ rule__ActorClass__Group_6__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__2_in_rule__ActorClass__Group_6__113239);
+ rule__ActorClass__Group_6__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__1
+
+
+ // $ANTLR start rule__ActorClass__Group_6__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6463:1: rule__ActorClass__Group_6__1__Impl : ( '{' ) ;
+ public final void rule__ActorClass__Group_6__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6467:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6468:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6468:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6469:1: '{'
+ {
+ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_6_1());
+ match(input,24,FOLLOW_24_in_rule__ActorClass__Group_6__1__Impl13267);
+ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_6_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__1__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6482:1: rule__ActorClass__Group_6__2 : rule__ActorClass__Group_6__2__Impl rule__ActorClass__Group_6__3 ;
+ public final void rule__ActorClass__Group_6__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6486:1: ( rule__ActorClass__Group_6__2__Impl rule__ActorClass__Group_6__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6487:2: rule__ActorClass__Group_6__2__Impl rule__ActorClass__Group_6__3
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__2__Impl_in_rule__ActorClass__Group_6__213298);
+ rule__ActorClass__Group_6__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__3_in_rule__ActorClass__Group_6__213301);
+ rule__ActorClass__Group_6__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__2
+
+
+ // $ANTLR start rule__ActorClass__Group_6__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6494:1: rule__ActorClass__Group_6__2__Impl : ( ( rule__ActorClass__Group_6_2__0 )? ) ;
+ public final void rule__ActorClass__Group_6__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6498:1: ( ( ( rule__ActorClass__Group_6_2__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6499:1: ( ( rule__ActorClass__Group_6_2__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6499:1: ( ( rule__ActorClass__Group_6_2__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6500:1: ( rule__ActorClass__Group_6_2__0 )?
+ {
+ before(grammarAccess.getActorClassAccess().getGroup_6_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6501:1: ( rule__ActorClass__Group_6_2__0 )?
+ int alt51=2;
+ int LA51_0 = input.LA(1);
+
+ if ( (LA51_0==39) ) {
+ alt51=1;
+ }
+ switch (alt51) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6501:2: rule__ActorClass__Group_6_2__0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_2__0_in_rule__ActorClass__Group_6__2__Impl13328);
+ rule__ActorClass__Group_6_2__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getGroup_6_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__2__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6511:1: rule__ActorClass__Group_6__3 : rule__ActorClass__Group_6__3__Impl rule__ActorClass__Group_6__4 ;
+ public final void rule__ActorClass__Group_6__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6515:1: ( rule__ActorClass__Group_6__3__Impl rule__ActorClass__Group_6__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6516:2: rule__ActorClass__Group_6__3__Impl rule__ActorClass__Group_6__4
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__3__Impl_in_rule__ActorClass__Group_6__313359);
+ rule__ActorClass__Group_6__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__4_in_rule__ActorClass__Group_6__313362);
+ rule__ActorClass__Group_6__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__3
+
+
+ // $ANTLR start rule__ActorClass__Group_6__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6523:1: rule__ActorClass__Group_6__3__Impl : ( ( rule__ActorClass__Group_6_3__0 )? ) ;
+ public final void rule__ActorClass__Group_6__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6527:1: ( ( ( rule__ActorClass__Group_6_3__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6528:1: ( ( rule__ActorClass__Group_6_3__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6528:1: ( ( rule__ActorClass__Group_6_3__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6529:1: ( rule__ActorClass__Group_6_3__0 )?
+ {
+ before(grammarAccess.getActorClassAccess().getGroup_6_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6530:1: ( rule__ActorClass__Group_6_3__0 )?
+ int alt52=2;
+ int LA52_0 = input.LA(1);
+
+ if ( (LA52_0==40) ) {
+ alt52=1;
+ }
+ switch (alt52) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6530:2: rule__ActorClass__Group_6_3__0
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_3__0_in_rule__ActorClass__Group_6__3__Impl13389);
+ rule__ActorClass__Group_6_3__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getGroup_6_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__3__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6540:1: rule__ActorClass__Group_6__4 : rule__ActorClass__Group_6__4__Impl rule__ActorClass__Group_6__5 ;
+ public final void rule__ActorClass__Group_6__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6544:1: ( rule__ActorClass__Group_6__4__Impl rule__ActorClass__Group_6__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6545:2: rule__ActorClass__Group_6__4__Impl rule__ActorClass__Group_6__5
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__4__Impl_in_rule__ActorClass__Group_6__413420);
+ rule__ActorClass__Group_6__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__5_in_rule__ActorClass__Group_6__413423);
+ rule__ActorClass__Group_6__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__4
+
+
+ // $ANTLR start rule__ActorClass__Group_6__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6552:1: rule__ActorClass__Group_6__4__Impl : ( ( rule__ActorClass__Alternatives_6_4 )* ) ;
+ public final void rule__ActorClass__Group_6__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6556:1: ( ( ( rule__ActorClass__Alternatives_6_4 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6557:1: ( ( rule__ActorClass__Alternatives_6_4 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6557:1: ( ( rule__ActorClass__Alternatives_6_4 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6558:1: ( rule__ActorClass__Alternatives_6_4 )*
+ {
+ before(grammarAccess.getActorClassAccess().getAlternatives_6_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6559:1: ( rule__ActorClass__Alternatives_6_4 )*
+ loop53:
+ do {
+ int alt53=2;
+ int LA53_0 = input.LA(1);
+
+ if ( ((LA53_0>=55 && LA53_0<=56)||LA53_0==98) ) {
+ alt53=1;
+ }
+
+
+ switch (alt53) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6559:2: rule__ActorClass__Alternatives_6_4
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Alternatives_6_4_in_rule__ActorClass__Group_6__4__Impl13450);
+ rule__ActorClass__Alternatives_6_4();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop53;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getAlternatives_6_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__4__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6569:1: rule__ActorClass__Group_6__5 : rule__ActorClass__Group_6__5__Impl rule__ActorClass__Group_6__6 ;
+ public final void rule__ActorClass__Group_6__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6573:1: ( rule__ActorClass__Group_6__5__Impl rule__ActorClass__Group_6__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6574:2: rule__ActorClass__Group_6__5__Impl rule__ActorClass__Group_6__6
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__5__Impl_in_rule__ActorClass__Group_6__513481);
+ rule__ActorClass__Group_6__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__6_in_rule__ActorClass__Group_6__513484);
+ rule__ActorClass__Group_6__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__5
+
+
+ // $ANTLR start rule__ActorClass__Group_6__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6581:1: rule__ActorClass__Group_6__5__Impl : ( ( rule__ActorClass__ServiceImplementationsAssignment_6_5 )* ) ;
+ public final void rule__ActorClass__Group_6__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6585:1: ( ( ( rule__ActorClass__ServiceImplementationsAssignment_6_5 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6586:1: ( ( rule__ActorClass__ServiceImplementationsAssignment_6_5 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6586:1: ( ( rule__ActorClass__ServiceImplementationsAssignment_6_5 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6587:1: ( rule__ActorClass__ServiceImplementationsAssignment_6_5 )*
+ {
+ before(grammarAccess.getActorClassAccess().getServiceImplementationsAssignment_6_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6588:1: ( rule__ActorClass__ServiceImplementationsAssignment_6_5 )*
+ loop54:
+ do {
+ int alt54=2;
+ int LA54_0 = input.LA(1);
+
+ if ( (LA54_0==59) ) {
+ alt54=1;
+ }
+
+
+ switch (alt54) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6588:2: rule__ActorClass__ServiceImplementationsAssignment_6_5
+ {
+ pushFollow(FOLLOW_rule__ActorClass__ServiceImplementationsAssignment_6_5_in_rule__ActorClass__Group_6__5__Impl13511);
+ rule__ActorClass__ServiceImplementationsAssignment_6_5();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop54;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getServiceImplementationsAssignment_6_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__5__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6598:1: rule__ActorClass__Group_6__6 : rule__ActorClass__Group_6__6__Impl rule__ActorClass__Group_6__7 ;
+ public final void rule__ActorClass__Group_6__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6602:1: ( rule__ActorClass__Group_6__6__Impl rule__ActorClass__Group_6__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6603:2: rule__ActorClass__Group_6__6__Impl rule__ActorClass__Group_6__7
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__6__Impl_in_rule__ActorClass__Group_6__613542);
+ rule__ActorClass__Group_6__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__7_in_rule__ActorClass__Group_6__613545);
+ rule__ActorClass__Group_6__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__6
+
+
+ // $ANTLR start rule__ActorClass__Group_6__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6610:1: rule__ActorClass__Group_6__6__Impl : ( ( rule__ActorClass__StrSAPsAssignment_6_6 )* ) ;
+ public final void rule__ActorClass__Group_6__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6614:1: ( ( ( rule__ActorClass__StrSAPsAssignment_6_6 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6615:1: ( ( rule__ActorClass__StrSAPsAssignment_6_6 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6615:1: ( ( rule__ActorClass__StrSAPsAssignment_6_6 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6616:1: ( rule__ActorClass__StrSAPsAssignment_6_6 )*
+ {
+ before(grammarAccess.getActorClassAccess().getStrSAPsAssignment_6_6());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6617:1: ( rule__ActorClass__StrSAPsAssignment_6_6 )*
+ loop55:
+ do {
+ int alt55=2;
+ int LA55_0 = input.LA(1);
+
+ if ( (LA55_0==57) ) {
+ alt55=1;
+ }
+
+
+ switch (alt55) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6617:2: rule__ActorClass__StrSAPsAssignment_6_6
+ {
+ pushFollow(FOLLOW_rule__ActorClass__StrSAPsAssignment_6_6_in_rule__ActorClass__Group_6__6__Impl13572);
+ rule__ActorClass__StrSAPsAssignment_6_6();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop55;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getStrSAPsAssignment_6_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__6__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6627:1: rule__ActorClass__Group_6__7 : rule__ActorClass__Group_6__7__Impl rule__ActorClass__Group_6__8 ;
+ public final void rule__ActorClass__Group_6__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6631:1: ( rule__ActorClass__Group_6__7__Impl rule__ActorClass__Group_6__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6632:2: rule__ActorClass__Group_6__7__Impl rule__ActorClass__Group_6__8
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__7__Impl_in_rule__ActorClass__Group_6__713603);
+ rule__ActorClass__Group_6__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__8_in_rule__ActorClass__Group_6__713606);
+ rule__ActorClass__Group_6__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__7
+
+
+ // $ANTLR start rule__ActorClass__Group_6__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6639:1: rule__ActorClass__Group_6__7__Impl : ( ( rule__ActorClass__AttributesAssignment_6_7 )* ) ;
+ public final void rule__ActorClass__Group_6__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6643:1: ( ( ( rule__ActorClass__AttributesAssignment_6_7 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6644:1: ( ( rule__ActorClass__AttributesAssignment_6_7 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6644:1: ( ( rule__ActorClass__AttributesAssignment_6_7 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6645:1: ( rule__ActorClass__AttributesAssignment_6_7 )*
+ {
+ before(grammarAccess.getActorClassAccess().getAttributesAssignment_6_7());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6646:1: ( rule__ActorClass__AttributesAssignment_6_7 )*
+ loop56:
+ do {
+ int alt56=2;
+ int LA56_0 = input.LA(1);
+
+ if ( (LA56_0==29) ) {
+ alt56=1;
+ }
+
+
+ switch (alt56) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6646:2: rule__ActorClass__AttributesAssignment_6_7
+ {
+ pushFollow(FOLLOW_rule__ActorClass__AttributesAssignment_6_7_in_rule__ActorClass__Group_6__7__Impl13633);
+ rule__ActorClass__AttributesAssignment_6_7();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop56;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getAttributesAssignment_6_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__7__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6656:1: rule__ActorClass__Group_6__8 : rule__ActorClass__Group_6__8__Impl rule__ActorClass__Group_6__9 ;
+ public final void rule__ActorClass__Group_6__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6660:1: ( rule__ActorClass__Group_6__8__Impl rule__ActorClass__Group_6__9 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6661:2: rule__ActorClass__Group_6__8__Impl rule__ActorClass__Group_6__9
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__8__Impl_in_rule__ActorClass__Group_6__813664);
+ rule__ActorClass__Group_6__8__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__9_in_rule__ActorClass__Group_6__813667);
+ rule__ActorClass__Group_6__9();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__8
+
+
+ // $ANTLR start rule__ActorClass__Group_6__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6668:1: rule__ActorClass__Group_6__8__Impl : ( ( rule__ActorClass__ActorRefsAssignment_6_8 )* ) ;
+ public final void rule__ActorClass__Group_6__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6672:1: ( ( ( rule__ActorClass__ActorRefsAssignment_6_8 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6673:1: ( ( rule__ActorClass__ActorRefsAssignment_6_8 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6673:1: ( ( rule__ActorClass__ActorRefsAssignment_6_8 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6674:1: ( rule__ActorClass__ActorRefsAssignment_6_8 )*
+ {
+ before(grammarAccess.getActorClassAccess().getActorRefsAssignment_6_8());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6675:1: ( rule__ActorClass__ActorRefsAssignment_6_8 )*
+ loop57:
+ do {
+ int alt57=2;
+ int LA57_0 = input.LA(1);
+
+ if ( (LA57_0==72) ) {
+ alt57=1;
+ }
+
+
+ switch (alt57) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6675:2: rule__ActorClass__ActorRefsAssignment_6_8
+ {
+ pushFollow(FOLLOW_rule__ActorClass__ActorRefsAssignment_6_8_in_rule__ActorClass__Group_6__8__Impl13694);
+ rule__ActorClass__ActorRefsAssignment_6_8();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop57;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getActorRefsAssignment_6_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__8__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__9
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6685:1: rule__ActorClass__Group_6__9 : rule__ActorClass__Group_6__9__Impl rule__ActorClass__Group_6__10 ;
+ public final void rule__ActorClass__Group_6__9() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6689:1: ( rule__ActorClass__Group_6__9__Impl rule__ActorClass__Group_6__10 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6690:2: rule__ActorClass__Group_6__9__Impl rule__ActorClass__Group_6__10
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__9__Impl_in_rule__ActorClass__Group_6__913725);
+ rule__ActorClass__Group_6__9__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__10_in_rule__ActorClass__Group_6__913728);
+ rule__ActorClass__Group_6__10();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__9
+
+
+ // $ANTLR start rule__ActorClass__Group_6__9__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6697:1: rule__ActorClass__Group_6__9__Impl : ( ( rule__ActorClass__BindingsAssignment_6_9 )* ) ;
+ public final void rule__ActorClass__Group_6__9__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6701:1: ( ( ( rule__ActorClass__BindingsAssignment_6_9 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6702:1: ( ( rule__ActorClass__BindingsAssignment_6_9 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6702:1: ( ( rule__ActorClass__BindingsAssignment_6_9 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6703:1: ( rule__ActorClass__BindingsAssignment_6_9 )*
+ {
+ before(grammarAccess.getActorClassAccess().getBindingsAssignment_6_9());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6704:1: ( rule__ActorClass__BindingsAssignment_6_9 )*
+ loop58:
+ do {
+ int alt58=2;
+ int LA58_0 = input.LA(1);
+
+ if ( (LA58_0==66) ) {
+ alt58=1;
+ }
+
+
+ switch (alt58) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6704:2: rule__ActorClass__BindingsAssignment_6_9
+ {
+ pushFollow(FOLLOW_rule__ActorClass__BindingsAssignment_6_9_in_rule__ActorClass__Group_6__9__Impl13755);
+ rule__ActorClass__BindingsAssignment_6_9();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop58;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getBindingsAssignment_6_9());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__9__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__10
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6714:1: rule__ActorClass__Group_6__10 : rule__ActorClass__Group_6__10__Impl rule__ActorClass__Group_6__11 ;
+ public final void rule__ActorClass__Group_6__10() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6718:1: ( rule__ActorClass__Group_6__10__Impl rule__ActorClass__Group_6__11 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6719:2: rule__ActorClass__Group_6__10__Impl rule__ActorClass__Group_6__11
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__10__Impl_in_rule__ActorClass__Group_6__1013786);
+ rule__ActorClass__Group_6__10__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__11_in_rule__ActorClass__Group_6__1013789);
+ rule__ActorClass__Group_6__11();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__10
+
+
+ // $ANTLR start rule__ActorClass__Group_6__10__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6726:1: rule__ActorClass__Group_6__10__Impl : ( ( rule__ActorClass__ConnectionsAssignment_6_10 )* ) ;
+ public final void rule__ActorClass__Group_6__10__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6730:1: ( ( ( rule__ActorClass__ConnectionsAssignment_6_10 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6731:1: ( ( rule__ActorClass__ConnectionsAssignment_6_10 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6731:1: ( ( rule__ActorClass__ConnectionsAssignment_6_10 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6732:1: ( rule__ActorClass__ConnectionsAssignment_6_10 )*
+ {
+ before(grammarAccess.getActorClassAccess().getConnectionsAssignment_6_10());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6733:1: ( rule__ActorClass__ConnectionsAssignment_6_10 )*
+ loop59:
+ do {
+ int alt59=2;
+ int LA59_0 = input.LA(1);
+
+ if ( (LA59_0==68) ) {
+ alt59=1;
+ }
+
+
+ switch (alt59) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6733:2: rule__ActorClass__ConnectionsAssignment_6_10
+ {
+ pushFollow(FOLLOW_rule__ActorClass__ConnectionsAssignment_6_10_in_rule__ActorClass__Group_6__10__Impl13816);
+ rule__ActorClass__ConnectionsAssignment_6_10();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop59;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getConnectionsAssignment_6_10());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__10__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6__11
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6743:1: rule__ActorClass__Group_6__11 : rule__ActorClass__Group_6__11__Impl ;
+ public final void rule__ActorClass__Group_6__11() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6747:1: ( rule__ActorClass__Group_6__11__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6748:2: rule__ActorClass__Group_6__11__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6__11__Impl_in_rule__ActorClass__Group_6__1113847);
+ rule__ActorClass__Group_6__11__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__11
+
+
+ // $ANTLR start rule__ActorClass__Group_6__11__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6754:1: rule__ActorClass__Group_6__11__Impl : ( '}' ) ;
+ public final void rule__ActorClass__Group_6__11__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6758:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6759:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6759:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6760:1: '}'
+ {
+ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_6_11());
+ match(input,25,FOLLOW_25_in_rule__ActorClass__Group_6__11__Impl13875);
+ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_6_11());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6__11__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6_2__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6797:1: rule__ActorClass__Group_6_2__0 : rule__ActorClass__Group_6_2__0__Impl rule__ActorClass__Group_6_2__1 ;
+ public final void rule__ActorClass__Group_6_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6801:1: ( rule__ActorClass__Group_6_2__0__Impl rule__ActorClass__Group_6_2__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6802:2: rule__ActorClass__Group_6_2__0__Impl rule__ActorClass__Group_6_2__1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_2__0__Impl_in_rule__ActorClass__Group_6_2__013930);
+ rule__ActorClass__Group_6_2__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_2__1_in_rule__ActorClass__Group_6_2__013933);
+ rule__ActorClass__Group_6_2__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_2__0
+
+
+ // $ANTLR start rule__ActorClass__Group_6_2__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6809:1: rule__ActorClass__Group_6_2__0__Impl : ( 'usercode1' ) ;
+ public final void rule__ActorClass__Group_6_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6813:1: ( ( 'usercode1' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6814:1: ( 'usercode1' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6814:1: ( 'usercode1' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6815:1: 'usercode1'
+ {
+ before(grammarAccess.getActorClassAccess().getUsercode1Keyword_6_2_0());
+ match(input,39,FOLLOW_39_in_rule__ActorClass__Group_6_2__0__Impl13961);
+ after(grammarAccess.getActorClassAccess().getUsercode1Keyword_6_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_2__0__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6_2__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6828:1: rule__ActorClass__Group_6_2__1 : rule__ActorClass__Group_6_2__1__Impl ;
+ public final void rule__ActorClass__Group_6_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6832:1: ( rule__ActorClass__Group_6_2__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6833:2: rule__ActorClass__Group_6_2__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_2__1__Impl_in_rule__ActorClass__Group_6_2__113992);
+ rule__ActorClass__Group_6_2__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_2__1
+
+
+ // $ANTLR start rule__ActorClass__Group_6_2__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6839:1: rule__ActorClass__Group_6_2__1__Impl : ( ( rule__ActorClass__UserCode1Assignment_6_2_1 ) ) ;
+ public final void rule__ActorClass__Group_6_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6843:1: ( ( ( rule__ActorClass__UserCode1Assignment_6_2_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6844:1: ( ( rule__ActorClass__UserCode1Assignment_6_2_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6844:1: ( ( rule__ActorClass__UserCode1Assignment_6_2_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6845:1: ( rule__ActorClass__UserCode1Assignment_6_2_1 )
+ {
+ before(grammarAccess.getActorClassAccess().getUserCode1Assignment_6_2_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6846:1: ( rule__ActorClass__UserCode1Assignment_6_2_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6846:2: rule__ActorClass__UserCode1Assignment_6_2_1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__UserCode1Assignment_6_2_1_in_rule__ActorClass__Group_6_2__1__Impl14019);
+ rule__ActorClass__UserCode1Assignment_6_2_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getUserCode1Assignment_6_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_2__1__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6_3__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6860:1: rule__ActorClass__Group_6_3__0 : rule__ActorClass__Group_6_3__0__Impl rule__ActorClass__Group_6_3__1 ;
+ public final void rule__ActorClass__Group_6_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6864:1: ( rule__ActorClass__Group_6_3__0__Impl rule__ActorClass__Group_6_3__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6865:2: rule__ActorClass__Group_6_3__0__Impl rule__ActorClass__Group_6_3__1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_3__0__Impl_in_rule__ActorClass__Group_6_3__014053);
+ rule__ActorClass__Group_6_3__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_3__1_in_rule__ActorClass__Group_6_3__014056);
+ rule__ActorClass__Group_6_3__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_3__0
+
+
+ // $ANTLR start rule__ActorClass__Group_6_3__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6872:1: rule__ActorClass__Group_6_3__0__Impl : ( 'usercode2' ) ;
+ public final void rule__ActorClass__Group_6_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6876:1: ( ( 'usercode2' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6877:1: ( 'usercode2' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6877:1: ( 'usercode2' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6878:1: 'usercode2'
+ {
+ before(grammarAccess.getActorClassAccess().getUsercode2Keyword_6_3_0());
+ match(input,40,FOLLOW_40_in_rule__ActorClass__Group_6_3__0__Impl14084);
+ after(grammarAccess.getActorClassAccess().getUsercode2Keyword_6_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_3__0__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_6_3__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6891:1: rule__ActorClass__Group_6_3__1 : rule__ActorClass__Group_6_3__1__Impl ;
+ public final void rule__ActorClass__Group_6_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6895:1: ( rule__ActorClass__Group_6_3__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6896:2: rule__ActorClass__Group_6_3__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_6_3__1__Impl_in_rule__ActorClass__Group_6_3__114115);
+ rule__ActorClass__Group_6_3__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_3__1
+
+
+ // $ANTLR start rule__ActorClass__Group_6_3__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6902:1: rule__ActorClass__Group_6_3__1__Impl : ( ( rule__ActorClass__UserCode2Assignment_6_3_1 ) ) ;
+ public final void rule__ActorClass__Group_6_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6906:1: ( ( ( rule__ActorClass__UserCode2Assignment_6_3_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6907:1: ( ( rule__ActorClass__UserCode2Assignment_6_3_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6907:1: ( ( rule__ActorClass__UserCode2Assignment_6_3_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6908:1: ( rule__ActorClass__UserCode2Assignment_6_3_1 )
+ {
+ before(grammarAccess.getActorClassAccess().getUserCode2Assignment_6_3_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6909:1: ( rule__ActorClass__UserCode2Assignment_6_3_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6909:2: rule__ActorClass__UserCode2Assignment_6_3_1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__UserCode2Assignment_6_3_1_in_rule__ActorClass__Group_6_3__1__Impl14142);
+ rule__ActorClass__UserCode2Assignment_6_3_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getUserCode2Assignment_6_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_6_3__1__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_7__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6923:1: rule__ActorClass__Group_7__0 : rule__ActorClass__Group_7__0__Impl rule__ActorClass__Group_7__1 ;
+ public final void rule__ActorClass__Group_7__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6927:1: ( rule__ActorClass__Group_7__0__Impl rule__ActorClass__Group_7__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6928:2: rule__ActorClass__Group_7__0__Impl rule__ActorClass__Group_7__1
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__0__Impl_in_rule__ActorClass__Group_7__014176);
+ rule__ActorClass__Group_7__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__1_in_rule__ActorClass__Group_7__014179);
+ rule__ActorClass__Group_7__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__0
+
+
+ // $ANTLR start rule__ActorClass__Group_7__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6935:1: rule__ActorClass__Group_7__0__Impl : ( 'Behavior' ) ;
+ public final void rule__ActorClass__Group_7__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6939:1: ( ( 'Behavior' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6940:1: ( 'Behavior' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6940:1: ( 'Behavior' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6941:1: 'Behavior'
+ {
+ before(grammarAccess.getActorClassAccess().getBehaviorKeyword_7_0());
+ match(input,54,FOLLOW_54_in_rule__ActorClass__Group_7__0__Impl14207);
+ after(grammarAccess.getActorClassAccess().getBehaviorKeyword_7_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__0__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_7__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6954:1: rule__ActorClass__Group_7__1 : rule__ActorClass__Group_7__1__Impl rule__ActorClass__Group_7__2 ;
+ public final void rule__ActorClass__Group_7__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6958:1: ( rule__ActorClass__Group_7__1__Impl rule__ActorClass__Group_7__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6959:2: rule__ActorClass__Group_7__1__Impl rule__ActorClass__Group_7__2
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__1__Impl_in_rule__ActorClass__Group_7__114238);
+ rule__ActorClass__Group_7__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__2_in_rule__ActorClass__Group_7__114241);
+ rule__ActorClass__Group_7__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__1
+
+
+ // $ANTLR start rule__ActorClass__Group_7__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6966:1: rule__ActorClass__Group_7__1__Impl : ( '{' ) ;
+ public final void rule__ActorClass__Group_7__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6970:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6971:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6971:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6972:1: '{'
+ {
+ before(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_7_1());
+ match(input,24,FOLLOW_24_in_rule__ActorClass__Group_7__1__Impl14269);
+ after(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_7_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__1__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_7__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6985:1: rule__ActorClass__Group_7__2 : rule__ActorClass__Group_7__2__Impl rule__ActorClass__Group_7__3 ;
+ public final void rule__ActorClass__Group_7__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6989:1: ( rule__ActorClass__Group_7__2__Impl rule__ActorClass__Group_7__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6990:2: rule__ActorClass__Group_7__2__Impl rule__ActorClass__Group_7__3
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__2__Impl_in_rule__ActorClass__Group_7__214300);
+ rule__ActorClass__Group_7__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__3_in_rule__ActorClass__Group_7__214303);
+ rule__ActorClass__Group_7__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__2
+
+
+ // $ANTLR start rule__ActorClass__Group_7__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:6997:1: rule__ActorClass__Group_7__2__Impl : ( ( rule__ActorClass__OperationsAssignment_7_2 )* ) ;
+ public final void rule__ActorClass__Group_7__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7001:1: ( ( ( rule__ActorClass__OperationsAssignment_7_2 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7002:1: ( ( rule__ActorClass__OperationsAssignment_7_2 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7002:1: ( ( rule__ActorClass__OperationsAssignment_7_2 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7003:1: ( rule__ActorClass__OperationsAssignment_7_2 )*
+ {
+ before(grammarAccess.getActorClassAccess().getOperationsAssignment_7_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7004:1: ( rule__ActorClass__OperationsAssignment_7_2 )*
+ loop60:
+ do {
+ int alt60=2;
+ int LA60_0 = input.LA(1);
+
+ if ( (LA60_0==32) ) {
+ alt60=1;
+ }
+
+
+ switch (alt60) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7004:2: rule__ActorClass__OperationsAssignment_7_2
+ {
+ pushFollow(FOLLOW_rule__ActorClass__OperationsAssignment_7_2_in_rule__ActorClass__Group_7__2__Impl14330);
+ rule__ActorClass__OperationsAssignment_7_2();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop60;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorClassAccess().getOperationsAssignment_7_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__2__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_7__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7014:1: rule__ActorClass__Group_7__3 : rule__ActorClass__Group_7__3__Impl rule__ActorClass__Group_7__4 ;
+ public final void rule__ActorClass__Group_7__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7018:1: ( rule__ActorClass__Group_7__3__Impl rule__ActorClass__Group_7__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7019:2: rule__ActorClass__Group_7__3__Impl rule__ActorClass__Group_7__4
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__3__Impl_in_rule__ActorClass__Group_7__314361);
+ rule__ActorClass__Group_7__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__4_in_rule__ActorClass__Group_7__314364);
+ rule__ActorClass__Group_7__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__3
+
+
+ // $ANTLR start rule__ActorClass__Group_7__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7026:1: rule__ActorClass__Group_7__3__Impl : ( ( rule__ActorClass__StateMachineAssignment_7_3 )? ) ;
+ public final void rule__ActorClass__Group_7__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7030:1: ( ( ( rule__ActorClass__StateMachineAssignment_7_3 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7031:1: ( ( rule__ActorClass__StateMachineAssignment_7_3 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7031:1: ( ( rule__ActorClass__StateMachineAssignment_7_3 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7032:1: ( rule__ActorClass__StateMachineAssignment_7_3 )?
+ {
+ before(grammarAccess.getActorClassAccess().getStateMachineAssignment_7_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7033:1: ( rule__ActorClass__StateMachineAssignment_7_3 )?
+ int alt61=2;
+ int LA61_0 = input.LA(1);
+
+ if ( (LA61_0==73) ) {
+ alt61=1;
+ }
+ switch (alt61) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7033:2: rule__ActorClass__StateMachineAssignment_7_3
+ {
+ pushFollow(FOLLOW_rule__ActorClass__StateMachineAssignment_7_3_in_rule__ActorClass__Group_7__3__Impl14391);
+ rule__ActorClass__StateMachineAssignment_7_3();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getStateMachineAssignment_7_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__3__Impl
+
+
+ // $ANTLR start rule__ActorClass__Group_7__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7043:1: rule__ActorClass__Group_7__4 : rule__ActorClass__Group_7__4__Impl ;
+ public final void rule__ActorClass__Group_7__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7047:1: ( rule__ActorClass__Group_7__4__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7048:2: rule__ActorClass__Group_7__4__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorClass__Group_7__4__Impl_in_rule__ActorClass__Group_7__414422);
+ rule__ActorClass__Group_7__4__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__4
+
+
+ // $ANTLR start rule__ActorClass__Group_7__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7054:1: rule__ActorClass__Group_7__4__Impl : ( '}' ) ;
+ public final void rule__ActorClass__Group_7__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7058:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7059:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7059:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7060:1: '}'
+ {
+ before(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_7_4());
+ match(input,25,FOLLOW_25_in_rule__ActorClass__Group_7__4__Impl14450);
+ after(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_7_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__Group_7__4__Impl
+
+
+ // $ANTLR start rule__Port__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7083:1: rule__Port__Group__0 : rule__Port__Group__0__Impl rule__Port__Group__1 ;
+ public final void rule__Port__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7087:1: ( rule__Port__Group__0__Impl rule__Port__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7088:2: rule__Port__Group__0__Impl rule__Port__Group__1
+ {
+ pushFollow(FOLLOW_rule__Port__Group__0__Impl_in_rule__Port__Group__014491);
+ rule__Port__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Port__Group__1_in_rule__Port__Group__014494);
+ rule__Port__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__0
+
+
+ // $ANTLR start rule__Port__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7095:1: rule__Port__Group__0__Impl : ( ( rule__Port__ConjugatedAssignment_0 )? ) ;
+ public final void rule__Port__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7099:1: ( ( ( rule__Port__ConjugatedAssignment_0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7100:1: ( ( rule__Port__ConjugatedAssignment_0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7100:1: ( ( rule__Port__ConjugatedAssignment_0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7101:1: ( rule__Port__ConjugatedAssignment_0 )?
+ {
+ before(grammarAccess.getPortAccess().getConjugatedAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7102:1: ( rule__Port__ConjugatedAssignment_0 )?
+ int alt62=2;
+ int LA62_0 = input.LA(1);
+
+ if ( (LA62_0==98) ) {
+ alt62=1;
+ }
+ switch (alt62) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7102:2: rule__Port__ConjugatedAssignment_0
+ {
+ pushFollow(FOLLOW_rule__Port__ConjugatedAssignment_0_in_rule__Port__Group__0__Impl14521);
+ rule__Port__ConjugatedAssignment_0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getPortAccess().getConjugatedAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__0__Impl
+
+
+ // $ANTLR start rule__Port__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7112:1: rule__Port__Group__1 : rule__Port__Group__1__Impl rule__Port__Group__2 ;
+ public final void rule__Port__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7116:1: ( rule__Port__Group__1__Impl rule__Port__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7117:2: rule__Port__Group__1__Impl rule__Port__Group__2
+ {
+ pushFollow(FOLLOW_rule__Port__Group__1__Impl_in_rule__Port__Group__114552);
+ rule__Port__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Port__Group__2_in_rule__Port__Group__114555);
+ rule__Port__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__1
+
+
+ // $ANTLR start rule__Port__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7124:1: rule__Port__Group__1__Impl : ( 'Port' ) ;
+ public final void rule__Port__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7128:1: ( ( 'Port' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7129:1: ( 'Port' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7129:1: ( 'Port' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7130:1: 'Port'
+ {
+ before(grammarAccess.getPortAccess().getPortKeyword_1());
+ match(input,55,FOLLOW_55_in_rule__Port__Group__1__Impl14583);
+ after(grammarAccess.getPortAccess().getPortKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__1__Impl
+
+
+ // $ANTLR start rule__Port__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7143:1: rule__Port__Group__2 : rule__Port__Group__2__Impl rule__Port__Group__3 ;
+ public final void rule__Port__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7147:1: ( rule__Port__Group__2__Impl rule__Port__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7148:2: rule__Port__Group__2__Impl rule__Port__Group__3
+ {
+ pushFollow(FOLLOW_rule__Port__Group__2__Impl_in_rule__Port__Group__214614);
+ rule__Port__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Port__Group__3_in_rule__Port__Group__214617);
+ rule__Port__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__2
+
+
+ // $ANTLR start rule__Port__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7155:1: rule__Port__Group__2__Impl : ( ( rule__Port__NameAssignment_2 ) ) ;
+ public final void rule__Port__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7159:1: ( ( ( rule__Port__NameAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7160:1: ( ( rule__Port__NameAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7160:1: ( ( rule__Port__NameAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7161:1: ( rule__Port__NameAssignment_2 )
+ {
+ before(grammarAccess.getPortAccess().getNameAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7162:1: ( rule__Port__NameAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7162:2: rule__Port__NameAssignment_2
+ {
+ pushFollow(FOLLOW_rule__Port__NameAssignment_2_in_rule__Port__Group__2__Impl14644);
+ rule__Port__NameAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortAccess().getNameAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__2__Impl
+
+
+ // $ANTLR start rule__Port__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7172:1: rule__Port__Group__3 : rule__Port__Group__3__Impl rule__Port__Group__4 ;
+ public final void rule__Port__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7176:1: ( rule__Port__Group__3__Impl rule__Port__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7177:2: rule__Port__Group__3__Impl rule__Port__Group__4
+ {
+ pushFollow(FOLLOW_rule__Port__Group__3__Impl_in_rule__Port__Group__314674);
+ rule__Port__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Port__Group__4_in_rule__Port__Group__314677);
+ rule__Port__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__3
+
+
+ // $ANTLR start rule__Port__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7184:1: rule__Port__Group__3__Impl : ( ( rule__Port__Group_3__0 )? ) ;
+ public final void rule__Port__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7188:1: ( ( ( rule__Port__Group_3__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7189:1: ( ( rule__Port__Group_3__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7189:1: ( ( rule__Port__Group_3__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7190:1: ( rule__Port__Group_3__0 )?
+ {
+ before(grammarAccess.getPortAccess().getGroup_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7191:1: ( rule__Port__Group_3__0 )?
+ int alt63=2;
+ int LA63_0 = input.LA(1);
+
+ if ( (LA63_0==30) ) {
+ alt63=1;
+ }
+ switch (alt63) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7191:2: rule__Port__Group_3__0
+ {
+ pushFollow(FOLLOW_rule__Port__Group_3__0_in_rule__Port__Group__3__Impl14704);
+ rule__Port__Group_3__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getPortAccess().getGroup_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__3__Impl
+
+
+ // $ANTLR start rule__Port__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7201:1: rule__Port__Group__4 : rule__Port__Group__4__Impl rule__Port__Group__5 ;
+ public final void rule__Port__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7205:1: ( rule__Port__Group__4__Impl rule__Port__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7206:2: rule__Port__Group__4__Impl rule__Port__Group__5
+ {
+ pushFollow(FOLLOW_rule__Port__Group__4__Impl_in_rule__Port__Group__414735);
+ rule__Port__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Port__Group__5_in_rule__Port__Group__414738);
+ rule__Port__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__4
+
+
+ // $ANTLR start rule__Port__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7213:1: rule__Port__Group__4__Impl : ( ':' ) ;
+ public final void rule__Port__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7217:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7218:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7218:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7219:1: ':'
+ {
+ before(grammarAccess.getPortAccess().getColonKeyword_4());
+ match(input,26,FOLLOW_26_in_rule__Port__Group__4__Impl14766);
+ after(grammarAccess.getPortAccess().getColonKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__4__Impl
+
+
+ // $ANTLR start rule__Port__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7232:1: rule__Port__Group__5 : rule__Port__Group__5__Impl ;
+ public final void rule__Port__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7236:1: ( rule__Port__Group__5__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7237:2: rule__Port__Group__5__Impl
+ {
+ pushFollow(FOLLOW_rule__Port__Group__5__Impl_in_rule__Port__Group__514797);
+ rule__Port__Group__5__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__5
+
+
+ // $ANTLR start rule__Port__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7243:1: rule__Port__Group__5__Impl : ( ( rule__Port__ProtocolAssignment_5 ) ) ;
+ public final void rule__Port__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7247:1: ( ( ( rule__Port__ProtocolAssignment_5 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7248:1: ( ( rule__Port__ProtocolAssignment_5 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7248:1: ( ( rule__Port__ProtocolAssignment_5 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7249:1: ( rule__Port__ProtocolAssignment_5 )
+ {
+ before(grammarAccess.getPortAccess().getProtocolAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7250:1: ( rule__Port__ProtocolAssignment_5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7250:2: rule__Port__ProtocolAssignment_5
+ {
+ pushFollow(FOLLOW_rule__Port__ProtocolAssignment_5_in_rule__Port__Group__5__Impl14824);
+ rule__Port__ProtocolAssignment_5();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortAccess().getProtocolAssignment_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group__5__Impl
+
+
+ // $ANTLR start rule__Port__Group_3__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7272:1: rule__Port__Group_3__0 : rule__Port__Group_3__0__Impl rule__Port__Group_3__1 ;
+ public final void rule__Port__Group_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7276:1: ( rule__Port__Group_3__0__Impl rule__Port__Group_3__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7277:2: rule__Port__Group_3__0__Impl rule__Port__Group_3__1
+ {
+ pushFollow(FOLLOW_rule__Port__Group_3__0__Impl_in_rule__Port__Group_3__014866);
+ rule__Port__Group_3__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Port__Group_3__1_in_rule__Port__Group_3__014869);
+ rule__Port__Group_3__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group_3__0
+
+
+ // $ANTLR start rule__Port__Group_3__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7284:1: rule__Port__Group_3__0__Impl : ( '[' ) ;
+ public final void rule__Port__Group_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7288:1: ( ( '[' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7289:1: ( '[' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7289:1: ( '[' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7290:1: '['
+ {
+ before(grammarAccess.getPortAccess().getLeftSquareBracketKeyword_3_0());
+ match(input,30,FOLLOW_30_in_rule__Port__Group_3__0__Impl14897);
+ after(grammarAccess.getPortAccess().getLeftSquareBracketKeyword_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group_3__0__Impl
+
+
+ // $ANTLR start rule__Port__Group_3__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7303:1: rule__Port__Group_3__1 : rule__Port__Group_3__1__Impl rule__Port__Group_3__2 ;
+ public final void rule__Port__Group_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7307:1: ( rule__Port__Group_3__1__Impl rule__Port__Group_3__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7308:2: rule__Port__Group_3__1__Impl rule__Port__Group_3__2
+ {
+ pushFollow(FOLLOW_rule__Port__Group_3__1__Impl_in_rule__Port__Group_3__114928);
+ rule__Port__Group_3__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Port__Group_3__2_in_rule__Port__Group_3__114931);
+ rule__Port__Group_3__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group_3__1
+
+
+ // $ANTLR start rule__Port__Group_3__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7315:1: rule__Port__Group_3__1__Impl : ( ( rule__Port__MultiplicityAssignment_3_1 ) ) ;
+ public final void rule__Port__Group_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7319:1: ( ( ( rule__Port__MultiplicityAssignment_3_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7320:1: ( ( rule__Port__MultiplicityAssignment_3_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7320:1: ( ( rule__Port__MultiplicityAssignment_3_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7321:1: ( rule__Port__MultiplicityAssignment_3_1 )
+ {
+ before(grammarAccess.getPortAccess().getMultiplicityAssignment_3_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7322:1: ( rule__Port__MultiplicityAssignment_3_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7322:2: rule__Port__MultiplicityAssignment_3_1
+ {
+ pushFollow(FOLLOW_rule__Port__MultiplicityAssignment_3_1_in_rule__Port__Group_3__1__Impl14958);
+ rule__Port__MultiplicityAssignment_3_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getPortAccess().getMultiplicityAssignment_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group_3__1__Impl
+
+
+ // $ANTLR start rule__Port__Group_3__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7332:1: rule__Port__Group_3__2 : rule__Port__Group_3__2__Impl ;
+ public final void rule__Port__Group_3__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7336:1: ( rule__Port__Group_3__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7337:2: rule__Port__Group_3__2__Impl
+ {
+ pushFollow(FOLLOW_rule__Port__Group_3__2__Impl_in_rule__Port__Group_3__214988);
+ rule__Port__Group_3__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group_3__2
+
+
+ // $ANTLR start rule__Port__Group_3__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7343:1: rule__Port__Group_3__2__Impl : ( ']' ) ;
+ public final void rule__Port__Group_3__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7347:1: ( ( ']' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7348:1: ( ']' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7348:1: ( ']' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7349:1: ']'
+ {
+ before(grammarAccess.getPortAccess().getRightSquareBracketKeyword_3_2());
+ match(input,31,FOLLOW_31_in_rule__Port__Group_3__2__Impl15016);
+ after(grammarAccess.getPortAccess().getRightSquareBracketKeyword_3_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__Group_3__2__Impl
+
+
+ // $ANTLR start rule__ExternalPort__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7368:1: rule__ExternalPort__Group__0 : rule__ExternalPort__Group__0__Impl rule__ExternalPort__Group__1 ;
+ public final void rule__ExternalPort__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7372:1: ( rule__ExternalPort__Group__0__Impl rule__ExternalPort__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7373:2: rule__ExternalPort__Group__0__Impl rule__ExternalPort__Group__1
+ {
+ pushFollow(FOLLOW_rule__ExternalPort__Group__0__Impl_in_rule__ExternalPort__Group__015053);
+ rule__ExternalPort__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ExternalPort__Group__1_in_rule__ExternalPort__Group__015056);
+ rule__ExternalPort__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExternalPort__Group__0
+
+
+ // $ANTLR start rule__ExternalPort__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7380:1: rule__ExternalPort__Group__0__Impl : ( 'external' ) ;
+ public final void rule__ExternalPort__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7384:1: ( ( 'external' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7385:1: ( 'external' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7385:1: ( 'external' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7386:1: 'external'
+ {
+ before(grammarAccess.getExternalPortAccess().getExternalKeyword_0());
+ match(input,56,FOLLOW_56_in_rule__ExternalPort__Group__0__Impl15084);
+ after(grammarAccess.getExternalPortAccess().getExternalKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExternalPort__Group__0__Impl
+
+
+ // $ANTLR start rule__ExternalPort__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7399:1: rule__ExternalPort__Group__1 : rule__ExternalPort__Group__1__Impl rule__ExternalPort__Group__2 ;
+ public final void rule__ExternalPort__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7403:1: ( rule__ExternalPort__Group__1__Impl rule__ExternalPort__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7404:2: rule__ExternalPort__Group__1__Impl rule__ExternalPort__Group__2
+ {
+ pushFollow(FOLLOW_rule__ExternalPort__Group__1__Impl_in_rule__ExternalPort__Group__115115);
+ rule__ExternalPort__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ExternalPort__Group__2_in_rule__ExternalPort__Group__115118);
+ rule__ExternalPort__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExternalPort__Group__1
+
+
+ // $ANTLR start rule__ExternalPort__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7411:1: rule__ExternalPort__Group__1__Impl : ( 'Port' ) ;
+ public final void rule__ExternalPort__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7415:1: ( ( 'Port' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7416:1: ( 'Port' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7416:1: ( 'Port' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7417:1: 'Port'
+ {
+ before(grammarAccess.getExternalPortAccess().getPortKeyword_1());
+ match(input,55,FOLLOW_55_in_rule__ExternalPort__Group__1__Impl15146);
+ after(grammarAccess.getExternalPortAccess().getPortKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExternalPort__Group__1__Impl
+
+
+ // $ANTLR start rule__ExternalPort__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7430:1: rule__ExternalPort__Group__2 : rule__ExternalPort__Group__2__Impl ;
+ public final void rule__ExternalPort__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7434:1: ( rule__ExternalPort__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7435:2: rule__ExternalPort__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__ExternalPort__Group__2__Impl_in_rule__ExternalPort__Group__215177);
+ rule__ExternalPort__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExternalPort__Group__2
+
+
+ // $ANTLR start rule__ExternalPort__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7441:1: rule__ExternalPort__Group__2__Impl : ( ( rule__ExternalPort__IfportAssignment_2 ) ) ;
+ public final void rule__ExternalPort__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7445:1: ( ( ( rule__ExternalPort__IfportAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7446:1: ( ( rule__ExternalPort__IfportAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7446:1: ( ( rule__ExternalPort__IfportAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7447:1: ( rule__ExternalPort__IfportAssignment_2 )
+ {
+ before(grammarAccess.getExternalPortAccess().getIfportAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7448:1: ( rule__ExternalPort__IfportAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7448:2: rule__ExternalPort__IfportAssignment_2
+ {
+ pushFollow(FOLLOW_rule__ExternalPort__IfportAssignment_2_in_rule__ExternalPort__Group__2__Impl15204);
+ rule__ExternalPort__IfportAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getExternalPortAccess().getIfportAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExternalPort__Group__2__Impl
+
+
+ // $ANTLR start rule__SAPRef__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7464:1: rule__SAPRef__Group__0 : rule__SAPRef__Group__0__Impl rule__SAPRef__Group__1 ;
+ public final void rule__SAPRef__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7468:1: ( rule__SAPRef__Group__0__Impl rule__SAPRef__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7469:2: rule__SAPRef__Group__0__Impl rule__SAPRef__Group__1
+ {
+ pushFollow(FOLLOW_rule__SAPRef__Group__0__Impl_in_rule__SAPRef__Group__015240);
+ rule__SAPRef__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SAPRef__Group__1_in_rule__SAPRef__Group__015243);
+ rule__SAPRef__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__0
+
+
+ // $ANTLR start rule__SAPRef__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7476:1: rule__SAPRef__Group__0__Impl : ( 'SAP' ) ;
+ public final void rule__SAPRef__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7480:1: ( ( 'SAP' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7481:1: ( 'SAP' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7481:1: ( 'SAP' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7482:1: 'SAP'
+ {
+ before(grammarAccess.getSAPRefAccess().getSAPKeyword_0());
+ match(input,57,FOLLOW_57_in_rule__SAPRef__Group__0__Impl15271);
+ after(grammarAccess.getSAPRefAccess().getSAPKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__0__Impl
+
+
+ // $ANTLR start rule__SAPRef__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7495:1: rule__SAPRef__Group__1 : rule__SAPRef__Group__1__Impl rule__SAPRef__Group__2 ;
+ public final void rule__SAPRef__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7499:1: ( rule__SAPRef__Group__1__Impl rule__SAPRef__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7500:2: rule__SAPRef__Group__1__Impl rule__SAPRef__Group__2
+ {
+ pushFollow(FOLLOW_rule__SAPRef__Group__1__Impl_in_rule__SAPRef__Group__115302);
+ rule__SAPRef__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SAPRef__Group__2_in_rule__SAPRef__Group__115305);
+ rule__SAPRef__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__1
+
+
+ // $ANTLR start rule__SAPRef__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7507:1: rule__SAPRef__Group__1__Impl : ( ( rule__SAPRef__NameAssignment_1 ) ) ;
+ public final void rule__SAPRef__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7511:1: ( ( ( rule__SAPRef__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7512:1: ( ( rule__SAPRef__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7512:1: ( ( rule__SAPRef__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7513:1: ( rule__SAPRef__NameAssignment_1 )
+ {
+ before(grammarAccess.getSAPRefAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7514:1: ( rule__SAPRef__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7514:2: rule__SAPRef__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__SAPRef__NameAssignment_1_in_rule__SAPRef__Group__1__Impl15332);
+ rule__SAPRef__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSAPRefAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__1__Impl
+
+
+ // $ANTLR start rule__SAPRef__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7524:1: rule__SAPRef__Group__2 : rule__SAPRef__Group__2__Impl rule__SAPRef__Group__3 ;
+ public final void rule__SAPRef__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7528:1: ( rule__SAPRef__Group__2__Impl rule__SAPRef__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7529:2: rule__SAPRef__Group__2__Impl rule__SAPRef__Group__3
+ {
+ pushFollow(FOLLOW_rule__SAPRef__Group__2__Impl_in_rule__SAPRef__Group__215362);
+ rule__SAPRef__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SAPRef__Group__3_in_rule__SAPRef__Group__215365);
+ rule__SAPRef__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__2
+
+
+ // $ANTLR start rule__SAPRef__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7536:1: rule__SAPRef__Group__2__Impl : ( ':' ) ;
+ public final void rule__SAPRef__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7540:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7541:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7541:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7542:1: ':'
+ {
+ before(grammarAccess.getSAPRefAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__SAPRef__Group__2__Impl15393);
+ after(grammarAccess.getSAPRefAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__2__Impl
+
+
+ // $ANTLR start rule__SAPRef__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7555:1: rule__SAPRef__Group__3 : rule__SAPRef__Group__3__Impl ;
+ public final void rule__SAPRef__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7559:1: ( rule__SAPRef__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7560:2: rule__SAPRef__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__SAPRef__Group__3__Impl_in_rule__SAPRef__Group__315424);
+ rule__SAPRef__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__3
+
+
+ // $ANTLR start rule__SAPRef__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7566:1: rule__SAPRef__Group__3__Impl : ( ( rule__SAPRef__ProtocolAssignment_3 ) ) ;
+ public final void rule__SAPRef__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7570:1: ( ( ( rule__SAPRef__ProtocolAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7571:1: ( ( rule__SAPRef__ProtocolAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7571:1: ( ( rule__SAPRef__ProtocolAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7572:1: ( rule__SAPRef__ProtocolAssignment_3 )
+ {
+ before(grammarAccess.getSAPRefAccess().getProtocolAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7573:1: ( rule__SAPRef__ProtocolAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7573:2: rule__SAPRef__ProtocolAssignment_3
+ {
+ pushFollow(FOLLOW_rule__SAPRef__ProtocolAssignment_3_in_rule__SAPRef__Group__3__Impl15451);
+ rule__SAPRef__ProtocolAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSAPRefAccess().getProtocolAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__Group__3__Impl
+
+
+ // $ANTLR start rule__SPPRef__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7591:1: rule__SPPRef__Group__0 : rule__SPPRef__Group__0__Impl rule__SPPRef__Group__1 ;
+ public final void rule__SPPRef__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7595:1: ( rule__SPPRef__Group__0__Impl rule__SPPRef__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7596:2: rule__SPPRef__Group__0__Impl rule__SPPRef__Group__1
+ {
+ pushFollow(FOLLOW_rule__SPPRef__Group__0__Impl_in_rule__SPPRef__Group__015489);
+ rule__SPPRef__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SPPRef__Group__1_in_rule__SPPRef__Group__015492);
+ rule__SPPRef__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__0
+
+
+ // $ANTLR start rule__SPPRef__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7603:1: rule__SPPRef__Group__0__Impl : ( 'SPP' ) ;
+ public final void rule__SPPRef__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7607:1: ( ( 'SPP' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7608:1: ( 'SPP' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7608:1: ( 'SPP' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7609:1: 'SPP'
+ {
+ before(grammarAccess.getSPPRefAccess().getSPPKeyword_0());
+ match(input,58,FOLLOW_58_in_rule__SPPRef__Group__0__Impl15520);
+ after(grammarAccess.getSPPRefAccess().getSPPKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__0__Impl
+
+
+ // $ANTLR start rule__SPPRef__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7622:1: rule__SPPRef__Group__1 : rule__SPPRef__Group__1__Impl rule__SPPRef__Group__2 ;
+ public final void rule__SPPRef__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7626:1: ( rule__SPPRef__Group__1__Impl rule__SPPRef__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7627:2: rule__SPPRef__Group__1__Impl rule__SPPRef__Group__2
+ {
+ pushFollow(FOLLOW_rule__SPPRef__Group__1__Impl_in_rule__SPPRef__Group__115551);
+ rule__SPPRef__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SPPRef__Group__2_in_rule__SPPRef__Group__115554);
+ rule__SPPRef__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__1
+
+
+ // $ANTLR start rule__SPPRef__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7634:1: rule__SPPRef__Group__1__Impl : ( ( rule__SPPRef__NameAssignment_1 ) ) ;
+ public final void rule__SPPRef__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7638:1: ( ( ( rule__SPPRef__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7639:1: ( ( rule__SPPRef__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7639:1: ( ( rule__SPPRef__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7640:1: ( rule__SPPRef__NameAssignment_1 )
+ {
+ before(grammarAccess.getSPPRefAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7641:1: ( rule__SPPRef__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7641:2: rule__SPPRef__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__SPPRef__NameAssignment_1_in_rule__SPPRef__Group__1__Impl15581);
+ rule__SPPRef__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSPPRefAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__1__Impl
+
+
+ // $ANTLR start rule__SPPRef__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7651:1: rule__SPPRef__Group__2 : rule__SPPRef__Group__2__Impl rule__SPPRef__Group__3 ;
+ public final void rule__SPPRef__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7655:1: ( rule__SPPRef__Group__2__Impl rule__SPPRef__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7656:2: rule__SPPRef__Group__2__Impl rule__SPPRef__Group__3
+ {
+ pushFollow(FOLLOW_rule__SPPRef__Group__2__Impl_in_rule__SPPRef__Group__215611);
+ rule__SPPRef__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SPPRef__Group__3_in_rule__SPPRef__Group__215614);
+ rule__SPPRef__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__2
+
+
+ // $ANTLR start rule__SPPRef__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7663:1: rule__SPPRef__Group__2__Impl : ( ':' ) ;
+ public final void rule__SPPRef__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7667:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7668:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7668:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7669:1: ':'
+ {
+ before(grammarAccess.getSPPRefAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__SPPRef__Group__2__Impl15642);
+ after(grammarAccess.getSPPRefAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__2__Impl
+
+
+ // $ANTLR start rule__SPPRef__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7682:1: rule__SPPRef__Group__3 : rule__SPPRef__Group__3__Impl ;
+ public final void rule__SPPRef__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7686:1: ( rule__SPPRef__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7687:2: rule__SPPRef__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__SPPRef__Group__3__Impl_in_rule__SPPRef__Group__315673);
+ rule__SPPRef__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__3
+
+
+ // $ANTLR start rule__SPPRef__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7693:1: rule__SPPRef__Group__3__Impl : ( ( rule__SPPRef__ProtocolAssignment_3 ) ) ;
+ public final void rule__SPPRef__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7697:1: ( ( ( rule__SPPRef__ProtocolAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7698:1: ( ( rule__SPPRef__ProtocolAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7698:1: ( ( rule__SPPRef__ProtocolAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7699:1: ( rule__SPPRef__ProtocolAssignment_3 )
+ {
+ before(grammarAccess.getSPPRefAccess().getProtocolAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7700:1: ( rule__SPPRef__ProtocolAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7700:2: rule__SPPRef__ProtocolAssignment_3
+ {
+ pushFollow(FOLLOW_rule__SPPRef__ProtocolAssignment_3_in_rule__SPPRef__Group__3__Impl15700);
+ rule__SPPRef__ProtocolAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSPPRefAccess().getProtocolAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__Group__3__Impl
+
+
+ // $ANTLR start rule__ServiceImplementation__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7718:1: rule__ServiceImplementation__Group__0 : rule__ServiceImplementation__Group__0__Impl rule__ServiceImplementation__Group__1 ;
+ public final void rule__ServiceImplementation__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7722:1: ( rule__ServiceImplementation__Group__0__Impl rule__ServiceImplementation__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7723:2: rule__ServiceImplementation__Group__0__Impl rule__ServiceImplementation__Group__1
+ {
+ pushFollow(FOLLOW_rule__ServiceImplementation__Group__0__Impl_in_rule__ServiceImplementation__Group__015738);
+ rule__ServiceImplementation__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ServiceImplementation__Group__1_in_rule__ServiceImplementation__Group__015741);
+ rule__ServiceImplementation__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ServiceImplementation__Group__0
+
+
+ // $ANTLR start rule__ServiceImplementation__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7730:1: rule__ServiceImplementation__Group__0__Impl : ( 'ServiceImplementation' ) ;
+ public final void rule__ServiceImplementation__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7734:1: ( ( 'ServiceImplementation' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7735:1: ( 'ServiceImplementation' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7735:1: ( 'ServiceImplementation' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7736:1: 'ServiceImplementation'
+ {
+ before(grammarAccess.getServiceImplementationAccess().getServiceImplementationKeyword_0());
+ match(input,59,FOLLOW_59_in_rule__ServiceImplementation__Group__0__Impl15769);
+ after(grammarAccess.getServiceImplementationAccess().getServiceImplementationKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ServiceImplementation__Group__0__Impl
+
+
+ // $ANTLR start rule__ServiceImplementation__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7749:1: rule__ServiceImplementation__Group__1 : rule__ServiceImplementation__Group__1__Impl rule__ServiceImplementation__Group__2 ;
+ public final void rule__ServiceImplementation__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7753:1: ( rule__ServiceImplementation__Group__1__Impl rule__ServiceImplementation__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7754:2: rule__ServiceImplementation__Group__1__Impl rule__ServiceImplementation__Group__2
+ {
+ pushFollow(FOLLOW_rule__ServiceImplementation__Group__1__Impl_in_rule__ServiceImplementation__Group__115800);
+ rule__ServiceImplementation__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ServiceImplementation__Group__2_in_rule__ServiceImplementation__Group__115803);
+ rule__ServiceImplementation__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ServiceImplementation__Group__1
+
+
+ // $ANTLR start rule__ServiceImplementation__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7761:1: rule__ServiceImplementation__Group__1__Impl : ( 'of' ) ;
+ public final void rule__ServiceImplementation__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7765:1: ( ( 'of' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7766:1: ( 'of' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7766:1: ( 'of' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7767:1: 'of'
+ {
+ before(grammarAccess.getServiceImplementationAccess().getOfKeyword_1());
+ match(input,60,FOLLOW_60_in_rule__ServiceImplementation__Group__1__Impl15831);
+ after(grammarAccess.getServiceImplementationAccess().getOfKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ServiceImplementation__Group__1__Impl
+
+
+ // $ANTLR start rule__ServiceImplementation__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7780:1: rule__ServiceImplementation__Group__2 : rule__ServiceImplementation__Group__2__Impl ;
+ public final void rule__ServiceImplementation__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7784:1: ( rule__ServiceImplementation__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7785:2: rule__ServiceImplementation__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__ServiceImplementation__Group__2__Impl_in_rule__ServiceImplementation__Group__215862);
+ rule__ServiceImplementation__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ServiceImplementation__Group__2
+
+
+ // $ANTLR start rule__ServiceImplementation__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7791:1: rule__ServiceImplementation__Group__2__Impl : ( ( rule__ServiceImplementation__SppAssignment_2 ) ) ;
+ public final void rule__ServiceImplementation__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7795:1: ( ( ( rule__ServiceImplementation__SppAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7796:1: ( ( rule__ServiceImplementation__SppAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7796:1: ( ( rule__ServiceImplementation__SppAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7797:1: ( rule__ServiceImplementation__SppAssignment_2 )
+ {
+ before(grammarAccess.getServiceImplementationAccess().getSppAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7798:1: ( rule__ServiceImplementation__SppAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7798:2: rule__ServiceImplementation__SppAssignment_2
+ {
+ pushFollow(FOLLOW_rule__ServiceImplementation__SppAssignment_2_in_rule__ServiceImplementation__Group__2__Impl15889);
+ rule__ServiceImplementation__SppAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getServiceImplementationAccess().getSppAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ServiceImplementation__Group__2__Impl
+
+
+ // $ANTLR start rule__LogicalSystem__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7814:1: rule__LogicalSystem__Group__0 : rule__LogicalSystem__Group__0__Impl rule__LogicalSystem__Group__1 ;
+ public final void rule__LogicalSystem__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7818:1: ( rule__LogicalSystem__Group__0__Impl rule__LogicalSystem__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7819:2: rule__LogicalSystem__Group__0__Impl rule__LogicalSystem__Group__1
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__0__Impl_in_rule__LogicalSystem__Group__015925);
+ rule__LogicalSystem__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__1_in_rule__LogicalSystem__Group__015928);
+ rule__LogicalSystem__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__0
+
+
+ // $ANTLR start rule__LogicalSystem__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7826:1: rule__LogicalSystem__Group__0__Impl : ( 'LogicalSystem' ) ;
+ public final void rule__LogicalSystem__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7830:1: ( ( 'LogicalSystem' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7831:1: ( 'LogicalSystem' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7831:1: ( 'LogicalSystem' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7832:1: 'LogicalSystem'
+ {
+ before(grammarAccess.getLogicalSystemAccess().getLogicalSystemKeyword_0());
+ match(input,61,FOLLOW_61_in_rule__LogicalSystem__Group__0__Impl15956);
+ after(grammarAccess.getLogicalSystemAccess().getLogicalSystemKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__0__Impl
+
+
+ // $ANTLR start rule__LogicalSystem__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7845:1: rule__LogicalSystem__Group__1 : rule__LogicalSystem__Group__1__Impl rule__LogicalSystem__Group__2 ;
+ public final void rule__LogicalSystem__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7849:1: ( rule__LogicalSystem__Group__1__Impl rule__LogicalSystem__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7850:2: rule__LogicalSystem__Group__1__Impl rule__LogicalSystem__Group__2
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__1__Impl_in_rule__LogicalSystem__Group__115987);
+ rule__LogicalSystem__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__2_in_rule__LogicalSystem__Group__115990);
+ rule__LogicalSystem__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__1
+
+
+ // $ANTLR start rule__LogicalSystem__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7857:1: rule__LogicalSystem__Group__1__Impl : ( ( rule__LogicalSystem__NameAssignment_1 ) ) ;
+ public final void rule__LogicalSystem__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7861:1: ( ( ( rule__LogicalSystem__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7862:1: ( ( rule__LogicalSystem__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7862:1: ( ( rule__LogicalSystem__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7863:1: ( rule__LogicalSystem__NameAssignment_1 )
+ {
+ before(grammarAccess.getLogicalSystemAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7864:1: ( rule__LogicalSystem__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7864:2: rule__LogicalSystem__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__NameAssignment_1_in_rule__LogicalSystem__Group__1__Impl16017);
+ rule__LogicalSystem__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLogicalSystemAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__1__Impl
+
+
+ // $ANTLR start rule__LogicalSystem__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7874:1: rule__LogicalSystem__Group__2 : rule__LogicalSystem__Group__2__Impl rule__LogicalSystem__Group__3 ;
+ public final void rule__LogicalSystem__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7878:1: ( rule__LogicalSystem__Group__2__Impl rule__LogicalSystem__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7879:2: rule__LogicalSystem__Group__2__Impl rule__LogicalSystem__Group__3
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__2__Impl_in_rule__LogicalSystem__Group__216047);
+ rule__LogicalSystem__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__3_in_rule__LogicalSystem__Group__216050);
+ rule__LogicalSystem__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__2
+
+
+ // $ANTLR start rule__LogicalSystem__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7886:1: rule__LogicalSystem__Group__2__Impl : ( '{' ) ;
+ public final void rule__LogicalSystem__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7890:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7891:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7891:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7892:1: '{'
+ {
+ before(grammarAccess.getLogicalSystemAccess().getLeftCurlyBracketKeyword_2());
+ match(input,24,FOLLOW_24_in_rule__LogicalSystem__Group__2__Impl16078);
+ after(grammarAccess.getLogicalSystemAccess().getLeftCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__2__Impl
+
+
+ // $ANTLR start rule__LogicalSystem__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7905:1: rule__LogicalSystem__Group__3 : rule__LogicalSystem__Group__3__Impl rule__LogicalSystem__Group__4 ;
+ public final void rule__LogicalSystem__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7909:1: ( rule__LogicalSystem__Group__3__Impl rule__LogicalSystem__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7910:2: rule__LogicalSystem__Group__3__Impl rule__LogicalSystem__Group__4
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__3__Impl_in_rule__LogicalSystem__Group__316109);
+ rule__LogicalSystem__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__4_in_rule__LogicalSystem__Group__316112);
+ rule__LogicalSystem__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__3
+
+
+ // $ANTLR start rule__LogicalSystem__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7917:1: rule__LogicalSystem__Group__3__Impl : ( ( ( rule__LogicalSystem__SubSystemsAssignment_3 ) ) ( ( rule__LogicalSystem__SubSystemsAssignment_3 )* ) ) ;
+ public final void rule__LogicalSystem__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7921:1: ( ( ( ( rule__LogicalSystem__SubSystemsAssignment_3 ) ) ( ( rule__LogicalSystem__SubSystemsAssignment_3 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7922:1: ( ( ( rule__LogicalSystem__SubSystemsAssignment_3 ) ) ( ( rule__LogicalSystem__SubSystemsAssignment_3 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7922:1: ( ( ( rule__LogicalSystem__SubSystemsAssignment_3 ) ) ( ( rule__LogicalSystem__SubSystemsAssignment_3 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7923:1: ( ( rule__LogicalSystem__SubSystemsAssignment_3 ) ) ( ( rule__LogicalSystem__SubSystemsAssignment_3 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7923:1: ( ( rule__LogicalSystem__SubSystemsAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7924:1: ( rule__LogicalSystem__SubSystemsAssignment_3 )
+ {
+ before(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7925:1: ( rule__LogicalSystem__SubSystemsAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7925:2: rule__LogicalSystem__SubSystemsAssignment_3
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__SubSystemsAssignment_3_in_rule__LogicalSystem__Group__3__Impl16141);
+ rule__LogicalSystem__SubSystemsAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7928:1: ( ( rule__LogicalSystem__SubSystemsAssignment_3 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7929:1: ( rule__LogicalSystem__SubSystemsAssignment_3 )*
+ {
+ before(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7930:1: ( rule__LogicalSystem__SubSystemsAssignment_3 )*
+ loop64:
+ do {
+ int alt64=2;
+ int LA64_0 = input.LA(1);
+
+ if ( (LA64_0==62) ) {
+ alt64=1;
+ }
+
+
+ switch (alt64) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7930:2: rule__LogicalSystem__SubSystemsAssignment_3
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__SubSystemsAssignment_3_in_rule__LogicalSystem__Group__3__Impl16153);
+ rule__LogicalSystem__SubSystemsAssignment_3();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop64;
+ }
+ } while (true);
+
+ after(grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__3__Impl
+
+
+ // $ANTLR start rule__LogicalSystem__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7941:1: rule__LogicalSystem__Group__4 : rule__LogicalSystem__Group__4__Impl rule__LogicalSystem__Group__5 ;
+ public final void rule__LogicalSystem__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7945:1: ( rule__LogicalSystem__Group__4__Impl rule__LogicalSystem__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7946:2: rule__LogicalSystem__Group__4__Impl rule__LogicalSystem__Group__5
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__4__Impl_in_rule__LogicalSystem__Group__416186);
+ rule__LogicalSystem__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__5_in_rule__LogicalSystem__Group__416189);
+ rule__LogicalSystem__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__4
+
+
+ // $ANTLR start rule__LogicalSystem__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7953:1: rule__LogicalSystem__Group__4__Impl : ( ( rule__LogicalSystem__BindingsAssignment_4 )* ) ;
+ public final void rule__LogicalSystem__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7957:1: ( ( ( rule__LogicalSystem__BindingsAssignment_4 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7958:1: ( ( rule__LogicalSystem__BindingsAssignment_4 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7958:1: ( ( rule__LogicalSystem__BindingsAssignment_4 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7959:1: ( rule__LogicalSystem__BindingsAssignment_4 )*
+ {
+ before(grammarAccess.getLogicalSystemAccess().getBindingsAssignment_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7960:1: ( rule__LogicalSystem__BindingsAssignment_4 )*
+ loop65:
+ do {
+ int alt65=2;
+ int LA65_0 = input.LA(1);
+
+ if ( (LA65_0==66) ) {
+ alt65=1;
+ }
+
+
+ switch (alt65) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7960:2: rule__LogicalSystem__BindingsAssignment_4
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__BindingsAssignment_4_in_rule__LogicalSystem__Group__4__Impl16216);
+ rule__LogicalSystem__BindingsAssignment_4();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop65;
+ }
+ } while (true);
+
+ after(grammarAccess.getLogicalSystemAccess().getBindingsAssignment_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__4__Impl
+
+
+ // $ANTLR start rule__LogicalSystem__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7970:1: rule__LogicalSystem__Group__5 : rule__LogicalSystem__Group__5__Impl rule__LogicalSystem__Group__6 ;
+ public final void rule__LogicalSystem__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7974:1: ( rule__LogicalSystem__Group__5__Impl rule__LogicalSystem__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7975:2: rule__LogicalSystem__Group__5__Impl rule__LogicalSystem__Group__6
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__5__Impl_in_rule__LogicalSystem__Group__516247);
+ rule__LogicalSystem__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__6_in_rule__LogicalSystem__Group__516250);
+ rule__LogicalSystem__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__5
+
+
+ // $ANTLR start rule__LogicalSystem__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7982:1: rule__LogicalSystem__Group__5__Impl : ( ( rule__LogicalSystem__ConnectionsAssignment_5 )* ) ;
+ public final void rule__LogicalSystem__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7986:1: ( ( ( rule__LogicalSystem__ConnectionsAssignment_5 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7987:1: ( ( rule__LogicalSystem__ConnectionsAssignment_5 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7987:1: ( ( rule__LogicalSystem__ConnectionsAssignment_5 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7988:1: ( rule__LogicalSystem__ConnectionsAssignment_5 )*
+ {
+ before(grammarAccess.getLogicalSystemAccess().getConnectionsAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7989:1: ( rule__LogicalSystem__ConnectionsAssignment_5 )*
+ loop66:
+ do {
+ int alt66=2;
+ int LA66_0 = input.LA(1);
+
+ if ( (LA66_0==68) ) {
+ alt66=1;
+ }
+
+
+ switch (alt66) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7989:2: rule__LogicalSystem__ConnectionsAssignment_5
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__ConnectionsAssignment_5_in_rule__LogicalSystem__Group__5__Impl16277);
+ rule__LogicalSystem__ConnectionsAssignment_5();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop66;
+ }
+ } while (true);
+
+ after(grammarAccess.getLogicalSystemAccess().getConnectionsAssignment_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__5__Impl
+
+
+ // $ANTLR start rule__LogicalSystem__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:7999:1: rule__LogicalSystem__Group__6 : rule__LogicalSystem__Group__6__Impl ;
+ public final void rule__LogicalSystem__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8003:1: ( rule__LogicalSystem__Group__6__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8004:2: rule__LogicalSystem__Group__6__Impl
+ {
+ pushFollow(FOLLOW_rule__LogicalSystem__Group__6__Impl_in_rule__LogicalSystem__Group__616308);
+ rule__LogicalSystem__Group__6__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__6
+
+
+ // $ANTLR start rule__LogicalSystem__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8010:1: rule__LogicalSystem__Group__6__Impl : ( '}' ) ;
+ public final void rule__LogicalSystem__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8014:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8015:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8015:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8016:1: '}'
+ {
+ before(grammarAccess.getLogicalSystemAccess().getRightCurlyBracketKeyword_6());
+ match(input,25,FOLLOW_25_in_rule__LogicalSystem__Group__6__Impl16336);
+ after(grammarAccess.getLogicalSystemAccess().getRightCurlyBracketKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__Group__6__Impl
+
+
+ // $ANTLR start rule__SubSystemRef__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8043:1: rule__SubSystemRef__Group__0 : rule__SubSystemRef__Group__0__Impl rule__SubSystemRef__Group__1 ;
+ public final void rule__SubSystemRef__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8047:1: ( rule__SubSystemRef__Group__0__Impl rule__SubSystemRef__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8048:2: rule__SubSystemRef__Group__0__Impl rule__SubSystemRef__Group__1
+ {
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__0__Impl_in_rule__SubSystemRef__Group__016381);
+ rule__SubSystemRef__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__1_in_rule__SubSystemRef__Group__016384);
+ rule__SubSystemRef__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__0
+
+
+ // $ANTLR start rule__SubSystemRef__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8055:1: rule__SubSystemRef__Group__0__Impl : ( 'SubSystemRef' ) ;
+ public final void rule__SubSystemRef__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8059:1: ( ( 'SubSystemRef' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8060:1: ( 'SubSystemRef' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8060:1: ( 'SubSystemRef' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8061:1: 'SubSystemRef'
+ {
+ before(grammarAccess.getSubSystemRefAccess().getSubSystemRefKeyword_0());
+ match(input,62,FOLLOW_62_in_rule__SubSystemRef__Group__0__Impl16412);
+ after(grammarAccess.getSubSystemRefAccess().getSubSystemRefKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__0__Impl
+
+
+ // $ANTLR start rule__SubSystemRef__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8074:1: rule__SubSystemRef__Group__1 : rule__SubSystemRef__Group__1__Impl rule__SubSystemRef__Group__2 ;
+ public final void rule__SubSystemRef__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8078:1: ( rule__SubSystemRef__Group__1__Impl rule__SubSystemRef__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8079:2: rule__SubSystemRef__Group__1__Impl rule__SubSystemRef__Group__2
+ {
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__1__Impl_in_rule__SubSystemRef__Group__116443);
+ rule__SubSystemRef__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__2_in_rule__SubSystemRef__Group__116446);
+ rule__SubSystemRef__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__1
+
+
+ // $ANTLR start rule__SubSystemRef__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8086:1: rule__SubSystemRef__Group__1__Impl : ( ( rule__SubSystemRef__NameAssignment_1 ) ) ;
+ public final void rule__SubSystemRef__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8090:1: ( ( ( rule__SubSystemRef__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8091:1: ( ( rule__SubSystemRef__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8091:1: ( ( rule__SubSystemRef__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8092:1: ( rule__SubSystemRef__NameAssignment_1 )
+ {
+ before(grammarAccess.getSubSystemRefAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8093:1: ( rule__SubSystemRef__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8093:2: rule__SubSystemRef__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__SubSystemRef__NameAssignment_1_in_rule__SubSystemRef__Group__1__Impl16473);
+ rule__SubSystemRef__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubSystemRefAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__1__Impl
+
+
+ // $ANTLR start rule__SubSystemRef__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8103:1: rule__SubSystemRef__Group__2 : rule__SubSystemRef__Group__2__Impl rule__SubSystemRef__Group__3 ;
+ public final void rule__SubSystemRef__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8107:1: ( rule__SubSystemRef__Group__2__Impl rule__SubSystemRef__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8108:2: rule__SubSystemRef__Group__2__Impl rule__SubSystemRef__Group__3
+ {
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__2__Impl_in_rule__SubSystemRef__Group__216503);
+ rule__SubSystemRef__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__3_in_rule__SubSystemRef__Group__216506);
+ rule__SubSystemRef__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__2
+
+
+ // $ANTLR start rule__SubSystemRef__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8115:1: rule__SubSystemRef__Group__2__Impl : ( ':' ) ;
+ public final void rule__SubSystemRef__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8119:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8120:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8120:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8121:1: ':'
+ {
+ before(grammarAccess.getSubSystemRefAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__SubSystemRef__Group__2__Impl16534);
+ after(grammarAccess.getSubSystemRefAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__2__Impl
+
+
+ // $ANTLR start rule__SubSystemRef__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8134:1: rule__SubSystemRef__Group__3 : rule__SubSystemRef__Group__3__Impl ;
+ public final void rule__SubSystemRef__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8138:1: ( rule__SubSystemRef__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8139:2: rule__SubSystemRef__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__SubSystemRef__Group__3__Impl_in_rule__SubSystemRef__Group__316565);
+ rule__SubSystemRef__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__3
+
+
+ // $ANTLR start rule__SubSystemRef__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8145:1: rule__SubSystemRef__Group__3__Impl : ( ( rule__SubSystemRef__TypeAssignment_3 ) ) ;
+ public final void rule__SubSystemRef__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8149:1: ( ( ( rule__SubSystemRef__TypeAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8150:1: ( ( rule__SubSystemRef__TypeAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8150:1: ( ( rule__SubSystemRef__TypeAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8151:1: ( rule__SubSystemRef__TypeAssignment_3 )
+ {
+ before(grammarAccess.getSubSystemRefAccess().getTypeAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8152:1: ( rule__SubSystemRef__TypeAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8152:2: rule__SubSystemRef__TypeAssignment_3
+ {
+ pushFollow(FOLLOW_rule__SubSystemRef__TypeAssignment_3_in_rule__SubSystemRef__Group__3__Impl16592);
+ rule__SubSystemRef__TypeAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubSystemRefAccess().getTypeAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__Group__3__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8170:1: rule__SubSystemClass__Group__0 : rule__SubSystemClass__Group__0__Impl rule__SubSystemClass__Group__1 ;
+ public final void rule__SubSystemClass__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8174:1: ( rule__SubSystemClass__Group__0__Impl rule__SubSystemClass__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8175:2: rule__SubSystemClass__Group__0__Impl rule__SubSystemClass__Group__1
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__0__Impl_in_rule__SubSystemClass__Group__016630);
+ rule__SubSystemClass__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__1_in_rule__SubSystemClass__Group__016633);
+ rule__SubSystemClass__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__0
+
+
+ // $ANTLR start rule__SubSystemClass__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8182:1: rule__SubSystemClass__Group__0__Impl : ( 'SubSystemClass' ) ;
+ public final void rule__SubSystemClass__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8186:1: ( ( 'SubSystemClass' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8187:1: ( 'SubSystemClass' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8187:1: ( 'SubSystemClass' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8188:1: 'SubSystemClass'
+ {
+ before(grammarAccess.getSubSystemClassAccess().getSubSystemClassKeyword_0());
+ match(input,63,FOLLOW_63_in_rule__SubSystemClass__Group__0__Impl16661);
+ after(grammarAccess.getSubSystemClassAccess().getSubSystemClassKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__0__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8201:1: rule__SubSystemClass__Group__1 : rule__SubSystemClass__Group__1__Impl rule__SubSystemClass__Group__2 ;
+ public final void rule__SubSystemClass__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8205:1: ( rule__SubSystemClass__Group__1__Impl rule__SubSystemClass__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8206:2: rule__SubSystemClass__Group__1__Impl rule__SubSystemClass__Group__2
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__1__Impl_in_rule__SubSystemClass__Group__116692);
+ rule__SubSystemClass__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__2_in_rule__SubSystemClass__Group__116695);
+ rule__SubSystemClass__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__1
+
+
+ // $ANTLR start rule__SubSystemClass__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8213:1: rule__SubSystemClass__Group__1__Impl : ( ( rule__SubSystemClass__NameAssignment_1 ) ) ;
+ public final void rule__SubSystemClass__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8217:1: ( ( ( rule__SubSystemClass__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8218:1: ( ( rule__SubSystemClass__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8218:1: ( ( rule__SubSystemClass__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8219:1: ( rule__SubSystemClass__NameAssignment_1 )
+ {
+ before(grammarAccess.getSubSystemClassAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8220:1: ( rule__SubSystemClass__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8220:2: rule__SubSystemClass__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__NameAssignment_1_in_rule__SubSystemClass__Group__1__Impl16722);
+ rule__SubSystemClass__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubSystemClassAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__1__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8230:1: rule__SubSystemClass__Group__2 : rule__SubSystemClass__Group__2__Impl rule__SubSystemClass__Group__3 ;
+ public final void rule__SubSystemClass__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8234:1: ( rule__SubSystemClass__Group__2__Impl rule__SubSystemClass__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8235:2: rule__SubSystemClass__Group__2__Impl rule__SubSystemClass__Group__3
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__2__Impl_in_rule__SubSystemClass__Group__216752);
+ rule__SubSystemClass__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__3_in_rule__SubSystemClass__Group__216755);
+ rule__SubSystemClass__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__2
+
+
+ // $ANTLR start rule__SubSystemClass__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8242:1: rule__SubSystemClass__Group__2__Impl : ( '{' ) ;
+ public final void rule__SubSystemClass__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8246:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8247:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8247:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8248:1: '{'
+ {
+ before(grammarAccess.getSubSystemClassAccess().getLeftCurlyBracketKeyword_2());
+ match(input,24,FOLLOW_24_in_rule__SubSystemClass__Group__2__Impl16783);
+ after(grammarAccess.getSubSystemClassAccess().getLeftCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__2__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8261:1: rule__SubSystemClass__Group__3 : rule__SubSystemClass__Group__3__Impl rule__SubSystemClass__Group__4 ;
+ public final void rule__SubSystemClass__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8265:1: ( rule__SubSystemClass__Group__3__Impl rule__SubSystemClass__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8266:2: rule__SubSystemClass__Group__3__Impl rule__SubSystemClass__Group__4
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__3__Impl_in_rule__SubSystemClass__Group__316814);
+ rule__SubSystemClass__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__4_in_rule__SubSystemClass__Group__316817);
+ rule__SubSystemClass__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__3
+
+
+ // $ANTLR start rule__SubSystemClass__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8273:1: rule__SubSystemClass__Group__3__Impl : ( ( rule__SubSystemClass__RelayPortsAssignment_3 )* ) ;
+ public final void rule__SubSystemClass__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8277:1: ( ( ( rule__SubSystemClass__RelayPortsAssignment_3 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8278:1: ( ( rule__SubSystemClass__RelayPortsAssignment_3 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8278:1: ( ( rule__SubSystemClass__RelayPortsAssignment_3 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8279:1: ( rule__SubSystemClass__RelayPortsAssignment_3 )*
+ {
+ before(grammarAccess.getSubSystemClassAccess().getRelayPortsAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8280:1: ( rule__SubSystemClass__RelayPortsAssignment_3 )*
+ loop67:
+ do {
+ int alt67=2;
+ int LA67_0 = input.LA(1);
+
+ if ( (LA67_0==55||LA67_0==98) ) {
+ alt67=1;
+ }
+
+
+ switch (alt67) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8280:2: rule__SubSystemClass__RelayPortsAssignment_3
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__RelayPortsAssignment_3_in_rule__SubSystemClass__Group__3__Impl16844);
+ rule__SubSystemClass__RelayPortsAssignment_3();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop67;
+ }
+ } while (true);
+
+ after(grammarAccess.getSubSystemClassAccess().getRelayPortsAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__3__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8290:1: rule__SubSystemClass__Group__4 : rule__SubSystemClass__Group__4__Impl rule__SubSystemClass__Group__5 ;
+ public final void rule__SubSystemClass__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8294:1: ( rule__SubSystemClass__Group__4__Impl rule__SubSystemClass__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8295:2: rule__SubSystemClass__Group__4__Impl rule__SubSystemClass__Group__5
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__4__Impl_in_rule__SubSystemClass__Group__416875);
+ rule__SubSystemClass__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__5_in_rule__SubSystemClass__Group__416878);
+ rule__SubSystemClass__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__4
+
+
+ // $ANTLR start rule__SubSystemClass__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8302:1: rule__SubSystemClass__Group__4__Impl : ( ( rule__SubSystemClass__IfSPPsAssignment_4 )* ) ;
+ public final void rule__SubSystemClass__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8306:1: ( ( ( rule__SubSystemClass__IfSPPsAssignment_4 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8307:1: ( ( rule__SubSystemClass__IfSPPsAssignment_4 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8307:1: ( ( rule__SubSystemClass__IfSPPsAssignment_4 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8308:1: ( rule__SubSystemClass__IfSPPsAssignment_4 )*
+ {
+ before(grammarAccess.getSubSystemClassAccess().getIfSPPsAssignment_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8309:1: ( rule__SubSystemClass__IfSPPsAssignment_4 )*
+ loop68:
+ do {
+ int alt68=2;
+ int LA68_0 = input.LA(1);
+
+ if ( (LA68_0==58) ) {
+ alt68=1;
+ }
+
+
+ switch (alt68) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8309:2: rule__SubSystemClass__IfSPPsAssignment_4
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__IfSPPsAssignment_4_in_rule__SubSystemClass__Group__4__Impl16905);
+ rule__SubSystemClass__IfSPPsAssignment_4();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop68;
+ }
+ } while (true);
+
+ after(grammarAccess.getSubSystemClassAccess().getIfSPPsAssignment_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__4__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8319:1: rule__SubSystemClass__Group__5 : rule__SubSystemClass__Group__5__Impl rule__SubSystemClass__Group__6 ;
+ public final void rule__SubSystemClass__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8323:1: ( rule__SubSystemClass__Group__5__Impl rule__SubSystemClass__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8324:2: rule__SubSystemClass__Group__5__Impl rule__SubSystemClass__Group__6
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__5__Impl_in_rule__SubSystemClass__Group__516936);
+ rule__SubSystemClass__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__6_in_rule__SubSystemClass__Group__516939);
+ rule__SubSystemClass__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__5
+
+
+ // $ANTLR start rule__SubSystemClass__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8331:1: rule__SubSystemClass__Group__5__Impl : ( ( ( rule__SubSystemClass__ActorRefsAssignment_5 ) ) ( ( rule__SubSystemClass__ActorRefsAssignment_5 )* ) ) ;
+ public final void rule__SubSystemClass__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8335:1: ( ( ( ( rule__SubSystemClass__ActorRefsAssignment_5 ) ) ( ( rule__SubSystemClass__ActorRefsAssignment_5 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8336:1: ( ( ( rule__SubSystemClass__ActorRefsAssignment_5 ) ) ( ( rule__SubSystemClass__ActorRefsAssignment_5 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8336:1: ( ( ( rule__SubSystemClass__ActorRefsAssignment_5 ) ) ( ( rule__SubSystemClass__ActorRefsAssignment_5 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8337:1: ( ( rule__SubSystemClass__ActorRefsAssignment_5 ) ) ( ( rule__SubSystemClass__ActorRefsAssignment_5 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8337:1: ( ( rule__SubSystemClass__ActorRefsAssignment_5 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8338:1: ( rule__SubSystemClass__ActorRefsAssignment_5 )
+ {
+ before(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8339:1: ( rule__SubSystemClass__ActorRefsAssignment_5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8339:2: rule__SubSystemClass__ActorRefsAssignment_5
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__ActorRefsAssignment_5_in_rule__SubSystemClass__Group__5__Impl16968);
+ rule__SubSystemClass__ActorRefsAssignment_5();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8342:1: ( ( rule__SubSystemClass__ActorRefsAssignment_5 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8343:1: ( rule__SubSystemClass__ActorRefsAssignment_5 )*
+ {
+ before(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8344:1: ( rule__SubSystemClass__ActorRefsAssignment_5 )*
+ loop69:
+ do {
+ int alt69=2;
+ int LA69_0 = input.LA(1);
+
+ if ( (LA69_0==72) ) {
+ alt69=1;
+ }
+
+
+ switch (alt69) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8344:2: rule__SubSystemClass__ActorRefsAssignment_5
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__ActorRefsAssignment_5_in_rule__SubSystemClass__Group__5__Impl16980);
+ rule__SubSystemClass__ActorRefsAssignment_5();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop69;
+ }
+ } while (true);
+
+ after(grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__5__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8355:1: rule__SubSystemClass__Group__6 : rule__SubSystemClass__Group__6__Impl rule__SubSystemClass__Group__7 ;
+ public final void rule__SubSystemClass__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8359:1: ( rule__SubSystemClass__Group__6__Impl rule__SubSystemClass__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8360:2: rule__SubSystemClass__Group__6__Impl rule__SubSystemClass__Group__7
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__6__Impl_in_rule__SubSystemClass__Group__617013);
+ rule__SubSystemClass__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__7_in_rule__SubSystemClass__Group__617016);
+ rule__SubSystemClass__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__6
+
+
+ // $ANTLR start rule__SubSystemClass__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8367:1: rule__SubSystemClass__Group__6__Impl : ( ( rule__SubSystemClass__BindingsAssignment_6 )* ) ;
+ public final void rule__SubSystemClass__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8371:1: ( ( ( rule__SubSystemClass__BindingsAssignment_6 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8372:1: ( ( rule__SubSystemClass__BindingsAssignment_6 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8372:1: ( ( rule__SubSystemClass__BindingsAssignment_6 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8373:1: ( rule__SubSystemClass__BindingsAssignment_6 )*
+ {
+ before(grammarAccess.getSubSystemClassAccess().getBindingsAssignment_6());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8374:1: ( rule__SubSystemClass__BindingsAssignment_6 )*
+ loop70:
+ do {
+ int alt70=2;
+ int LA70_0 = input.LA(1);
+
+ if ( (LA70_0==66) ) {
+ alt70=1;
+ }
+
+
+ switch (alt70) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8374:2: rule__SubSystemClass__BindingsAssignment_6
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__BindingsAssignment_6_in_rule__SubSystemClass__Group__6__Impl17043);
+ rule__SubSystemClass__BindingsAssignment_6();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop70;
+ }
+ } while (true);
+
+ after(grammarAccess.getSubSystemClassAccess().getBindingsAssignment_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__6__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8384:1: rule__SubSystemClass__Group__7 : rule__SubSystemClass__Group__7__Impl rule__SubSystemClass__Group__8 ;
+ public final void rule__SubSystemClass__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8388:1: ( rule__SubSystemClass__Group__7__Impl rule__SubSystemClass__Group__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8389:2: rule__SubSystemClass__Group__7__Impl rule__SubSystemClass__Group__8
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__7__Impl_in_rule__SubSystemClass__Group__717074);
+ rule__SubSystemClass__Group__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__8_in_rule__SubSystemClass__Group__717077);
+ rule__SubSystemClass__Group__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__7
+
+
+ // $ANTLR start rule__SubSystemClass__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8396:1: rule__SubSystemClass__Group__7__Impl : ( ( rule__SubSystemClass__ConnectionsAssignment_7 )* ) ;
+ public final void rule__SubSystemClass__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8400:1: ( ( ( rule__SubSystemClass__ConnectionsAssignment_7 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8401:1: ( ( rule__SubSystemClass__ConnectionsAssignment_7 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8401:1: ( ( rule__SubSystemClass__ConnectionsAssignment_7 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8402:1: ( rule__SubSystemClass__ConnectionsAssignment_7 )*
+ {
+ before(grammarAccess.getSubSystemClassAccess().getConnectionsAssignment_7());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8403:1: ( rule__SubSystemClass__ConnectionsAssignment_7 )*
+ loop71:
+ do {
+ int alt71=2;
+ int LA71_0 = input.LA(1);
+
+ if ( (LA71_0==68) ) {
+ alt71=1;
+ }
+
+
+ switch (alt71) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8403:2: rule__SubSystemClass__ConnectionsAssignment_7
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__ConnectionsAssignment_7_in_rule__SubSystemClass__Group__7__Impl17104);
+ rule__SubSystemClass__ConnectionsAssignment_7();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop71;
+ }
+ } while (true);
+
+ after(grammarAccess.getSubSystemClassAccess().getConnectionsAssignment_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__7__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8413:1: rule__SubSystemClass__Group__8 : rule__SubSystemClass__Group__8__Impl rule__SubSystemClass__Group__9 ;
+ public final void rule__SubSystemClass__Group__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8417:1: ( rule__SubSystemClass__Group__8__Impl rule__SubSystemClass__Group__9 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8418:2: rule__SubSystemClass__Group__8__Impl rule__SubSystemClass__Group__9
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__8__Impl_in_rule__SubSystemClass__Group__817135);
+ rule__SubSystemClass__Group__8__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__9_in_rule__SubSystemClass__Group__817138);
+ rule__SubSystemClass__Group__9();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__8
+
+
+ // $ANTLR start rule__SubSystemClass__Group__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8425:1: rule__SubSystemClass__Group__8__Impl : ( ( rule__SubSystemClass__ThreadsAssignment_8 )* ) ;
+ public final void rule__SubSystemClass__Group__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8429:1: ( ( ( rule__SubSystemClass__ThreadsAssignment_8 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8430:1: ( ( rule__SubSystemClass__ThreadsAssignment_8 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8430:1: ( ( rule__SubSystemClass__ThreadsAssignment_8 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8431:1: ( rule__SubSystemClass__ThreadsAssignment_8 )*
+ {
+ before(grammarAccess.getSubSystemClassAccess().getThreadsAssignment_8());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8432:1: ( rule__SubSystemClass__ThreadsAssignment_8 )*
+ loop72:
+ do {
+ int alt72=2;
+ int LA72_0 = input.LA(1);
+
+ if ( (LA72_0==64) ) {
+ alt72=1;
+ }
+
+
+ switch (alt72) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8432:2: rule__SubSystemClass__ThreadsAssignment_8
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__ThreadsAssignment_8_in_rule__SubSystemClass__Group__8__Impl17165);
+ rule__SubSystemClass__ThreadsAssignment_8();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop72;
+ }
+ } while (true);
+
+ after(grammarAccess.getSubSystemClassAccess().getThreadsAssignment_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__8__Impl
+
+
+ // $ANTLR start rule__SubSystemClass__Group__9
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8442:1: rule__SubSystemClass__Group__9 : rule__SubSystemClass__Group__9__Impl ;
+ public final void rule__SubSystemClass__Group__9() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8446:1: ( rule__SubSystemClass__Group__9__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8447:2: rule__SubSystemClass__Group__9__Impl
+ {
+ pushFollow(FOLLOW_rule__SubSystemClass__Group__9__Impl_in_rule__SubSystemClass__Group__917196);
+ rule__SubSystemClass__Group__9__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__9
+
+
+ // $ANTLR start rule__SubSystemClass__Group__9__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8453:1: rule__SubSystemClass__Group__9__Impl : ( '}' ) ;
+ public final void rule__SubSystemClass__Group__9__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8457:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8458:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8458:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8459:1: '}'
+ {
+ before(grammarAccess.getSubSystemClassAccess().getRightCurlyBracketKeyword_9());
+ match(input,25,FOLLOW_25_in_rule__SubSystemClass__Group__9__Impl17224);
+ after(grammarAccess.getSubSystemClassAccess().getRightCurlyBracketKeyword_9());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__Group__9__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8492:1: rule__LogicalThread__Group__0 : rule__LogicalThread__Group__0__Impl rule__LogicalThread__Group__1 ;
+ public final void rule__LogicalThread__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8496:1: ( rule__LogicalThread__Group__0__Impl rule__LogicalThread__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8497:2: rule__LogicalThread__Group__0__Impl rule__LogicalThread__Group__1
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group__0__Impl_in_rule__LogicalThread__Group__017275);
+ rule__LogicalThread__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalThread__Group__1_in_rule__LogicalThread__Group__017278);
+ rule__LogicalThread__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__0
+
+
+ // $ANTLR start rule__LogicalThread__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8504:1: rule__LogicalThread__Group__0__Impl : ( 'LogicalThread' ) ;
+ public final void rule__LogicalThread__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8508:1: ( ( 'LogicalThread' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8509:1: ( 'LogicalThread' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8509:1: ( 'LogicalThread' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8510:1: 'LogicalThread'
+ {
+ before(grammarAccess.getLogicalThreadAccess().getLogicalThreadKeyword_0());
+ match(input,64,FOLLOW_64_in_rule__LogicalThread__Group__0__Impl17306);
+ after(grammarAccess.getLogicalThreadAccess().getLogicalThreadKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__0__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8523:1: rule__LogicalThread__Group__1 : rule__LogicalThread__Group__1__Impl rule__LogicalThread__Group__2 ;
+ public final void rule__LogicalThread__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8527:1: ( rule__LogicalThread__Group__1__Impl rule__LogicalThread__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8528:2: rule__LogicalThread__Group__1__Impl rule__LogicalThread__Group__2
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group__1__Impl_in_rule__LogicalThread__Group__117337);
+ rule__LogicalThread__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalThread__Group__2_in_rule__LogicalThread__Group__117340);
+ rule__LogicalThread__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__1
+
+
+ // $ANTLR start rule__LogicalThread__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8535:1: rule__LogicalThread__Group__1__Impl : ( ( rule__LogicalThread__NameAssignment_1 ) ) ;
+ public final void rule__LogicalThread__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8539:1: ( ( ( rule__LogicalThread__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8540:1: ( ( rule__LogicalThread__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8540:1: ( ( rule__LogicalThread__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8541:1: ( rule__LogicalThread__NameAssignment_1 )
+ {
+ before(grammarAccess.getLogicalThreadAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8542:1: ( rule__LogicalThread__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8542:2: rule__LogicalThread__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__NameAssignment_1_in_rule__LogicalThread__Group__1__Impl17367);
+ rule__LogicalThread__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLogicalThreadAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__1__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8552:1: rule__LogicalThread__Group__2 : rule__LogicalThread__Group__2__Impl rule__LogicalThread__Group__3 ;
+ public final void rule__LogicalThread__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8556:1: ( rule__LogicalThread__Group__2__Impl rule__LogicalThread__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8557:2: rule__LogicalThread__Group__2__Impl rule__LogicalThread__Group__3
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group__2__Impl_in_rule__LogicalThread__Group__217397);
+ rule__LogicalThread__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalThread__Group__3_in_rule__LogicalThread__Group__217400);
+ rule__LogicalThread__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__2
+
+
+ // $ANTLR start rule__LogicalThread__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8564:1: rule__LogicalThread__Group__2__Impl : ( '{' ) ;
+ public final void rule__LogicalThread__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8568:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8569:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8569:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8570:1: '{'
+ {
+ before(grammarAccess.getLogicalThreadAccess().getLeftCurlyBracketKeyword_2());
+ match(input,24,FOLLOW_24_in_rule__LogicalThread__Group__2__Impl17428);
+ after(grammarAccess.getLogicalThreadAccess().getLeftCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__2__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8583:1: rule__LogicalThread__Group__3 : rule__LogicalThread__Group__3__Impl rule__LogicalThread__Group__4 ;
+ public final void rule__LogicalThread__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8587:1: ( rule__LogicalThread__Group__3__Impl rule__LogicalThread__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8588:2: rule__LogicalThread__Group__3__Impl rule__LogicalThread__Group__4
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group__3__Impl_in_rule__LogicalThread__Group__317459);
+ rule__LogicalThread__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalThread__Group__4_in_rule__LogicalThread__Group__317462);
+ rule__LogicalThread__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__3
+
+
+ // $ANTLR start rule__LogicalThread__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8595:1: rule__LogicalThread__Group__3__Impl : ( ( rule__LogicalThread__InstancesAssignment_3 ) ) ;
+ public final void rule__LogicalThread__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8599:1: ( ( ( rule__LogicalThread__InstancesAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8600:1: ( ( rule__LogicalThread__InstancesAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8600:1: ( ( rule__LogicalThread__InstancesAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8601:1: ( rule__LogicalThread__InstancesAssignment_3 )
+ {
+ before(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8602:1: ( rule__LogicalThread__InstancesAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8602:2: rule__LogicalThread__InstancesAssignment_3
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__InstancesAssignment_3_in_rule__LogicalThread__Group__3__Impl17489);
+ rule__LogicalThread__InstancesAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__3__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8612:1: rule__LogicalThread__Group__4 : rule__LogicalThread__Group__4__Impl rule__LogicalThread__Group__5 ;
+ public final void rule__LogicalThread__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8616:1: ( rule__LogicalThread__Group__4__Impl rule__LogicalThread__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8617:2: rule__LogicalThread__Group__4__Impl rule__LogicalThread__Group__5
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group__4__Impl_in_rule__LogicalThread__Group__417519);
+ rule__LogicalThread__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalThread__Group__5_in_rule__LogicalThread__Group__417522);
+ rule__LogicalThread__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__4
+
+
+ // $ANTLR start rule__LogicalThread__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8624:1: rule__LogicalThread__Group__4__Impl : ( ( rule__LogicalThread__Group_4__0 )* ) ;
+ public final void rule__LogicalThread__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8628:1: ( ( ( rule__LogicalThread__Group_4__0 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8629:1: ( ( rule__LogicalThread__Group_4__0 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8629:1: ( ( rule__LogicalThread__Group_4__0 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8630:1: ( rule__LogicalThread__Group_4__0 )*
+ {
+ before(grammarAccess.getLogicalThreadAccess().getGroup_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8631:1: ( rule__LogicalThread__Group_4__0 )*
+ loop73:
+ do {
+ int alt73=2;
+ int LA73_0 = input.LA(1);
+
+ if ( (LA73_0==35) ) {
+ alt73=1;
+ }
+
+
+ switch (alt73) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8631:2: rule__LogicalThread__Group_4__0
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group_4__0_in_rule__LogicalThread__Group__4__Impl17549);
+ rule__LogicalThread__Group_4__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop73;
+ }
+ } while (true);
+
+ after(grammarAccess.getLogicalThreadAccess().getGroup_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__4__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8641:1: rule__LogicalThread__Group__5 : rule__LogicalThread__Group__5__Impl ;
+ public final void rule__LogicalThread__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8645:1: ( rule__LogicalThread__Group__5__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8646:2: rule__LogicalThread__Group__5__Impl
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group__5__Impl_in_rule__LogicalThread__Group__517580);
+ rule__LogicalThread__Group__5__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__5
+
+
+ // $ANTLR start rule__LogicalThread__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8652:1: rule__LogicalThread__Group__5__Impl : ( '}' ) ;
+ public final void rule__LogicalThread__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8656:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8657:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8657:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8658:1: '}'
+ {
+ before(grammarAccess.getLogicalThreadAccess().getRightCurlyBracketKeyword_5());
+ match(input,25,FOLLOW_25_in_rule__LogicalThread__Group__5__Impl17608);
+ after(grammarAccess.getLogicalThreadAccess().getRightCurlyBracketKeyword_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group__5__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group_4__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8683:1: rule__LogicalThread__Group_4__0 : rule__LogicalThread__Group_4__0__Impl rule__LogicalThread__Group_4__1 ;
+ public final void rule__LogicalThread__Group_4__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8687:1: ( rule__LogicalThread__Group_4__0__Impl rule__LogicalThread__Group_4__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8688:2: rule__LogicalThread__Group_4__0__Impl rule__LogicalThread__Group_4__1
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group_4__0__Impl_in_rule__LogicalThread__Group_4__017651);
+ rule__LogicalThread__Group_4__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LogicalThread__Group_4__1_in_rule__LogicalThread__Group_4__017654);
+ rule__LogicalThread__Group_4__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group_4__0
+
+
+ // $ANTLR start rule__LogicalThread__Group_4__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8695:1: rule__LogicalThread__Group_4__0__Impl : ( ',' ) ;
+ public final void rule__LogicalThread__Group_4__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8699:1: ( ( ',' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8700:1: ( ',' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8700:1: ( ',' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8701:1: ','
+ {
+ before(grammarAccess.getLogicalThreadAccess().getCommaKeyword_4_0());
+ match(input,35,FOLLOW_35_in_rule__LogicalThread__Group_4__0__Impl17682);
+ after(grammarAccess.getLogicalThreadAccess().getCommaKeyword_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group_4__0__Impl
+
+
+ // $ANTLR start rule__LogicalThread__Group_4__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8714:1: rule__LogicalThread__Group_4__1 : rule__LogicalThread__Group_4__1__Impl ;
+ public final void rule__LogicalThread__Group_4__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8718:1: ( rule__LogicalThread__Group_4__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8719:2: rule__LogicalThread__Group_4__1__Impl
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__Group_4__1__Impl_in_rule__LogicalThread__Group_4__117713);
+ rule__LogicalThread__Group_4__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group_4__1
+
+
+ // $ANTLR start rule__LogicalThread__Group_4__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8725:1: rule__LogicalThread__Group_4__1__Impl : ( ( rule__LogicalThread__InstancesAssignment_4_1 ) ) ;
+ public final void rule__LogicalThread__Group_4__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8729:1: ( ( ( rule__LogicalThread__InstancesAssignment_4_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8730:1: ( ( rule__LogicalThread__InstancesAssignment_4_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8730:1: ( ( rule__LogicalThread__InstancesAssignment_4_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8731:1: ( rule__LogicalThread__InstancesAssignment_4_1 )
+ {
+ before(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_4_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8732:1: ( rule__LogicalThread__InstancesAssignment_4_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8732:2: rule__LogicalThread__InstancesAssignment_4_1
+ {
+ pushFollow(FOLLOW_rule__LogicalThread__InstancesAssignment_4_1_in_rule__LogicalThread__Group_4__1__Impl17740);
+ rule__LogicalThread__InstancesAssignment_4_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLogicalThreadAccess().getInstancesAssignment_4_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__Group_4__1__Impl
+
+
+ // $ANTLR start rule__ActorInstancePath__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8746:1: rule__ActorInstancePath__Group__0 : rule__ActorInstancePath__Group__0__Impl rule__ActorInstancePath__Group__1 ;
+ public final void rule__ActorInstancePath__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8750:1: ( rule__ActorInstancePath__Group__0__Impl rule__ActorInstancePath__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8751:2: rule__ActorInstancePath__Group__0__Impl rule__ActorInstancePath__Group__1
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group__0__Impl_in_rule__ActorInstancePath__Group__017774);
+ rule__ActorInstancePath__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group__1_in_rule__ActorInstancePath__Group__017777);
+ rule__ActorInstancePath__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group__0
+
+
+ // $ANTLR start rule__ActorInstancePath__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8758:1: rule__ActorInstancePath__Group__0__Impl : ( ( rule__ActorInstancePath__SegmentsAssignment_0 ) ) ;
+ public final void rule__ActorInstancePath__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8762:1: ( ( ( rule__ActorInstancePath__SegmentsAssignment_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8763:1: ( ( rule__ActorInstancePath__SegmentsAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8763:1: ( ( rule__ActorInstancePath__SegmentsAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8764:1: ( rule__ActorInstancePath__SegmentsAssignment_0 )
+ {
+ before(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8765:1: ( rule__ActorInstancePath__SegmentsAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8765:2: rule__ActorInstancePath__SegmentsAssignment_0
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__SegmentsAssignment_0_in_rule__ActorInstancePath__Group__0__Impl17804);
+ rule__ActorInstancePath__SegmentsAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group__0__Impl
+
+
+ // $ANTLR start rule__ActorInstancePath__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8775:1: rule__ActorInstancePath__Group__1 : rule__ActorInstancePath__Group__1__Impl ;
+ public final void rule__ActorInstancePath__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8779:1: ( rule__ActorInstancePath__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8780:2: rule__ActorInstancePath__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group__1__Impl_in_rule__ActorInstancePath__Group__117834);
+ rule__ActorInstancePath__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group__1
+
+
+ // $ANTLR start rule__ActorInstancePath__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8786:1: rule__ActorInstancePath__Group__1__Impl : ( ( rule__ActorInstancePath__Group_1__0 )* ) ;
+ public final void rule__ActorInstancePath__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8790:1: ( ( ( rule__ActorInstancePath__Group_1__0 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8791:1: ( ( rule__ActorInstancePath__Group_1__0 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8791:1: ( ( rule__ActorInstancePath__Group_1__0 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8792:1: ( rule__ActorInstancePath__Group_1__0 )*
+ {
+ before(grammarAccess.getActorInstancePathAccess().getGroup_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8793:1: ( rule__ActorInstancePath__Group_1__0 )*
+ loop74:
+ do {
+ int alt74=2;
+ int LA74_0 = input.LA(1);
+
+ if ( (LA74_0==65) ) {
+ alt74=1;
+ }
+
+
+ switch (alt74) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8793:2: rule__ActorInstancePath__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group_1__0_in_rule__ActorInstancePath__Group__1__Impl17861);
+ rule__ActorInstancePath__Group_1__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop74;
+ }
+ } while (true);
+
+ after(grammarAccess.getActorInstancePathAccess().getGroup_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group__1__Impl
+
+
+ // $ANTLR start rule__ActorInstancePath__Group_1__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8807:1: rule__ActorInstancePath__Group_1__0 : rule__ActorInstancePath__Group_1__0__Impl rule__ActorInstancePath__Group_1__1 ;
+ public final void rule__ActorInstancePath__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8811:1: ( rule__ActorInstancePath__Group_1__0__Impl rule__ActorInstancePath__Group_1__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8812:2: rule__ActorInstancePath__Group_1__0__Impl rule__ActorInstancePath__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group_1__0__Impl_in_rule__ActorInstancePath__Group_1__017896);
+ rule__ActorInstancePath__Group_1__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group_1__1_in_rule__ActorInstancePath__Group_1__017899);
+ rule__ActorInstancePath__Group_1__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group_1__0
+
+
+ // $ANTLR start rule__ActorInstancePath__Group_1__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8819:1: rule__ActorInstancePath__Group_1__0__Impl : ( '.' ) ;
+ public final void rule__ActorInstancePath__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8823:1: ( ( '.' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8824:1: ( '.' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8824:1: ( '.' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8825:1: '.'
+ {
+ before(grammarAccess.getActorInstancePathAccess().getFullStopKeyword_1_0());
+ match(input,65,FOLLOW_65_in_rule__ActorInstancePath__Group_1__0__Impl17927);
+ after(grammarAccess.getActorInstancePathAccess().getFullStopKeyword_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group_1__0__Impl
+
+
+ // $ANTLR start rule__ActorInstancePath__Group_1__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8838:1: rule__ActorInstancePath__Group_1__1 : rule__ActorInstancePath__Group_1__1__Impl ;
+ public final void rule__ActorInstancePath__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8842:1: ( rule__ActorInstancePath__Group_1__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8843:2: rule__ActorInstancePath__Group_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__Group_1__1__Impl_in_rule__ActorInstancePath__Group_1__117958);
+ rule__ActorInstancePath__Group_1__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group_1__1
+
+
+ // $ANTLR start rule__ActorInstancePath__Group_1__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8849:1: rule__ActorInstancePath__Group_1__1__Impl : ( ( rule__ActorInstancePath__SegmentsAssignment_1_1 ) ) ;
+ public final void rule__ActorInstancePath__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8853:1: ( ( ( rule__ActorInstancePath__SegmentsAssignment_1_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8854:1: ( ( rule__ActorInstancePath__SegmentsAssignment_1_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8854:1: ( ( rule__ActorInstancePath__SegmentsAssignment_1_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8855:1: ( rule__ActorInstancePath__SegmentsAssignment_1_1 )
+ {
+ before(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_1_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8856:1: ( rule__ActorInstancePath__SegmentsAssignment_1_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8856:2: rule__ActorInstancePath__SegmentsAssignment_1_1
+ {
+ pushFollow(FOLLOW_rule__ActorInstancePath__SegmentsAssignment_1_1_in_rule__ActorInstancePath__Group_1__1__Impl17985);
+ rule__ActorInstancePath__SegmentsAssignment_1_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__Group_1__1__Impl
+
+
+ // $ANTLR start rule__Binding__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8870:1: rule__Binding__Group__0 : rule__Binding__Group__0__Impl rule__Binding__Group__1 ;
+ public final void rule__Binding__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8874:1: ( rule__Binding__Group__0__Impl rule__Binding__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8875:2: rule__Binding__Group__0__Impl rule__Binding__Group__1
+ {
+ pushFollow(FOLLOW_rule__Binding__Group__0__Impl_in_rule__Binding__Group__018019);
+ rule__Binding__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Binding__Group__1_in_rule__Binding__Group__018022);
+ rule__Binding__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__0
+
+
+ // $ANTLR start rule__Binding__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8882:1: rule__Binding__Group__0__Impl : ( 'Binding' ) ;
+ public final void rule__Binding__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8886:1: ( ( 'Binding' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8887:1: ( 'Binding' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8887:1: ( 'Binding' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8888:1: 'Binding'
+ {
+ before(grammarAccess.getBindingAccess().getBindingKeyword_0());
+ match(input,66,FOLLOW_66_in_rule__Binding__Group__0__Impl18050);
+ after(grammarAccess.getBindingAccess().getBindingKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__0__Impl
+
+
+ // $ANTLR start rule__Binding__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8901:1: rule__Binding__Group__1 : rule__Binding__Group__1__Impl rule__Binding__Group__2 ;
+ public final void rule__Binding__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8905:1: ( rule__Binding__Group__1__Impl rule__Binding__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8906:2: rule__Binding__Group__1__Impl rule__Binding__Group__2
+ {
+ pushFollow(FOLLOW_rule__Binding__Group__1__Impl_in_rule__Binding__Group__118081);
+ rule__Binding__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Binding__Group__2_in_rule__Binding__Group__118084);
+ rule__Binding__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__1
+
+
+ // $ANTLR start rule__Binding__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8913:1: rule__Binding__Group__1__Impl : ( ( rule__Binding__Endpoint1Assignment_1 ) ) ;
+ public final void rule__Binding__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8917:1: ( ( ( rule__Binding__Endpoint1Assignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8918:1: ( ( rule__Binding__Endpoint1Assignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8918:1: ( ( rule__Binding__Endpoint1Assignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8919:1: ( rule__Binding__Endpoint1Assignment_1 )
+ {
+ before(grammarAccess.getBindingAccess().getEndpoint1Assignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8920:1: ( rule__Binding__Endpoint1Assignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8920:2: rule__Binding__Endpoint1Assignment_1
+ {
+ pushFollow(FOLLOW_rule__Binding__Endpoint1Assignment_1_in_rule__Binding__Group__1__Impl18111);
+ rule__Binding__Endpoint1Assignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBindingAccess().getEndpoint1Assignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__1__Impl
+
+
+ // $ANTLR start rule__Binding__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8930:1: rule__Binding__Group__2 : rule__Binding__Group__2__Impl rule__Binding__Group__3 ;
+ public final void rule__Binding__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8934:1: ( rule__Binding__Group__2__Impl rule__Binding__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8935:2: rule__Binding__Group__2__Impl rule__Binding__Group__3
+ {
+ pushFollow(FOLLOW_rule__Binding__Group__2__Impl_in_rule__Binding__Group__218141);
+ rule__Binding__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Binding__Group__3_in_rule__Binding__Group__218144);
+ rule__Binding__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__2
+
+
+ // $ANTLR start rule__Binding__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8942:1: rule__Binding__Group__2__Impl : ( 'and' ) ;
+ public final void rule__Binding__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8946:1: ( ( 'and' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8947:1: ( 'and' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8947:1: ( 'and' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8948:1: 'and'
+ {
+ before(grammarAccess.getBindingAccess().getAndKeyword_2());
+ match(input,67,FOLLOW_67_in_rule__Binding__Group__2__Impl18172);
+ after(grammarAccess.getBindingAccess().getAndKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__2__Impl
+
+
+ // $ANTLR start rule__Binding__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8961:1: rule__Binding__Group__3 : rule__Binding__Group__3__Impl ;
+ public final void rule__Binding__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8965:1: ( rule__Binding__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8966:2: rule__Binding__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__Binding__Group__3__Impl_in_rule__Binding__Group__318203);
+ rule__Binding__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__3
+
+
+ // $ANTLR start rule__Binding__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8972:1: rule__Binding__Group__3__Impl : ( ( rule__Binding__Endpoint2Assignment_3 ) ) ;
+ public final void rule__Binding__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8976:1: ( ( ( rule__Binding__Endpoint2Assignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8977:1: ( ( rule__Binding__Endpoint2Assignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8977:1: ( ( rule__Binding__Endpoint2Assignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8978:1: ( rule__Binding__Endpoint2Assignment_3 )
+ {
+ before(grammarAccess.getBindingAccess().getEndpoint2Assignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8979:1: ( rule__Binding__Endpoint2Assignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8979:2: rule__Binding__Endpoint2Assignment_3
+ {
+ pushFollow(FOLLOW_rule__Binding__Endpoint2Assignment_3_in_rule__Binding__Group__3__Impl18230);
+ rule__Binding__Endpoint2Assignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBindingAccess().getEndpoint2Assignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Group__3__Impl
+
+
+ // $ANTLR start rule__BindingEndPoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:8997:1: rule__BindingEndPoint__Group__0 : rule__BindingEndPoint__Group__0__Impl rule__BindingEndPoint__Group__1 ;
+ public final void rule__BindingEndPoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9001:1: ( rule__BindingEndPoint__Group__0__Impl rule__BindingEndPoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9002:2: rule__BindingEndPoint__Group__0__Impl rule__BindingEndPoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group__0__Impl_in_rule__BindingEndPoint__Group__018268);
+ rule__BindingEndPoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group__1_in_rule__BindingEndPoint__Group__018271);
+ rule__BindingEndPoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group__0
+
+
+ // $ANTLR start rule__BindingEndPoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9009:1: rule__BindingEndPoint__Group__0__Impl : ( ( rule__BindingEndPoint__Group_0__0 )? ) ;
+ public final void rule__BindingEndPoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9013:1: ( ( ( rule__BindingEndPoint__Group_0__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9014:1: ( ( rule__BindingEndPoint__Group_0__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9014:1: ( ( rule__BindingEndPoint__Group_0__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9015:1: ( rule__BindingEndPoint__Group_0__0 )?
+ {
+ before(grammarAccess.getBindingEndPointAccess().getGroup_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9016:1: ( rule__BindingEndPoint__Group_0__0 )?
+ int alt75=2;
+ int LA75_0 = input.LA(1);
+
+ if ( (LA75_0==RULE_ID) ) {
+ int LA75_1 = input.LA(2);
+
+ if ( (LA75_1==65) ) {
+ alt75=1;
+ }
+ }
+ switch (alt75) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9016:2: rule__BindingEndPoint__Group_0__0
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group_0__0_in_rule__BindingEndPoint__Group__0__Impl18298);
+ rule__BindingEndPoint__Group_0__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getBindingEndPointAccess().getGroup_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group__0__Impl
+
+
+ // $ANTLR start rule__BindingEndPoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9026:1: rule__BindingEndPoint__Group__1 : rule__BindingEndPoint__Group__1__Impl ;
+ public final void rule__BindingEndPoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9030:1: ( rule__BindingEndPoint__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9031:2: rule__BindingEndPoint__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group__1__Impl_in_rule__BindingEndPoint__Group__118329);
+ rule__BindingEndPoint__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group__1
+
+
+ // $ANTLR start rule__BindingEndPoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9037:1: rule__BindingEndPoint__Group__1__Impl : ( ( rule__BindingEndPoint__PortAssignment_1 ) ) ;
+ public final void rule__BindingEndPoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9041:1: ( ( ( rule__BindingEndPoint__PortAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9042:1: ( ( rule__BindingEndPoint__PortAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9042:1: ( ( rule__BindingEndPoint__PortAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9043:1: ( rule__BindingEndPoint__PortAssignment_1 )
+ {
+ before(grammarAccess.getBindingEndPointAccess().getPortAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9044:1: ( rule__BindingEndPoint__PortAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9044:2: rule__BindingEndPoint__PortAssignment_1
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__PortAssignment_1_in_rule__BindingEndPoint__Group__1__Impl18356);
+ rule__BindingEndPoint__PortAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBindingEndPointAccess().getPortAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group__1__Impl
+
+
+ // $ANTLR start rule__BindingEndPoint__Group_0__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9058:1: rule__BindingEndPoint__Group_0__0 : rule__BindingEndPoint__Group_0__0__Impl rule__BindingEndPoint__Group_0__1 ;
+ public final void rule__BindingEndPoint__Group_0__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9062:1: ( rule__BindingEndPoint__Group_0__0__Impl rule__BindingEndPoint__Group_0__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9063:2: rule__BindingEndPoint__Group_0__0__Impl rule__BindingEndPoint__Group_0__1
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group_0__0__Impl_in_rule__BindingEndPoint__Group_0__018390);
+ rule__BindingEndPoint__Group_0__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group_0__1_in_rule__BindingEndPoint__Group_0__018393);
+ rule__BindingEndPoint__Group_0__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group_0__0
+
+
+ // $ANTLR start rule__BindingEndPoint__Group_0__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9070:1: rule__BindingEndPoint__Group_0__0__Impl : ( ( rule__BindingEndPoint__ActorRefAssignment_0_0 ) ) ;
+ public final void rule__BindingEndPoint__Group_0__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9074:1: ( ( ( rule__BindingEndPoint__ActorRefAssignment_0_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9075:1: ( ( rule__BindingEndPoint__ActorRefAssignment_0_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9075:1: ( ( rule__BindingEndPoint__ActorRefAssignment_0_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9076:1: ( rule__BindingEndPoint__ActorRefAssignment_0_0 )
+ {
+ before(grammarAccess.getBindingEndPointAccess().getActorRefAssignment_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9077:1: ( rule__BindingEndPoint__ActorRefAssignment_0_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9077:2: rule__BindingEndPoint__ActorRefAssignment_0_0
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__ActorRefAssignment_0_0_in_rule__BindingEndPoint__Group_0__0__Impl18420);
+ rule__BindingEndPoint__ActorRefAssignment_0_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBindingEndPointAccess().getActorRefAssignment_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group_0__0__Impl
+
+
+ // $ANTLR start rule__BindingEndPoint__Group_0__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9087:1: rule__BindingEndPoint__Group_0__1 : rule__BindingEndPoint__Group_0__1__Impl ;
+ public final void rule__BindingEndPoint__Group_0__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9091:1: ( rule__BindingEndPoint__Group_0__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9092:2: rule__BindingEndPoint__Group_0__1__Impl
+ {
+ pushFollow(FOLLOW_rule__BindingEndPoint__Group_0__1__Impl_in_rule__BindingEndPoint__Group_0__118450);
+ rule__BindingEndPoint__Group_0__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group_0__1
+
+
+ // $ANTLR start rule__BindingEndPoint__Group_0__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9098:1: rule__BindingEndPoint__Group_0__1__Impl : ( '.' ) ;
+ public final void rule__BindingEndPoint__Group_0__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9102:1: ( ( '.' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9103:1: ( '.' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9103:1: ( '.' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9104:1: '.'
+ {
+ before(grammarAccess.getBindingEndPointAccess().getFullStopKeyword_0_1());
+ match(input,65,FOLLOW_65_in_rule__BindingEndPoint__Group_0__1__Impl18478);
+ after(grammarAccess.getBindingEndPointAccess().getFullStopKeyword_0_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__Group_0__1__Impl
+
+
+ // $ANTLR start rule__LayerConnection__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9121:1: rule__LayerConnection__Group__0 : rule__LayerConnection__Group__0__Impl rule__LayerConnection__Group__1 ;
+ public final void rule__LayerConnection__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9125:1: ( rule__LayerConnection__Group__0__Impl rule__LayerConnection__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9126:2: rule__LayerConnection__Group__0__Impl rule__LayerConnection__Group__1
+ {
+ pushFollow(FOLLOW_rule__LayerConnection__Group__0__Impl_in_rule__LayerConnection__Group__018513);
+ rule__LayerConnection__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LayerConnection__Group__1_in_rule__LayerConnection__Group__018516);
+ rule__LayerConnection__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__0
+
+
+ // $ANTLR start rule__LayerConnection__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9133:1: rule__LayerConnection__Group__0__Impl : ( 'LayerConnection' ) ;
+ public final void rule__LayerConnection__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9137:1: ( ( 'LayerConnection' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9138:1: ( 'LayerConnection' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9138:1: ( 'LayerConnection' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9139:1: 'LayerConnection'
+ {
+ before(grammarAccess.getLayerConnectionAccess().getLayerConnectionKeyword_0());
+ match(input,68,FOLLOW_68_in_rule__LayerConnection__Group__0__Impl18544);
+ after(grammarAccess.getLayerConnectionAccess().getLayerConnectionKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__0__Impl
+
+
+ // $ANTLR start rule__LayerConnection__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9152:1: rule__LayerConnection__Group__1 : rule__LayerConnection__Group__1__Impl rule__LayerConnection__Group__2 ;
+ public final void rule__LayerConnection__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9156:1: ( rule__LayerConnection__Group__1__Impl rule__LayerConnection__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9157:2: rule__LayerConnection__Group__1__Impl rule__LayerConnection__Group__2
+ {
+ pushFollow(FOLLOW_rule__LayerConnection__Group__1__Impl_in_rule__LayerConnection__Group__118575);
+ rule__LayerConnection__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LayerConnection__Group__2_in_rule__LayerConnection__Group__118578);
+ rule__LayerConnection__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__1
+
+
+ // $ANTLR start rule__LayerConnection__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9164:1: rule__LayerConnection__Group__1__Impl : ( ( rule__LayerConnection__FromAssignment_1 ) ) ;
+ public final void rule__LayerConnection__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9168:1: ( ( ( rule__LayerConnection__FromAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9169:1: ( ( rule__LayerConnection__FromAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9169:1: ( ( rule__LayerConnection__FromAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9170:1: ( rule__LayerConnection__FromAssignment_1 )
+ {
+ before(grammarAccess.getLayerConnectionAccess().getFromAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9171:1: ( rule__LayerConnection__FromAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9171:2: rule__LayerConnection__FromAssignment_1
+ {
+ pushFollow(FOLLOW_rule__LayerConnection__FromAssignment_1_in_rule__LayerConnection__Group__1__Impl18605);
+ rule__LayerConnection__FromAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLayerConnectionAccess().getFromAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__1__Impl
+
+
+ // $ANTLR start rule__LayerConnection__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9181:1: rule__LayerConnection__Group__2 : rule__LayerConnection__Group__2__Impl rule__LayerConnection__Group__3 ;
+ public final void rule__LayerConnection__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9185:1: ( rule__LayerConnection__Group__2__Impl rule__LayerConnection__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9186:2: rule__LayerConnection__Group__2__Impl rule__LayerConnection__Group__3
+ {
+ pushFollow(FOLLOW_rule__LayerConnection__Group__2__Impl_in_rule__LayerConnection__Group__218635);
+ rule__LayerConnection__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__LayerConnection__Group__3_in_rule__LayerConnection__Group__218638);
+ rule__LayerConnection__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__2
+
+
+ // $ANTLR start rule__LayerConnection__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9193:1: rule__LayerConnection__Group__2__Impl : ( 'satisfied_by' ) ;
+ public final void rule__LayerConnection__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9197:1: ( ( 'satisfied_by' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9198:1: ( 'satisfied_by' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9198:1: ( 'satisfied_by' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9199:1: 'satisfied_by'
+ {
+ before(grammarAccess.getLayerConnectionAccess().getSatisfied_byKeyword_2());
+ match(input,69,FOLLOW_69_in_rule__LayerConnection__Group__2__Impl18666);
+ after(grammarAccess.getLayerConnectionAccess().getSatisfied_byKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__2__Impl
+
+
+ // $ANTLR start rule__LayerConnection__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9212:1: rule__LayerConnection__Group__3 : rule__LayerConnection__Group__3__Impl ;
+ public final void rule__LayerConnection__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9216:1: ( rule__LayerConnection__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9217:2: rule__LayerConnection__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__LayerConnection__Group__3__Impl_in_rule__LayerConnection__Group__318697);
+ rule__LayerConnection__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__3
+
+
+ // $ANTLR start rule__LayerConnection__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9223:1: rule__LayerConnection__Group__3__Impl : ( ( rule__LayerConnection__ToAssignment_3 ) ) ;
+ public final void rule__LayerConnection__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9227:1: ( ( ( rule__LayerConnection__ToAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9228:1: ( ( rule__LayerConnection__ToAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9228:1: ( ( rule__LayerConnection__ToAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9229:1: ( rule__LayerConnection__ToAssignment_3 )
+ {
+ before(grammarAccess.getLayerConnectionAccess().getToAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9230:1: ( rule__LayerConnection__ToAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9230:2: rule__LayerConnection__ToAssignment_3
+ {
+ pushFollow(FOLLOW_rule__LayerConnection__ToAssignment_3_in_rule__LayerConnection__Group__3__Impl18724);
+ rule__LayerConnection__ToAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getLayerConnectionAccess().getToAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__Group__3__Impl
+
+
+ // $ANTLR start rule__RefSAPoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9248:1: rule__RefSAPoint__Group__0 : rule__RefSAPoint__Group__0__Impl rule__RefSAPoint__Group__1 ;
+ public final void rule__RefSAPoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9252:1: ( rule__RefSAPoint__Group__0__Impl rule__RefSAPoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9253:2: rule__RefSAPoint__Group__0__Impl rule__RefSAPoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__RefSAPoint__Group__0__Impl_in_rule__RefSAPoint__Group__018762);
+ rule__RefSAPoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefSAPoint__Group__1_in_rule__RefSAPoint__Group__018765);
+ rule__RefSAPoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefSAPoint__Group__0
+
+
+ // $ANTLR start rule__RefSAPoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9260:1: rule__RefSAPoint__Group__0__Impl : ( 'ref' ) ;
+ public final void rule__RefSAPoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9264:1: ( ( 'ref' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9265:1: ( 'ref' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9265:1: ( 'ref' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9266:1: 'ref'
+ {
+ before(grammarAccess.getRefSAPointAccess().getRefKeyword_0());
+ match(input,70,FOLLOW_70_in_rule__RefSAPoint__Group__0__Impl18793);
+ after(grammarAccess.getRefSAPointAccess().getRefKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefSAPoint__Group__0__Impl
+
+
+ // $ANTLR start rule__RefSAPoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9279:1: rule__RefSAPoint__Group__1 : rule__RefSAPoint__Group__1__Impl ;
+ public final void rule__RefSAPoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9283:1: ( rule__RefSAPoint__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9284:2: rule__RefSAPoint__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__RefSAPoint__Group__1__Impl_in_rule__RefSAPoint__Group__118824);
+ rule__RefSAPoint__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefSAPoint__Group__1
+
+
+ // $ANTLR start rule__RefSAPoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9290:1: rule__RefSAPoint__Group__1__Impl : ( ( rule__RefSAPoint__RefAssignment_1 ) ) ;
+ public final void rule__RefSAPoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9294:1: ( ( ( rule__RefSAPoint__RefAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9295:1: ( ( rule__RefSAPoint__RefAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9295:1: ( ( rule__RefSAPoint__RefAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9296:1: ( rule__RefSAPoint__RefAssignment_1 )
+ {
+ before(grammarAccess.getRefSAPointAccess().getRefAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9297:1: ( rule__RefSAPoint__RefAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9297:2: rule__RefSAPoint__RefAssignment_1
+ {
+ pushFollow(FOLLOW_rule__RefSAPoint__RefAssignment_1_in_rule__RefSAPoint__Group__1__Impl18851);
+ rule__RefSAPoint__RefAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRefSAPointAccess().getRefAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefSAPoint__Group__1__Impl
+
+
+ // $ANTLR start rule__RelaySAPoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9311:1: rule__RelaySAPoint__Group__0 : rule__RelaySAPoint__Group__0__Impl rule__RelaySAPoint__Group__1 ;
+ public final void rule__RelaySAPoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9315:1: ( rule__RelaySAPoint__Group__0__Impl rule__RelaySAPoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9316:2: rule__RelaySAPoint__Group__0__Impl rule__RelaySAPoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__RelaySAPoint__Group__0__Impl_in_rule__RelaySAPoint__Group__018885);
+ rule__RelaySAPoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RelaySAPoint__Group__1_in_rule__RelaySAPoint__Group__018888);
+ rule__RelaySAPoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RelaySAPoint__Group__0
+
+
+ // $ANTLR start rule__RelaySAPoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9323:1: rule__RelaySAPoint__Group__0__Impl : ( 'relay_sap' ) ;
+ public final void rule__RelaySAPoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9327:1: ( ( 'relay_sap' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9328:1: ( 'relay_sap' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9328:1: ( 'relay_sap' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9329:1: 'relay_sap'
+ {
+ before(grammarAccess.getRelaySAPointAccess().getRelay_sapKeyword_0());
+ match(input,71,FOLLOW_71_in_rule__RelaySAPoint__Group__0__Impl18916);
+ after(grammarAccess.getRelaySAPointAccess().getRelay_sapKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RelaySAPoint__Group__0__Impl
+
+
+ // $ANTLR start rule__RelaySAPoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9342:1: rule__RelaySAPoint__Group__1 : rule__RelaySAPoint__Group__1__Impl ;
+ public final void rule__RelaySAPoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9346:1: ( rule__RelaySAPoint__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9347:2: rule__RelaySAPoint__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__RelaySAPoint__Group__1__Impl_in_rule__RelaySAPoint__Group__118947);
+ rule__RelaySAPoint__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RelaySAPoint__Group__1
+
+
+ // $ANTLR start rule__RelaySAPoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9353:1: rule__RelaySAPoint__Group__1__Impl : ( ( rule__RelaySAPoint__RelayAssignment_1 ) ) ;
+ public final void rule__RelaySAPoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9357:1: ( ( ( rule__RelaySAPoint__RelayAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9358:1: ( ( rule__RelaySAPoint__RelayAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9358:1: ( ( rule__RelaySAPoint__RelayAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9359:1: ( rule__RelaySAPoint__RelayAssignment_1 )
+ {
+ before(grammarAccess.getRelaySAPointAccess().getRelayAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9360:1: ( rule__RelaySAPoint__RelayAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9360:2: rule__RelaySAPoint__RelayAssignment_1
+ {
+ pushFollow(FOLLOW_rule__RelaySAPoint__RelayAssignment_1_in_rule__RelaySAPoint__Group__1__Impl18974);
+ rule__RelaySAPoint__RelayAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRelaySAPointAccess().getRelayAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RelaySAPoint__Group__1__Impl
+
+
+ // $ANTLR start rule__SPPoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9374:1: rule__SPPoint__Group__0 : rule__SPPoint__Group__0__Impl rule__SPPoint__Group__1 ;
+ public final void rule__SPPoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9378:1: ( rule__SPPoint__Group__0__Impl rule__SPPoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9379:2: rule__SPPoint__Group__0__Impl rule__SPPoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__SPPoint__Group__0__Impl_in_rule__SPPoint__Group__019008);
+ rule__SPPoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SPPoint__Group__1_in_rule__SPPoint__Group__019011);
+ rule__SPPoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__Group__0
+
+
+ // $ANTLR start rule__SPPoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9386:1: rule__SPPoint__Group__0__Impl : ( ( rule__SPPoint__RefAssignment_0 ) ) ;
+ public final void rule__SPPoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9390:1: ( ( ( rule__SPPoint__RefAssignment_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9391:1: ( ( rule__SPPoint__RefAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9391:1: ( ( rule__SPPoint__RefAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9392:1: ( rule__SPPoint__RefAssignment_0 )
+ {
+ before(grammarAccess.getSPPointAccess().getRefAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9393:1: ( rule__SPPoint__RefAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9393:2: rule__SPPoint__RefAssignment_0
+ {
+ pushFollow(FOLLOW_rule__SPPoint__RefAssignment_0_in_rule__SPPoint__Group__0__Impl19038);
+ rule__SPPoint__RefAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSPPointAccess().getRefAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__Group__0__Impl
+
+
+ // $ANTLR start rule__SPPoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9403:1: rule__SPPoint__Group__1 : rule__SPPoint__Group__1__Impl rule__SPPoint__Group__2 ;
+ public final void rule__SPPoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9407:1: ( rule__SPPoint__Group__1__Impl rule__SPPoint__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9408:2: rule__SPPoint__Group__1__Impl rule__SPPoint__Group__2
+ {
+ pushFollow(FOLLOW_rule__SPPoint__Group__1__Impl_in_rule__SPPoint__Group__119068);
+ rule__SPPoint__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SPPoint__Group__2_in_rule__SPPoint__Group__119071);
+ rule__SPPoint__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__Group__1
+
+
+ // $ANTLR start rule__SPPoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9415:1: rule__SPPoint__Group__1__Impl : ( '.' ) ;
+ public final void rule__SPPoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9419:1: ( ( '.' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9420:1: ( '.' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9420:1: ( '.' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9421:1: '.'
+ {
+ before(grammarAccess.getSPPointAccess().getFullStopKeyword_1());
+ match(input,65,FOLLOW_65_in_rule__SPPoint__Group__1__Impl19099);
+ after(grammarAccess.getSPPointAccess().getFullStopKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__Group__1__Impl
+
+
+ // $ANTLR start rule__SPPoint__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9434:1: rule__SPPoint__Group__2 : rule__SPPoint__Group__2__Impl ;
+ public final void rule__SPPoint__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9438:1: ( rule__SPPoint__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9439:2: rule__SPPoint__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__SPPoint__Group__2__Impl_in_rule__SPPoint__Group__219130);
+ rule__SPPoint__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__Group__2
+
+
+ // $ANTLR start rule__SPPoint__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9445:1: rule__SPPoint__Group__2__Impl : ( ( rule__SPPoint__ServiceAssignment_2 ) ) ;
+ public final void rule__SPPoint__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9449:1: ( ( ( rule__SPPoint__ServiceAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9450:1: ( ( rule__SPPoint__ServiceAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9450:1: ( ( rule__SPPoint__ServiceAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9451:1: ( rule__SPPoint__ServiceAssignment_2 )
+ {
+ before(grammarAccess.getSPPointAccess().getServiceAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9452:1: ( rule__SPPoint__ServiceAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9452:2: rule__SPPoint__ServiceAssignment_2
+ {
+ pushFollow(FOLLOW_rule__SPPoint__ServiceAssignment_2_in_rule__SPPoint__Group__2__Impl19157);
+ rule__SPPoint__ServiceAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSPPointAccess().getServiceAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__Group__2__Impl
+
+
+ // $ANTLR start rule__ActorRef__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9468:1: rule__ActorRef__Group__0 : rule__ActorRef__Group__0__Impl rule__ActorRef__Group__1 ;
+ public final void rule__ActorRef__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9472:1: ( rule__ActorRef__Group__0__Impl rule__ActorRef__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9473:2: rule__ActorRef__Group__0__Impl rule__ActorRef__Group__1
+ {
+ pushFollow(FOLLOW_rule__ActorRef__Group__0__Impl_in_rule__ActorRef__Group__019193);
+ rule__ActorRef__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorRef__Group__1_in_rule__ActorRef__Group__019196);
+ rule__ActorRef__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__0
+
+
+ // $ANTLR start rule__ActorRef__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9480:1: rule__ActorRef__Group__0__Impl : ( 'ActorRef' ) ;
+ public final void rule__ActorRef__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9484:1: ( ( 'ActorRef' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9485:1: ( 'ActorRef' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9485:1: ( 'ActorRef' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9486:1: 'ActorRef'
+ {
+ before(grammarAccess.getActorRefAccess().getActorRefKeyword_0());
+ match(input,72,FOLLOW_72_in_rule__ActorRef__Group__0__Impl19224);
+ after(grammarAccess.getActorRefAccess().getActorRefKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__0__Impl
+
+
+ // $ANTLR start rule__ActorRef__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9499:1: rule__ActorRef__Group__1 : rule__ActorRef__Group__1__Impl rule__ActorRef__Group__2 ;
+ public final void rule__ActorRef__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9503:1: ( rule__ActorRef__Group__1__Impl rule__ActorRef__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9504:2: rule__ActorRef__Group__1__Impl rule__ActorRef__Group__2
+ {
+ pushFollow(FOLLOW_rule__ActorRef__Group__1__Impl_in_rule__ActorRef__Group__119255);
+ rule__ActorRef__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorRef__Group__2_in_rule__ActorRef__Group__119258);
+ rule__ActorRef__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__1
+
+
+ // $ANTLR start rule__ActorRef__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9511:1: rule__ActorRef__Group__1__Impl : ( ( rule__ActorRef__NameAssignment_1 ) ) ;
+ public final void rule__ActorRef__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9515:1: ( ( ( rule__ActorRef__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9516:1: ( ( rule__ActorRef__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9516:1: ( ( rule__ActorRef__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9517:1: ( rule__ActorRef__NameAssignment_1 )
+ {
+ before(grammarAccess.getActorRefAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9518:1: ( rule__ActorRef__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9518:2: rule__ActorRef__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__ActorRef__NameAssignment_1_in_rule__ActorRef__Group__1__Impl19285);
+ rule__ActorRef__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorRefAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__1__Impl
+
+
+ // $ANTLR start rule__ActorRef__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9528:1: rule__ActorRef__Group__2 : rule__ActorRef__Group__2__Impl rule__ActorRef__Group__3 ;
+ public final void rule__ActorRef__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9532:1: ( rule__ActorRef__Group__2__Impl rule__ActorRef__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9533:2: rule__ActorRef__Group__2__Impl rule__ActorRef__Group__3
+ {
+ pushFollow(FOLLOW_rule__ActorRef__Group__2__Impl_in_rule__ActorRef__Group__219315);
+ rule__ActorRef__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ActorRef__Group__3_in_rule__ActorRef__Group__219318);
+ rule__ActorRef__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__2
+
+
+ // $ANTLR start rule__ActorRef__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9540:1: rule__ActorRef__Group__2__Impl : ( ':' ) ;
+ public final void rule__ActorRef__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9544:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9545:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9545:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9546:1: ':'
+ {
+ before(grammarAccess.getActorRefAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__ActorRef__Group__2__Impl19346);
+ after(grammarAccess.getActorRefAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__2__Impl
+
+
+ // $ANTLR start rule__ActorRef__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9559:1: rule__ActorRef__Group__3 : rule__ActorRef__Group__3__Impl ;
+ public final void rule__ActorRef__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9563:1: ( rule__ActorRef__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9564:2: rule__ActorRef__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__ActorRef__Group__3__Impl_in_rule__ActorRef__Group__319377);
+ rule__ActorRef__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__3
+
+
+ // $ANTLR start rule__ActorRef__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9570:1: rule__ActorRef__Group__3__Impl : ( ( rule__ActorRef__TypeAssignment_3 ) ) ;
+ public final void rule__ActorRef__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9574:1: ( ( ( rule__ActorRef__TypeAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9575:1: ( ( rule__ActorRef__TypeAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9575:1: ( ( rule__ActorRef__TypeAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9576:1: ( rule__ActorRef__TypeAssignment_3 )
+ {
+ before(grammarAccess.getActorRefAccess().getTypeAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9577:1: ( rule__ActorRef__TypeAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9577:2: rule__ActorRef__TypeAssignment_3
+ {
+ pushFollow(FOLLOW_rule__ActorRef__TypeAssignment_3_in_rule__ActorRef__Group__3__Impl19404);
+ rule__ActorRef__TypeAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getActorRefAccess().getTypeAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__Group__3__Impl
+
+
+ // $ANTLR start rule__StateGraph__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9595:1: rule__StateGraph__Group__0 : rule__StateGraph__Group__0__Impl rule__StateGraph__Group__1 ;
+ public final void rule__StateGraph__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9599:1: ( rule__StateGraph__Group__0__Impl rule__StateGraph__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9600:2: rule__StateGraph__Group__0__Impl rule__StateGraph__Group__1
+ {
+ pushFollow(FOLLOW_rule__StateGraph__Group__0__Impl_in_rule__StateGraph__Group__019442);
+ rule__StateGraph__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__StateGraph__Group__1_in_rule__StateGraph__Group__019445);
+ rule__StateGraph__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__Group__0
+
+
+ // $ANTLR start rule__StateGraph__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9607:1: rule__StateGraph__Group__0__Impl : ( '{' ) ;
+ public final void rule__StateGraph__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9611:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9612:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9612:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9613:1: '{'
+ {
+ before(grammarAccess.getStateGraphAccess().getLeftCurlyBracketKeyword_0());
+ match(input,24,FOLLOW_24_in_rule__StateGraph__Group__0__Impl19473);
+ after(grammarAccess.getStateGraphAccess().getLeftCurlyBracketKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__Group__0__Impl
+
+
+ // $ANTLR start rule__StateGraph__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9626:1: rule__StateGraph__Group__1 : rule__StateGraph__Group__1__Impl rule__StateGraph__Group__2 ;
+ public final void rule__StateGraph__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9630:1: ( rule__StateGraph__Group__1__Impl rule__StateGraph__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9631:2: rule__StateGraph__Group__1__Impl rule__StateGraph__Group__2
+ {
+ pushFollow(FOLLOW_rule__StateGraph__Group__1__Impl_in_rule__StateGraph__Group__119504);
+ rule__StateGraph__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__StateGraph__Group__2_in_rule__StateGraph__Group__119507);
+ rule__StateGraph__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__Group__1
+
+
+ // $ANTLR start rule__StateGraph__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9638:1: rule__StateGraph__Group__1__Impl : ( ( ( rule__StateGraph__Alternatives_1 ) ) ( ( rule__StateGraph__Alternatives_1 )* ) ) ;
+ public final void rule__StateGraph__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9642:1: ( ( ( ( rule__StateGraph__Alternatives_1 ) ) ( ( rule__StateGraph__Alternatives_1 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9643:1: ( ( ( rule__StateGraph__Alternatives_1 ) ) ( ( rule__StateGraph__Alternatives_1 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9643:1: ( ( ( rule__StateGraph__Alternatives_1 ) ) ( ( rule__StateGraph__Alternatives_1 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9644:1: ( ( rule__StateGraph__Alternatives_1 ) ) ( ( rule__StateGraph__Alternatives_1 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9644:1: ( ( rule__StateGraph__Alternatives_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9645:1: ( rule__StateGraph__Alternatives_1 )
+ {
+ before(grammarAccess.getStateGraphAccess().getAlternatives_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9646:1: ( rule__StateGraph__Alternatives_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9646:2: rule__StateGraph__Alternatives_1
+ {
+ pushFollow(FOLLOW_rule__StateGraph__Alternatives_1_in_rule__StateGraph__Group__1__Impl19536);
+ rule__StateGraph__Alternatives_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateGraphAccess().getAlternatives_1());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9649:1: ( ( rule__StateGraph__Alternatives_1 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9650:1: ( rule__StateGraph__Alternatives_1 )*
+ {
+ before(grammarAccess.getStateGraphAccess().getAlternatives_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9651:1: ( rule__StateGraph__Alternatives_1 )*
+ loop76:
+ do {
+ int alt76=2;
+ int LA76_0 = input.LA(1);
+
+ if ( (LA76_0==74||(LA76_0>=78 && LA76_0<=83)||LA76_0==99) ) {
+ alt76=1;
+ }
+
+
+ switch (alt76) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9651:2: rule__StateGraph__Alternatives_1
+ {
+ pushFollow(FOLLOW_rule__StateGraph__Alternatives_1_in_rule__StateGraph__Group__1__Impl19548);
+ rule__StateGraph__Alternatives_1();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop76;
+ }
+ } while (true);
+
+ after(grammarAccess.getStateGraphAccess().getAlternatives_1());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__Group__1__Impl
+
+
+ // $ANTLR start rule__StateGraph__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9662:1: rule__StateGraph__Group__2 : rule__StateGraph__Group__2__Impl ;
+ public final void rule__StateGraph__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9666:1: ( rule__StateGraph__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9667:2: rule__StateGraph__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__StateGraph__Group__2__Impl_in_rule__StateGraph__Group__219581);
+ rule__StateGraph__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__Group__2
+
+
+ // $ANTLR start rule__StateGraph__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9673:1: rule__StateGraph__Group__2__Impl : ( '}' ) ;
+ public final void rule__StateGraph__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9677:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9678:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9678:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9679:1: '}'
+ {
+ before(grammarAccess.getStateGraphAccess().getRightCurlyBracketKeyword_2());
+ match(input,25,FOLLOW_25_in_rule__StateGraph__Group__2__Impl19609);
+ after(grammarAccess.getStateGraphAccess().getRightCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__Group__2__Impl
+
+
+ // $ANTLR start rule__StateMachine__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9698:1: rule__StateMachine__Group__0 : rule__StateMachine__Group__0__Impl rule__StateMachine__Group__1 ;
+ public final void rule__StateMachine__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9702:1: ( rule__StateMachine__Group__0__Impl rule__StateMachine__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9703:2: rule__StateMachine__Group__0__Impl rule__StateMachine__Group__1
+ {
+ pushFollow(FOLLOW_rule__StateMachine__Group__0__Impl_in_rule__StateMachine__Group__019646);
+ rule__StateMachine__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__StateMachine__Group__1_in_rule__StateMachine__Group__019649);
+ rule__StateMachine__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__0
+
+
+ // $ANTLR start rule__StateMachine__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9710:1: rule__StateMachine__Group__0__Impl : ( 'StateMachine' ) ;
+ public final void rule__StateMachine__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9714:1: ( ( 'StateMachine' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9715:1: ( 'StateMachine' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9715:1: ( 'StateMachine' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9716:1: 'StateMachine'
+ {
+ before(grammarAccess.getStateMachineAccess().getStateMachineKeyword_0());
+ match(input,73,FOLLOW_73_in_rule__StateMachine__Group__0__Impl19677);
+ after(grammarAccess.getStateMachineAccess().getStateMachineKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__0__Impl
+
+
+ // $ANTLR start rule__StateMachine__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9729:1: rule__StateMachine__Group__1 : rule__StateMachine__Group__1__Impl rule__StateMachine__Group__2 ;
+ public final void rule__StateMachine__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9733:1: ( rule__StateMachine__Group__1__Impl rule__StateMachine__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9734:2: rule__StateMachine__Group__1__Impl rule__StateMachine__Group__2
+ {
+ pushFollow(FOLLOW_rule__StateMachine__Group__1__Impl_in_rule__StateMachine__Group__119708);
+ rule__StateMachine__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__StateMachine__Group__2_in_rule__StateMachine__Group__119711);
+ rule__StateMachine__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__1
+
+
+ // $ANTLR start rule__StateMachine__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9741:1: rule__StateMachine__Group__1__Impl : ( '{' ) ;
+ public final void rule__StateMachine__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9745:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9746:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9746:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9747:1: '{'
+ {
+ before(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_1());
+ match(input,24,FOLLOW_24_in_rule__StateMachine__Group__1__Impl19739);
+ after(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__1__Impl
+
+
+ // $ANTLR start rule__StateMachine__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9760:1: rule__StateMachine__Group__2 : rule__StateMachine__Group__2__Impl rule__StateMachine__Group__3 ;
+ public final void rule__StateMachine__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9764:1: ( rule__StateMachine__Group__2__Impl rule__StateMachine__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9765:2: rule__StateMachine__Group__2__Impl rule__StateMachine__Group__3
+ {
+ pushFollow(FOLLOW_rule__StateMachine__Group__2__Impl_in_rule__StateMachine__Group__219770);
+ rule__StateMachine__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__StateMachine__Group__3_in_rule__StateMachine__Group__219773);
+ rule__StateMachine__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__2
+
+
+ // $ANTLR start rule__StateMachine__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9772:1: rule__StateMachine__Group__2__Impl : ( ( ( rule__StateMachine__Alternatives_2 ) ) ( ( rule__StateMachine__Alternatives_2 )* ) ) ;
+ public final void rule__StateMachine__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9776:1: ( ( ( ( rule__StateMachine__Alternatives_2 ) ) ( ( rule__StateMachine__Alternatives_2 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9777:1: ( ( ( rule__StateMachine__Alternatives_2 ) ) ( ( rule__StateMachine__Alternatives_2 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9777:1: ( ( ( rule__StateMachine__Alternatives_2 ) ) ( ( rule__StateMachine__Alternatives_2 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9778:1: ( ( rule__StateMachine__Alternatives_2 ) ) ( ( rule__StateMachine__Alternatives_2 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9778:1: ( ( rule__StateMachine__Alternatives_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9779:1: ( rule__StateMachine__Alternatives_2 )
+ {
+ before(grammarAccess.getStateMachineAccess().getAlternatives_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9780:1: ( rule__StateMachine__Alternatives_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9780:2: rule__StateMachine__Alternatives_2
+ {
+ pushFollow(FOLLOW_rule__StateMachine__Alternatives_2_in_rule__StateMachine__Group__2__Impl19802);
+ rule__StateMachine__Alternatives_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getStateMachineAccess().getAlternatives_2());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9783:1: ( ( rule__StateMachine__Alternatives_2 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9784:1: ( rule__StateMachine__Alternatives_2 )*
+ {
+ before(grammarAccess.getStateMachineAccess().getAlternatives_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9785:1: ( rule__StateMachine__Alternatives_2 )*
+ loop77:
+ do {
+ int alt77=2;
+ int LA77_0 = input.LA(1);
+
+ if ( (LA77_0==74||(LA77_0>=78 && LA77_0<=83)||LA77_0==99) ) {
+ alt77=1;
+ }
+
+
+ switch (alt77) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9785:2: rule__StateMachine__Alternatives_2
+ {
+ pushFollow(FOLLOW_rule__StateMachine__Alternatives_2_in_rule__StateMachine__Group__2__Impl19814);
+ rule__StateMachine__Alternatives_2();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop77;
+ }
+ } while (true);
+
+ after(grammarAccess.getStateMachineAccess().getAlternatives_2());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__2__Impl
+
+
+ // $ANTLR start rule__StateMachine__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9796:1: rule__StateMachine__Group__3 : rule__StateMachine__Group__3__Impl ;
+ public final void rule__StateMachine__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9800:1: ( rule__StateMachine__Group__3__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9801:2: rule__StateMachine__Group__3__Impl
+ {
+ pushFollow(FOLLOW_rule__StateMachine__Group__3__Impl_in_rule__StateMachine__Group__319847);
+ rule__StateMachine__Group__3__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__3
+
+
+ // $ANTLR start rule__StateMachine__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9807:1: rule__StateMachine__Group__3__Impl : ( '}' ) ;
+ public final void rule__StateMachine__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9811:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9812:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9812:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9813:1: '}'
+ {
+ before(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_3());
+ match(input,25,FOLLOW_25_in_rule__StateMachine__Group__3__Impl19875);
+ after(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__Group__3__Impl
+
+
+ // $ANTLR start rule__BaseState__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9834:1: rule__BaseState__Group__0 : rule__BaseState__Group__0__Impl rule__BaseState__Group__1 ;
+ public final void rule__BaseState__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9838:1: ( rule__BaseState__Group__0__Impl rule__BaseState__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9839:2: rule__BaseState__Group__0__Impl rule__BaseState__Group__1
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__0__Impl_in_rule__BaseState__Group__019914);
+ rule__BaseState__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group__1_in_rule__BaseState__Group__019917);
+ rule__BaseState__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__0
+
+
+ // $ANTLR start rule__BaseState__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9846:1: rule__BaseState__Group__0__Impl : ( 'State' ) ;
+ public final void rule__BaseState__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9850:1: ( ( 'State' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9851:1: ( 'State' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9851:1: ( 'State' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9852:1: 'State'
+ {
+ before(grammarAccess.getBaseStateAccess().getStateKeyword_0());
+ match(input,74,FOLLOW_74_in_rule__BaseState__Group__0__Impl19945);
+ after(grammarAccess.getBaseStateAccess().getStateKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__0__Impl
+
+
+ // $ANTLR start rule__BaseState__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9865:1: rule__BaseState__Group__1 : rule__BaseState__Group__1__Impl rule__BaseState__Group__2 ;
+ public final void rule__BaseState__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9869:1: ( rule__BaseState__Group__1__Impl rule__BaseState__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9870:2: rule__BaseState__Group__1__Impl rule__BaseState__Group__2
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__1__Impl_in_rule__BaseState__Group__119976);
+ rule__BaseState__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group__2_in_rule__BaseState__Group__119979);
+ rule__BaseState__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__1
+
+
+ // $ANTLR start rule__BaseState__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9877:1: rule__BaseState__Group__1__Impl : ( ( rule__BaseState__NameAssignment_1 ) ) ;
+ public final void rule__BaseState__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9881:1: ( ( ( rule__BaseState__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9882:1: ( ( rule__BaseState__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9882:1: ( ( rule__BaseState__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9883:1: ( rule__BaseState__NameAssignment_1 )
+ {
+ before(grammarAccess.getBaseStateAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9884:1: ( rule__BaseState__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9884:2: rule__BaseState__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__BaseState__NameAssignment_1_in_rule__BaseState__Group__1__Impl20006);
+ rule__BaseState__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__1__Impl
+
+
+ // $ANTLR start rule__BaseState__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9894:1: rule__BaseState__Group__2 : rule__BaseState__Group__2__Impl rule__BaseState__Group__3 ;
+ public final void rule__BaseState__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9898:1: ( rule__BaseState__Group__2__Impl rule__BaseState__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9899:2: rule__BaseState__Group__2__Impl rule__BaseState__Group__3
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__2__Impl_in_rule__BaseState__Group__220036);
+ rule__BaseState__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group__3_in_rule__BaseState__Group__220039);
+ rule__BaseState__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__2
+
+
+ // $ANTLR start rule__BaseState__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9906:1: rule__BaseState__Group__2__Impl : ( '{' ) ;
+ public final void rule__BaseState__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9910:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9911:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9911:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9912:1: '{'
+ {
+ before(grammarAccess.getBaseStateAccess().getLeftCurlyBracketKeyword_2());
+ match(input,24,FOLLOW_24_in_rule__BaseState__Group__2__Impl20067);
+ after(grammarAccess.getBaseStateAccess().getLeftCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__2__Impl
+
+
+ // $ANTLR start rule__BaseState__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9925:1: rule__BaseState__Group__3 : rule__BaseState__Group__3__Impl rule__BaseState__Group__4 ;
+ public final void rule__BaseState__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9929:1: ( rule__BaseState__Group__3__Impl rule__BaseState__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9930:2: rule__BaseState__Group__3__Impl rule__BaseState__Group__4
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__3__Impl_in_rule__BaseState__Group__320098);
+ rule__BaseState__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group__4_in_rule__BaseState__Group__320101);
+ rule__BaseState__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__3
+
+
+ // $ANTLR start rule__BaseState__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9937:1: rule__BaseState__Group__3__Impl : ( ( rule__BaseState__Group_3__0 )? ) ;
+ public final void rule__BaseState__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9941:1: ( ( ( rule__BaseState__Group_3__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9942:1: ( ( rule__BaseState__Group_3__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9942:1: ( ( rule__BaseState__Group_3__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9943:1: ( rule__BaseState__Group_3__0 )?
+ {
+ before(grammarAccess.getBaseStateAccess().getGroup_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9944:1: ( rule__BaseState__Group_3__0 )?
+ int alt78=2;
+ int LA78_0 = input.LA(1);
+
+ if ( (LA78_0==75) ) {
+ alt78=1;
+ }
+ switch (alt78) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9944:2: rule__BaseState__Group_3__0
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_3__0_in_rule__BaseState__Group__3__Impl20128);
+ rule__BaseState__Group_3__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getGroup_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__3__Impl
+
+
+ // $ANTLR start rule__BaseState__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9954:1: rule__BaseState__Group__4 : rule__BaseState__Group__4__Impl rule__BaseState__Group__5 ;
+ public final void rule__BaseState__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9958:1: ( rule__BaseState__Group__4__Impl rule__BaseState__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9959:2: rule__BaseState__Group__4__Impl rule__BaseState__Group__5
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__4__Impl_in_rule__BaseState__Group__420159);
+ rule__BaseState__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group__5_in_rule__BaseState__Group__420162);
+ rule__BaseState__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__4
+
+
+ // $ANTLR start rule__BaseState__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9966:1: rule__BaseState__Group__4__Impl : ( ( rule__BaseState__Group_4__0 )? ) ;
+ public final void rule__BaseState__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9970:1: ( ( ( rule__BaseState__Group_4__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9971:1: ( ( rule__BaseState__Group_4__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9971:1: ( ( rule__BaseState__Group_4__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9972:1: ( rule__BaseState__Group_4__0 )?
+ {
+ before(grammarAccess.getBaseStateAccess().getGroup_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9973:1: ( rule__BaseState__Group_4__0 )?
+ int alt79=2;
+ int LA79_0 = input.LA(1);
+
+ if ( (LA79_0==76) ) {
+ alt79=1;
+ }
+ switch (alt79) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9973:2: rule__BaseState__Group_4__0
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_4__0_in_rule__BaseState__Group__4__Impl20189);
+ rule__BaseState__Group_4__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getGroup_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__4__Impl
+
+
+ // $ANTLR start rule__BaseState__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9983:1: rule__BaseState__Group__5 : rule__BaseState__Group__5__Impl rule__BaseState__Group__6 ;
+ public final void rule__BaseState__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9987:1: ( rule__BaseState__Group__5__Impl rule__BaseState__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9988:2: rule__BaseState__Group__5__Impl rule__BaseState__Group__6
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__5__Impl_in_rule__BaseState__Group__520220);
+ rule__BaseState__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group__6_in_rule__BaseState__Group__520223);
+ rule__BaseState__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__5
+
+
+ // $ANTLR start rule__BaseState__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9995:1: rule__BaseState__Group__5__Impl : ( ( rule__BaseState__Group_5__0 )? ) ;
+ public final void rule__BaseState__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:9999:1: ( ( ( rule__BaseState__Group_5__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10000:1: ( ( rule__BaseState__Group_5__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10000:1: ( ( rule__BaseState__Group_5__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10001:1: ( rule__BaseState__Group_5__0 )?
+ {
+ before(grammarAccess.getBaseStateAccess().getGroup_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10002:1: ( rule__BaseState__Group_5__0 )?
+ int alt80=2;
+ int LA80_0 = input.LA(1);
+
+ if ( (LA80_0==77) ) {
+ alt80=1;
+ }
+ switch (alt80) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10002:2: rule__BaseState__Group_5__0
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_5__0_in_rule__BaseState__Group__5__Impl20250);
+ rule__BaseState__Group_5__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getGroup_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__5__Impl
+
+
+ // $ANTLR start rule__BaseState__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10012:1: rule__BaseState__Group__6 : rule__BaseState__Group__6__Impl ;
+ public final void rule__BaseState__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10016:1: ( rule__BaseState__Group__6__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10017:2: rule__BaseState__Group__6__Impl
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group__6__Impl_in_rule__BaseState__Group__620281);
+ rule__BaseState__Group__6__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__6
+
+
+ // $ANTLR start rule__BaseState__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10023:1: rule__BaseState__Group__6__Impl : ( '}' ) ;
+ public final void rule__BaseState__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10027:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10028:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10028:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10029:1: '}'
+ {
+ before(grammarAccess.getBaseStateAccess().getRightCurlyBracketKeyword_6());
+ match(input,25,FOLLOW_25_in_rule__BaseState__Group__6__Impl20309);
+ after(grammarAccess.getBaseStateAccess().getRightCurlyBracketKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group__6__Impl
+
+
+ // $ANTLR start rule__BaseState__Group_3__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10056:1: rule__BaseState__Group_3__0 : rule__BaseState__Group_3__0__Impl rule__BaseState__Group_3__1 ;
+ public final void rule__BaseState__Group_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10060:1: ( rule__BaseState__Group_3__0__Impl rule__BaseState__Group_3__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10061:2: rule__BaseState__Group_3__0__Impl rule__BaseState__Group_3__1
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_3__0__Impl_in_rule__BaseState__Group_3__020354);
+ rule__BaseState__Group_3__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group_3__1_in_rule__BaseState__Group_3__020357);
+ rule__BaseState__Group_3__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_3__0
+
+
+ // $ANTLR start rule__BaseState__Group_3__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10068:1: rule__BaseState__Group_3__0__Impl : ( 'entry' ) ;
+ public final void rule__BaseState__Group_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10072:1: ( ( 'entry' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10073:1: ( 'entry' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10073:1: ( 'entry' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10074:1: 'entry'
+ {
+ before(grammarAccess.getBaseStateAccess().getEntryKeyword_3_0());
+ match(input,75,FOLLOW_75_in_rule__BaseState__Group_3__0__Impl20385);
+ after(grammarAccess.getBaseStateAccess().getEntryKeyword_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_3__0__Impl
+
+
+ // $ANTLR start rule__BaseState__Group_3__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10087:1: rule__BaseState__Group_3__1 : rule__BaseState__Group_3__1__Impl ;
+ public final void rule__BaseState__Group_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10091:1: ( rule__BaseState__Group_3__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10092:2: rule__BaseState__Group_3__1__Impl
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_3__1__Impl_in_rule__BaseState__Group_3__120416);
+ rule__BaseState__Group_3__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_3__1
+
+
+ // $ANTLR start rule__BaseState__Group_3__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10098:1: rule__BaseState__Group_3__1__Impl : ( ( rule__BaseState__EntryCodeAssignment_3_1 ) ) ;
+ public final void rule__BaseState__Group_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10102:1: ( ( ( rule__BaseState__EntryCodeAssignment_3_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10103:1: ( ( rule__BaseState__EntryCodeAssignment_3_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10103:1: ( ( rule__BaseState__EntryCodeAssignment_3_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10104:1: ( rule__BaseState__EntryCodeAssignment_3_1 )
+ {
+ before(grammarAccess.getBaseStateAccess().getEntryCodeAssignment_3_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10105:1: ( rule__BaseState__EntryCodeAssignment_3_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10105:2: rule__BaseState__EntryCodeAssignment_3_1
+ {
+ pushFollow(FOLLOW_rule__BaseState__EntryCodeAssignment_3_1_in_rule__BaseState__Group_3__1__Impl20443);
+ rule__BaseState__EntryCodeAssignment_3_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getEntryCodeAssignment_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_3__1__Impl
+
+
+ // $ANTLR start rule__BaseState__Group_4__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10119:1: rule__BaseState__Group_4__0 : rule__BaseState__Group_4__0__Impl rule__BaseState__Group_4__1 ;
+ public final void rule__BaseState__Group_4__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10123:1: ( rule__BaseState__Group_4__0__Impl rule__BaseState__Group_4__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10124:2: rule__BaseState__Group_4__0__Impl rule__BaseState__Group_4__1
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_4__0__Impl_in_rule__BaseState__Group_4__020477);
+ rule__BaseState__Group_4__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group_4__1_in_rule__BaseState__Group_4__020480);
+ rule__BaseState__Group_4__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_4__0
+
+
+ // $ANTLR start rule__BaseState__Group_4__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10131:1: rule__BaseState__Group_4__0__Impl : ( 'exit' ) ;
+ public final void rule__BaseState__Group_4__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10135:1: ( ( 'exit' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10136:1: ( 'exit' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10136:1: ( 'exit' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10137:1: 'exit'
+ {
+ before(grammarAccess.getBaseStateAccess().getExitKeyword_4_0());
+ match(input,76,FOLLOW_76_in_rule__BaseState__Group_4__0__Impl20508);
+ after(grammarAccess.getBaseStateAccess().getExitKeyword_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_4__0__Impl
+
+
+ // $ANTLR start rule__BaseState__Group_4__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10150:1: rule__BaseState__Group_4__1 : rule__BaseState__Group_4__1__Impl ;
+ public final void rule__BaseState__Group_4__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10154:1: ( rule__BaseState__Group_4__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10155:2: rule__BaseState__Group_4__1__Impl
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_4__1__Impl_in_rule__BaseState__Group_4__120539);
+ rule__BaseState__Group_4__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_4__1
+
+
+ // $ANTLR start rule__BaseState__Group_4__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10161:1: rule__BaseState__Group_4__1__Impl : ( ( rule__BaseState__ExitCodeAssignment_4_1 ) ) ;
+ public final void rule__BaseState__Group_4__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10165:1: ( ( ( rule__BaseState__ExitCodeAssignment_4_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10166:1: ( ( rule__BaseState__ExitCodeAssignment_4_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10166:1: ( ( rule__BaseState__ExitCodeAssignment_4_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10167:1: ( rule__BaseState__ExitCodeAssignment_4_1 )
+ {
+ before(grammarAccess.getBaseStateAccess().getExitCodeAssignment_4_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10168:1: ( rule__BaseState__ExitCodeAssignment_4_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10168:2: rule__BaseState__ExitCodeAssignment_4_1
+ {
+ pushFollow(FOLLOW_rule__BaseState__ExitCodeAssignment_4_1_in_rule__BaseState__Group_4__1__Impl20566);
+ rule__BaseState__ExitCodeAssignment_4_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getExitCodeAssignment_4_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_4__1__Impl
+
+
+ // $ANTLR start rule__BaseState__Group_5__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10182:1: rule__BaseState__Group_5__0 : rule__BaseState__Group_5__0__Impl rule__BaseState__Group_5__1 ;
+ public final void rule__BaseState__Group_5__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10186:1: ( rule__BaseState__Group_5__0__Impl rule__BaseState__Group_5__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10187:2: rule__BaseState__Group_5__0__Impl rule__BaseState__Group_5__1
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_5__0__Impl_in_rule__BaseState__Group_5__020600);
+ rule__BaseState__Group_5__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__BaseState__Group_5__1_in_rule__BaseState__Group_5__020603);
+ rule__BaseState__Group_5__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_5__0
+
+
+ // $ANTLR start rule__BaseState__Group_5__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10194:1: rule__BaseState__Group_5__0__Impl : ( 'subgraph' ) ;
+ public final void rule__BaseState__Group_5__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10198:1: ( ( 'subgraph' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10199:1: ( 'subgraph' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10199:1: ( 'subgraph' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10200:1: 'subgraph'
+ {
+ before(grammarAccess.getBaseStateAccess().getSubgraphKeyword_5_0());
+ match(input,77,FOLLOW_77_in_rule__BaseState__Group_5__0__Impl20631);
+ after(grammarAccess.getBaseStateAccess().getSubgraphKeyword_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_5__0__Impl
+
+
+ // $ANTLR start rule__BaseState__Group_5__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10213:1: rule__BaseState__Group_5__1 : rule__BaseState__Group_5__1__Impl ;
+ public final void rule__BaseState__Group_5__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10217:1: ( rule__BaseState__Group_5__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10218:2: rule__BaseState__Group_5__1__Impl
+ {
+ pushFollow(FOLLOW_rule__BaseState__Group_5__1__Impl_in_rule__BaseState__Group_5__120662);
+ rule__BaseState__Group_5__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_5__1
+
+
+ // $ANTLR start rule__BaseState__Group_5__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10224:1: rule__BaseState__Group_5__1__Impl : ( ( rule__BaseState__SubgraphAssignment_5_1 ) ) ;
+ public final void rule__BaseState__Group_5__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10228:1: ( ( ( rule__BaseState__SubgraphAssignment_5_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10229:1: ( ( rule__BaseState__SubgraphAssignment_5_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10229:1: ( ( rule__BaseState__SubgraphAssignment_5_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10230:1: ( rule__BaseState__SubgraphAssignment_5_1 )
+ {
+ before(grammarAccess.getBaseStateAccess().getSubgraphAssignment_5_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10231:1: ( rule__BaseState__SubgraphAssignment_5_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10231:2: rule__BaseState__SubgraphAssignment_5_1
+ {
+ pushFollow(FOLLOW_rule__BaseState__SubgraphAssignment_5_1_in_rule__BaseState__Group_5__1__Impl20689);
+ rule__BaseState__SubgraphAssignment_5_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getBaseStateAccess().getSubgraphAssignment_5_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__Group_5__1__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10245:1: rule__RefinedState__Group__0 : rule__RefinedState__Group__0__Impl rule__RefinedState__Group__1 ;
+ public final void rule__RefinedState__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10249:1: ( rule__RefinedState__Group__0__Impl rule__RefinedState__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10250:2: rule__RefinedState__Group__0__Impl rule__RefinedState__Group__1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__0__Impl_in_rule__RefinedState__Group__020723);
+ rule__RefinedState__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group__1_in_rule__RefinedState__Group__020726);
+ rule__RefinedState__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__0
+
+
+ // $ANTLR start rule__RefinedState__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10257:1: rule__RefinedState__Group__0__Impl : ( 'RefinedState' ) ;
+ public final void rule__RefinedState__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10261:1: ( ( 'RefinedState' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10262:1: ( 'RefinedState' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10262:1: ( 'RefinedState' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10263:1: 'RefinedState'
+ {
+ before(grammarAccess.getRefinedStateAccess().getRefinedStateKeyword_0());
+ match(input,78,FOLLOW_78_in_rule__RefinedState__Group__0__Impl20754);
+ after(grammarAccess.getRefinedStateAccess().getRefinedStateKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__0__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10276:1: rule__RefinedState__Group__1 : rule__RefinedState__Group__1__Impl rule__RefinedState__Group__2 ;
+ public final void rule__RefinedState__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10280:1: ( rule__RefinedState__Group__1__Impl rule__RefinedState__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10281:2: rule__RefinedState__Group__1__Impl rule__RefinedState__Group__2
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__1__Impl_in_rule__RefinedState__Group__120785);
+ rule__RefinedState__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group__2_in_rule__RefinedState__Group__120788);
+ rule__RefinedState__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__1
+
+
+ // $ANTLR start rule__RefinedState__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10288:1: rule__RefinedState__Group__1__Impl : ( ( rule__RefinedState__BaseAssignment_1 ) ) ;
+ public final void rule__RefinedState__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10292:1: ( ( ( rule__RefinedState__BaseAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10293:1: ( ( rule__RefinedState__BaseAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10293:1: ( ( rule__RefinedState__BaseAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10294:1: ( rule__RefinedState__BaseAssignment_1 )
+ {
+ before(grammarAccess.getRefinedStateAccess().getBaseAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10295:1: ( rule__RefinedState__BaseAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10295:2: rule__RefinedState__BaseAssignment_1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__BaseAssignment_1_in_rule__RefinedState__Group__1__Impl20815);
+ rule__RefinedState__BaseAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getBaseAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__1__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10305:1: rule__RefinedState__Group__2 : rule__RefinedState__Group__2__Impl rule__RefinedState__Group__3 ;
+ public final void rule__RefinedState__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10309:1: ( rule__RefinedState__Group__2__Impl rule__RefinedState__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10310:2: rule__RefinedState__Group__2__Impl rule__RefinedState__Group__3
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__2__Impl_in_rule__RefinedState__Group__220845);
+ rule__RefinedState__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group__3_in_rule__RefinedState__Group__220848);
+ rule__RefinedState__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__2
+
+
+ // $ANTLR start rule__RefinedState__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10317:1: rule__RefinedState__Group__2__Impl : ( '{' ) ;
+ public final void rule__RefinedState__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10321:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10322:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10322:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10323:1: '{'
+ {
+ before(grammarAccess.getRefinedStateAccess().getLeftCurlyBracketKeyword_2());
+ match(input,24,FOLLOW_24_in_rule__RefinedState__Group__2__Impl20876);
+ after(grammarAccess.getRefinedStateAccess().getLeftCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__2__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10336:1: rule__RefinedState__Group__3 : rule__RefinedState__Group__3__Impl rule__RefinedState__Group__4 ;
+ public final void rule__RefinedState__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10340:1: ( rule__RefinedState__Group__3__Impl rule__RefinedState__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10341:2: rule__RefinedState__Group__3__Impl rule__RefinedState__Group__4
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__3__Impl_in_rule__RefinedState__Group__320907);
+ rule__RefinedState__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group__4_in_rule__RefinedState__Group__320910);
+ rule__RefinedState__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__3
+
+
+ // $ANTLR start rule__RefinedState__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10348:1: rule__RefinedState__Group__3__Impl : ( ( rule__RefinedState__Group_3__0 )? ) ;
+ public final void rule__RefinedState__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10352:1: ( ( ( rule__RefinedState__Group_3__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10353:1: ( ( rule__RefinedState__Group_3__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10353:1: ( ( rule__RefinedState__Group_3__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10354:1: ( rule__RefinedState__Group_3__0 )?
+ {
+ before(grammarAccess.getRefinedStateAccess().getGroup_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10355:1: ( rule__RefinedState__Group_3__0 )?
+ int alt81=2;
+ int LA81_0 = input.LA(1);
+
+ if ( (LA81_0==75) ) {
+ alt81=1;
+ }
+ switch (alt81) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10355:2: rule__RefinedState__Group_3__0
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_3__0_in_rule__RefinedState__Group__3__Impl20937);
+ rule__RefinedState__Group_3__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getGroup_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__3__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10365:1: rule__RefinedState__Group__4 : rule__RefinedState__Group__4__Impl rule__RefinedState__Group__5 ;
+ public final void rule__RefinedState__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10369:1: ( rule__RefinedState__Group__4__Impl rule__RefinedState__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10370:2: rule__RefinedState__Group__4__Impl rule__RefinedState__Group__5
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__4__Impl_in_rule__RefinedState__Group__420968);
+ rule__RefinedState__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group__5_in_rule__RefinedState__Group__420971);
+ rule__RefinedState__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__4
+
+
+ // $ANTLR start rule__RefinedState__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10377:1: rule__RefinedState__Group__4__Impl : ( ( rule__RefinedState__Group_4__0 )? ) ;
+ public final void rule__RefinedState__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10381:1: ( ( ( rule__RefinedState__Group_4__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10382:1: ( ( rule__RefinedState__Group_4__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10382:1: ( ( rule__RefinedState__Group_4__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10383:1: ( rule__RefinedState__Group_4__0 )?
+ {
+ before(grammarAccess.getRefinedStateAccess().getGroup_4());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10384:1: ( rule__RefinedState__Group_4__0 )?
+ int alt82=2;
+ int LA82_0 = input.LA(1);
+
+ if ( (LA82_0==76) ) {
+ alt82=1;
+ }
+ switch (alt82) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10384:2: rule__RefinedState__Group_4__0
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_4__0_in_rule__RefinedState__Group__4__Impl20998);
+ rule__RefinedState__Group_4__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getGroup_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__4__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10394:1: rule__RefinedState__Group__5 : rule__RefinedState__Group__5__Impl rule__RefinedState__Group__6 ;
+ public final void rule__RefinedState__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10398:1: ( rule__RefinedState__Group__5__Impl rule__RefinedState__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10399:2: rule__RefinedState__Group__5__Impl rule__RefinedState__Group__6
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__5__Impl_in_rule__RefinedState__Group__521029);
+ rule__RefinedState__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group__6_in_rule__RefinedState__Group__521032);
+ rule__RefinedState__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__5
+
+
+ // $ANTLR start rule__RefinedState__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10406:1: rule__RefinedState__Group__5__Impl : ( ( rule__RefinedState__Group_5__0 )? ) ;
+ public final void rule__RefinedState__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10410:1: ( ( ( rule__RefinedState__Group_5__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10411:1: ( ( rule__RefinedState__Group_5__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10411:1: ( ( rule__RefinedState__Group_5__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10412:1: ( rule__RefinedState__Group_5__0 )?
+ {
+ before(grammarAccess.getRefinedStateAccess().getGroup_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10413:1: ( rule__RefinedState__Group_5__0 )?
+ int alt83=2;
+ int LA83_0 = input.LA(1);
+
+ if ( (LA83_0==77) ) {
+ alt83=1;
+ }
+ switch (alt83) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10413:2: rule__RefinedState__Group_5__0
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_5__0_in_rule__RefinedState__Group__5__Impl21059);
+ rule__RefinedState__Group_5__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getGroup_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__5__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10423:1: rule__RefinedState__Group__6 : rule__RefinedState__Group__6__Impl ;
+ public final void rule__RefinedState__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10427:1: ( rule__RefinedState__Group__6__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10428:2: rule__RefinedState__Group__6__Impl
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group__6__Impl_in_rule__RefinedState__Group__621090);
+ rule__RefinedState__Group__6__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__6
+
+
+ // $ANTLR start rule__RefinedState__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10434:1: rule__RefinedState__Group__6__Impl : ( '}' ) ;
+ public final void rule__RefinedState__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10438:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10439:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10439:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10440:1: '}'
+ {
+ before(grammarAccess.getRefinedStateAccess().getRightCurlyBracketKeyword_6());
+ match(input,25,FOLLOW_25_in_rule__RefinedState__Group__6__Impl21118);
+ after(grammarAccess.getRefinedStateAccess().getRightCurlyBracketKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group__6__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group_3__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10467:1: rule__RefinedState__Group_3__0 : rule__RefinedState__Group_3__0__Impl rule__RefinedState__Group_3__1 ;
+ public final void rule__RefinedState__Group_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10471:1: ( rule__RefinedState__Group_3__0__Impl rule__RefinedState__Group_3__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10472:2: rule__RefinedState__Group_3__0__Impl rule__RefinedState__Group_3__1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_3__0__Impl_in_rule__RefinedState__Group_3__021163);
+ rule__RefinedState__Group_3__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group_3__1_in_rule__RefinedState__Group_3__021166);
+ rule__RefinedState__Group_3__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_3__0
+
+
+ // $ANTLR start rule__RefinedState__Group_3__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10479:1: rule__RefinedState__Group_3__0__Impl : ( 'entry' ) ;
+ public final void rule__RefinedState__Group_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10483:1: ( ( 'entry' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10484:1: ( 'entry' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10484:1: ( 'entry' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10485:1: 'entry'
+ {
+ before(grammarAccess.getRefinedStateAccess().getEntryKeyword_3_0());
+ match(input,75,FOLLOW_75_in_rule__RefinedState__Group_3__0__Impl21194);
+ after(grammarAccess.getRefinedStateAccess().getEntryKeyword_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_3__0__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group_3__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10498:1: rule__RefinedState__Group_3__1 : rule__RefinedState__Group_3__1__Impl ;
+ public final void rule__RefinedState__Group_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10502:1: ( rule__RefinedState__Group_3__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10503:2: rule__RefinedState__Group_3__1__Impl
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_3__1__Impl_in_rule__RefinedState__Group_3__121225);
+ rule__RefinedState__Group_3__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_3__1
+
+
+ // $ANTLR start rule__RefinedState__Group_3__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10509:1: rule__RefinedState__Group_3__1__Impl : ( ( rule__RefinedState__EntryCodeAssignment_3_1 ) ) ;
+ public final void rule__RefinedState__Group_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10513:1: ( ( ( rule__RefinedState__EntryCodeAssignment_3_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10514:1: ( ( rule__RefinedState__EntryCodeAssignment_3_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10514:1: ( ( rule__RefinedState__EntryCodeAssignment_3_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10515:1: ( rule__RefinedState__EntryCodeAssignment_3_1 )
+ {
+ before(grammarAccess.getRefinedStateAccess().getEntryCodeAssignment_3_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10516:1: ( rule__RefinedState__EntryCodeAssignment_3_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10516:2: rule__RefinedState__EntryCodeAssignment_3_1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__EntryCodeAssignment_3_1_in_rule__RefinedState__Group_3__1__Impl21252);
+ rule__RefinedState__EntryCodeAssignment_3_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getEntryCodeAssignment_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_3__1__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group_4__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10530:1: rule__RefinedState__Group_4__0 : rule__RefinedState__Group_4__0__Impl rule__RefinedState__Group_4__1 ;
+ public final void rule__RefinedState__Group_4__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10534:1: ( rule__RefinedState__Group_4__0__Impl rule__RefinedState__Group_4__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10535:2: rule__RefinedState__Group_4__0__Impl rule__RefinedState__Group_4__1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_4__0__Impl_in_rule__RefinedState__Group_4__021286);
+ rule__RefinedState__Group_4__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group_4__1_in_rule__RefinedState__Group_4__021289);
+ rule__RefinedState__Group_4__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_4__0
+
+
+ // $ANTLR start rule__RefinedState__Group_4__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10542:1: rule__RefinedState__Group_4__0__Impl : ( 'exit' ) ;
+ public final void rule__RefinedState__Group_4__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10546:1: ( ( 'exit' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10547:1: ( 'exit' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10547:1: ( 'exit' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10548:1: 'exit'
+ {
+ before(grammarAccess.getRefinedStateAccess().getExitKeyword_4_0());
+ match(input,76,FOLLOW_76_in_rule__RefinedState__Group_4__0__Impl21317);
+ after(grammarAccess.getRefinedStateAccess().getExitKeyword_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_4__0__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group_4__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10561:1: rule__RefinedState__Group_4__1 : rule__RefinedState__Group_4__1__Impl ;
+ public final void rule__RefinedState__Group_4__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10565:1: ( rule__RefinedState__Group_4__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10566:2: rule__RefinedState__Group_4__1__Impl
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_4__1__Impl_in_rule__RefinedState__Group_4__121348);
+ rule__RefinedState__Group_4__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_4__1
+
+
+ // $ANTLR start rule__RefinedState__Group_4__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10572:1: rule__RefinedState__Group_4__1__Impl : ( ( rule__RefinedState__ExitCodeAssignment_4_1 ) ) ;
+ public final void rule__RefinedState__Group_4__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10576:1: ( ( ( rule__RefinedState__ExitCodeAssignment_4_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10577:1: ( ( rule__RefinedState__ExitCodeAssignment_4_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10577:1: ( ( rule__RefinedState__ExitCodeAssignment_4_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10578:1: ( rule__RefinedState__ExitCodeAssignment_4_1 )
+ {
+ before(grammarAccess.getRefinedStateAccess().getExitCodeAssignment_4_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10579:1: ( rule__RefinedState__ExitCodeAssignment_4_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10579:2: rule__RefinedState__ExitCodeAssignment_4_1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__ExitCodeAssignment_4_1_in_rule__RefinedState__Group_4__1__Impl21375);
+ rule__RefinedState__ExitCodeAssignment_4_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getExitCodeAssignment_4_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_4__1__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group_5__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10593:1: rule__RefinedState__Group_5__0 : rule__RefinedState__Group_5__0__Impl rule__RefinedState__Group_5__1 ;
+ public final void rule__RefinedState__Group_5__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10597:1: ( rule__RefinedState__Group_5__0__Impl rule__RefinedState__Group_5__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10598:2: rule__RefinedState__Group_5__0__Impl rule__RefinedState__Group_5__1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_5__0__Impl_in_rule__RefinedState__Group_5__021409);
+ rule__RefinedState__Group_5__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__RefinedState__Group_5__1_in_rule__RefinedState__Group_5__021412);
+ rule__RefinedState__Group_5__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_5__0
+
+
+ // $ANTLR start rule__RefinedState__Group_5__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10605:1: rule__RefinedState__Group_5__0__Impl : ( 'subgraph' ) ;
+ public final void rule__RefinedState__Group_5__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10609:1: ( ( 'subgraph' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10610:1: ( 'subgraph' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10610:1: ( 'subgraph' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10611:1: 'subgraph'
+ {
+ before(grammarAccess.getRefinedStateAccess().getSubgraphKeyword_5_0());
+ match(input,77,FOLLOW_77_in_rule__RefinedState__Group_5__0__Impl21440);
+ after(grammarAccess.getRefinedStateAccess().getSubgraphKeyword_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_5__0__Impl
+
+
+ // $ANTLR start rule__RefinedState__Group_5__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10624:1: rule__RefinedState__Group_5__1 : rule__RefinedState__Group_5__1__Impl ;
+ public final void rule__RefinedState__Group_5__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10628:1: ( rule__RefinedState__Group_5__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10629:2: rule__RefinedState__Group_5__1__Impl
+ {
+ pushFollow(FOLLOW_rule__RefinedState__Group_5__1__Impl_in_rule__RefinedState__Group_5__121471);
+ rule__RefinedState__Group_5__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_5__1
+
+
+ // $ANTLR start rule__RefinedState__Group_5__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10635:1: rule__RefinedState__Group_5__1__Impl : ( ( rule__RefinedState__SubgraphAssignment_5_1 ) ) ;
+ public final void rule__RefinedState__Group_5__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10639:1: ( ( ( rule__RefinedState__SubgraphAssignment_5_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10640:1: ( ( rule__RefinedState__SubgraphAssignment_5_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10640:1: ( ( rule__RefinedState__SubgraphAssignment_5_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10641:1: ( rule__RefinedState__SubgraphAssignment_5_1 )
+ {
+ before(grammarAccess.getRefinedStateAccess().getSubgraphAssignment_5_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10642:1: ( rule__RefinedState__SubgraphAssignment_5_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10642:2: rule__RefinedState__SubgraphAssignment_5_1
+ {
+ pushFollow(FOLLOW_rule__RefinedState__SubgraphAssignment_5_1_in_rule__RefinedState__Group_5__1__Impl21498);
+ rule__RefinedState__SubgraphAssignment_5_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getSubgraphAssignment_5_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__Group_5__1__Impl
+
+
+ // $ANTLR start rule__DetailCode__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10656:1: rule__DetailCode__Group__0 : rule__DetailCode__Group__0__Impl rule__DetailCode__Group__1 ;
+ public final void rule__DetailCode__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10660:1: ( rule__DetailCode__Group__0__Impl rule__DetailCode__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10661:2: rule__DetailCode__Group__0__Impl rule__DetailCode__Group__1
+ {
+ pushFollow(FOLLOW_rule__DetailCode__Group__0__Impl_in_rule__DetailCode__Group__021532);
+ rule__DetailCode__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DetailCode__Group__1_in_rule__DetailCode__Group__021535);
+ rule__DetailCode__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DetailCode__Group__0
+
+
+ // $ANTLR start rule__DetailCode__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10668:1: rule__DetailCode__Group__0__Impl : ( '{' ) ;
+ public final void rule__DetailCode__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10672:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10673:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10673:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10674:1: '{'
+ {
+ before(grammarAccess.getDetailCodeAccess().getLeftCurlyBracketKeyword_0());
+ match(input,24,FOLLOW_24_in_rule__DetailCode__Group__0__Impl21563);
+ after(grammarAccess.getDetailCodeAccess().getLeftCurlyBracketKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DetailCode__Group__0__Impl
+
+
+ // $ANTLR start rule__DetailCode__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10687:1: rule__DetailCode__Group__1 : rule__DetailCode__Group__1__Impl rule__DetailCode__Group__2 ;
+ public final void rule__DetailCode__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10691:1: ( rule__DetailCode__Group__1__Impl rule__DetailCode__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10692:2: rule__DetailCode__Group__1__Impl rule__DetailCode__Group__2
+ {
+ pushFollow(FOLLOW_rule__DetailCode__Group__1__Impl_in_rule__DetailCode__Group__121594);
+ rule__DetailCode__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__DetailCode__Group__2_in_rule__DetailCode__Group__121597);
+ rule__DetailCode__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DetailCode__Group__1
+
+
+ // $ANTLR start rule__DetailCode__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10699:1: rule__DetailCode__Group__1__Impl : ( ( ( rule__DetailCode__CommandsAssignment_1 ) ) ( ( rule__DetailCode__CommandsAssignment_1 )* ) ) ;
+ public final void rule__DetailCode__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10703:1: ( ( ( ( rule__DetailCode__CommandsAssignment_1 ) ) ( ( rule__DetailCode__CommandsAssignment_1 )* ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10704:1: ( ( ( rule__DetailCode__CommandsAssignment_1 ) ) ( ( rule__DetailCode__CommandsAssignment_1 )* ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10704:1: ( ( ( rule__DetailCode__CommandsAssignment_1 ) ) ( ( rule__DetailCode__CommandsAssignment_1 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10705:1: ( ( rule__DetailCode__CommandsAssignment_1 ) ) ( ( rule__DetailCode__CommandsAssignment_1 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10705:1: ( ( rule__DetailCode__CommandsAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10706:1: ( rule__DetailCode__CommandsAssignment_1 )
+ {
+ before(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10707:1: ( rule__DetailCode__CommandsAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10707:2: rule__DetailCode__CommandsAssignment_1
+ {
+ pushFollow(FOLLOW_rule__DetailCode__CommandsAssignment_1_in_rule__DetailCode__Group__1__Impl21626);
+ rule__DetailCode__CommandsAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1());
+
+ }
+
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10710:1: ( ( rule__DetailCode__CommandsAssignment_1 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10711:1: ( rule__DetailCode__CommandsAssignment_1 )*
+ {
+ before(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10712:1: ( rule__DetailCode__CommandsAssignment_1 )*
+ loop84:
+ do {
+ int alt84=2;
+ int LA84_0 = input.LA(1);
+
+ if ( (LA84_0==RULE_STRING) ) {
+ alt84=1;
+ }
+
+
+ switch (alt84) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10712:2: rule__DetailCode__CommandsAssignment_1
+ {
+ pushFollow(FOLLOW_rule__DetailCode__CommandsAssignment_1_in_rule__DetailCode__Group__1__Impl21638);
+ rule__DetailCode__CommandsAssignment_1();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop84;
+ }
+ } while (true);
+
+ after(grammarAccess.getDetailCodeAccess().getCommandsAssignment_1());
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DetailCode__Group__1__Impl
+
+
+ // $ANTLR start rule__DetailCode__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10723:1: rule__DetailCode__Group__2 : rule__DetailCode__Group__2__Impl ;
+ public final void rule__DetailCode__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10727:1: ( rule__DetailCode__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10728:2: rule__DetailCode__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__DetailCode__Group__2__Impl_in_rule__DetailCode__Group__221671);
+ rule__DetailCode__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DetailCode__Group__2
+
+
+ // $ANTLR start rule__DetailCode__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10734:1: rule__DetailCode__Group__2__Impl : ( '}' ) ;
+ public final void rule__DetailCode__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10738:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10739:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10739:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10740:1: '}'
+ {
+ before(grammarAccess.getDetailCodeAccess().getRightCurlyBracketKeyword_2());
+ match(input,25,FOLLOW_25_in_rule__DetailCode__Group__2__Impl21699);
+ after(grammarAccess.getDetailCodeAccess().getRightCurlyBracketKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DetailCode__Group__2__Impl
+
+
+ // $ANTLR start rule__TransitionPoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10759:1: rule__TransitionPoint__Group__0 : rule__TransitionPoint__Group__0__Impl rule__TransitionPoint__Group__1 ;
+ public final void rule__TransitionPoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10763:1: ( rule__TransitionPoint__Group__0__Impl rule__TransitionPoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10764:2: rule__TransitionPoint__Group__0__Impl rule__TransitionPoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__TransitionPoint__Group__0__Impl_in_rule__TransitionPoint__Group__021736);
+ rule__TransitionPoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TransitionPoint__Group__1_in_rule__TransitionPoint__Group__021739);
+ rule__TransitionPoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__Group__0
+
+
+ // $ANTLR start rule__TransitionPoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10771:1: rule__TransitionPoint__Group__0__Impl : ( ( rule__TransitionPoint__HandlerAssignment_0 )? ) ;
+ public final void rule__TransitionPoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10775:1: ( ( ( rule__TransitionPoint__HandlerAssignment_0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10776:1: ( ( rule__TransitionPoint__HandlerAssignment_0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10776:1: ( ( rule__TransitionPoint__HandlerAssignment_0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10777:1: ( rule__TransitionPoint__HandlerAssignment_0 )?
+ {
+ before(grammarAccess.getTransitionPointAccess().getHandlerAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10778:1: ( rule__TransitionPoint__HandlerAssignment_0 )?
+ int alt85=2;
+ int LA85_0 = input.LA(1);
+
+ if ( (LA85_0==99) ) {
+ alt85=1;
+ }
+ switch (alt85) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10778:2: rule__TransitionPoint__HandlerAssignment_0
+ {
+ pushFollow(FOLLOW_rule__TransitionPoint__HandlerAssignment_0_in_rule__TransitionPoint__Group__0__Impl21766);
+ rule__TransitionPoint__HandlerAssignment_0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getTransitionPointAccess().getHandlerAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__Group__0__Impl
+
+
+ // $ANTLR start rule__TransitionPoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10788:1: rule__TransitionPoint__Group__1 : rule__TransitionPoint__Group__1__Impl rule__TransitionPoint__Group__2 ;
+ public final void rule__TransitionPoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10792:1: ( rule__TransitionPoint__Group__1__Impl rule__TransitionPoint__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10793:2: rule__TransitionPoint__Group__1__Impl rule__TransitionPoint__Group__2
+ {
+ pushFollow(FOLLOW_rule__TransitionPoint__Group__1__Impl_in_rule__TransitionPoint__Group__121797);
+ rule__TransitionPoint__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TransitionPoint__Group__2_in_rule__TransitionPoint__Group__121800);
+ rule__TransitionPoint__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__Group__1
+
+
+ // $ANTLR start rule__TransitionPoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10800:1: rule__TransitionPoint__Group__1__Impl : ( 'TransitionPoint' ) ;
+ public final void rule__TransitionPoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10804:1: ( ( 'TransitionPoint' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10805:1: ( 'TransitionPoint' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10805:1: ( 'TransitionPoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10806:1: 'TransitionPoint'
+ {
+ before(grammarAccess.getTransitionPointAccess().getTransitionPointKeyword_1());
+ match(input,79,FOLLOW_79_in_rule__TransitionPoint__Group__1__Impl21828);
+ after(grammarAccess.getTransitionPointAccess().getTransitionPointKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__Group__1__Impl
+
+
+ // $ANTLR start rule__TransitionPoint__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10819:1: rule__TransitionPoint__Group__2 : rule__TransitionPoint__Group__2__Impl ;
+ public final void rule__TransitionPoint__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10823:1: ( rule__TransitionPoint__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10824:2: rule__TransitionPoint__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__TransitionPoint__Group__2__Impl_in_rule__TransitionPoint__Group__221859);
+ rule__TransitionPoint__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__Group__2
+
+
+ // $ANTLR start rule__TransitionPoint__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10830:1: rule__TransitionPoint__Group__2__Impl : ( ( rule__TransitionPoint__NameAssignment_2 ) ) ;
+ public final void rule__TransitionPoint__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10834:1: ( ( ( rule__TransitionPoint__NameAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10835:1: ( ( rule__TransitionPoint__NameAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10835:1: ( ( rule__TransitionPoint__NameAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10836:1: ( rule__TransitionPoint__NameAssignment_2 )
+ {
+ before(grammarAccess.getTransitionPointAccess().getNameAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10837:1: ( rule__TransitionPoint__NameAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10837:2: rule__TransitionPoint__NameAssignment_2
+ {
+ pushFollow(FOLLOW_rule__TransitionPoint__NameAssignment_2_in_rule__TransitionPoint__Group__2__Impl21886);
+ rule__TransitionPoint__NameAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTransitionPointAccess().getNameAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__Group__2__Impl
+
+
+ // $ANTLR start rule__EntryPoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10853:1: rule__EntryPoint__Group__0 : rule__EntryPoint__Group__0__Impl rule__EntryPoint__Group__1 ;
+ public final void rule__EntryPoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10857:1: ( rule__EntryPoint__Group__0__Impl rule__EntryPoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10858:2: rule__EntryPoint__Group__0__Impl rule__EntryPoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__EntryPoint__Group__0__Impl_in_rule__EntryPoint__Group__021922);
+ rule__EntryPoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__EntryPoint__Group__1_in_rule__EntryPoint__Group__021925);
+ rule__EntryPoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__EntryPoint__Group__0
+
+
+ // $ANTLR start rule__EntryPoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10865:1: rule__EntryPoint__Group__0__Impl : ( 'EntryPoint' ) ;
+ public final void rule__EntryPoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10869:1: ( ( 'EntryPoint' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10870:1: ( 'EntryPoint' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10870:1: ( 'EntryPoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10871:1: 'EntryPoint'
+ {
+ before(grammarAccess.getEntryPointAccess().getEntryPointKeyword_0());
+ match(input,80,FOLLOW_80_in_rule__EntryPoint__Group__0__Impl21953);
+ after(grammarAccess.getEntryPointAccess().getEntryPointKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__EntryPoint__Group__0__Impl
+
+
+ // $ANTLR start rule__EntryPoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10884:1: rule__EntryPoint__Group__1 : rule__EntryPoint__Group__1__Impl ;
+ public final void rule__EntryPoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10888:1: ( rule__EntryPoint__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10889:2: rule__EntryPoint__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__EntryPoint__Group__1__Impl_in_rule__EntryPoint__Group__121984);
+ rule__EntryPoint__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__EntryPoint__Group__1
+
+
+ // $ANTLR start rule__EntryPoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10895:1: rule__EntryPoint__Group__1__Impl : ( ( rule__EntryPoint__NameAssignment_1 ) ) ;
+ public final void rule__EntryPoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10899:1: ( ( ( rule__EntryPoint__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10900:1: ( ( rule__EntryPoint__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10900:1: ( ( rule__EntryPoint__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10901:1: ( rule__EntryPoint__NameAssignment_1 )
+ {
+ before(grammarAccess.getEntryPointAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10902:1: ( rule__EntryPoint__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10902:2: rule__EntryPoint__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__EntryPoint__NameAssignment_1_in_rule__EntryPoint__Group__1__Impl22011);
+ rule__EntryPoint__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getEntryPointAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__EntryPoint__Group__1__Impl
+
+
+ // $ANTLR start rule__ExitPoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10916:1: rule__ExitPoint__Group__0 : rule__ExitPoint__Group__0__Impl rule__ExitPoint__Group__1 ;
+ public final void rule__ExitPoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10920:1: ( rule__ExitPoint__Group__0__Impl rule__ExitPoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10921:2: rule__ExitPoint__Group__0__Impl rule__ExitPoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__ExitPoint__Group__0__Impl_in_rule__ExitPoint__Group__022045);
+ rule__ExitPoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ExitPoint__Group__1_in_rule__ExitPoint__Group__022048);
+ rule__ExitPoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExitPoint__Group__0
+
+
+ // $ANTLR start rule__ExitPoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10928:1: rule__ExitPoint__Group__0__Impl : ( 'ExitPoint' ) ;
+ public final void rule__ExitPoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10932:1: ( ( 'ExitPoint' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10933:1: ( 'ExitPoint' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10933:1: ( 'ExitPoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10934:1: 'ExitPoint'
+ {
+ before(grammarAccess.getExitPointAccess().getExitPointKeyword_0());
+ match(input,81,FOLLOW_81_in_rule__ExitPoint__Group__0__Impl22076);
+ after(grammarAccess.getExitPointAccess().getExitPointKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExitPoint__Group__0__Impl
+
+
+ // $ANTLR start rule__ExitPoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10947:1: rule__ExitPoint__Group__1 : rule__ExitPoint__Group__1__Impl ;
+ public final void rule__ExitPoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10951:1: ( rule__ExitPoint__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10952:2: rule__ExitPoint__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ExitPoint__Group__1__Impl_in_rule__ExitPoint__Group__122107);
+ rule__ExitPoint__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExitPoint__Group__1
+
+
+ // $ANTLR start rule__ExitPoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10958:1: rule__ExitPoint__Group__1__Impl : ( ( rule__ExitPoint__NameAssignment_1 ) ) ;
+ public final void rule__ExitPoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10962:1: ( ( ( rule__ExitPoint__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10963:1: ( ( rule__ExitPoint__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10963:1: ( ( rule__ExitPoint__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10964:1: ( rule__ExitPoint__NameAssignment_1 )
+ {
+ before(grammarAccess.getExitPointAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10965:1: ( rule__ExitPoint__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10965:2: rule__ExitPoint__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__ExitPoint__NameAssignment_1_in_rule__ExitPoint__Group__1__Impl22134);
+ rule__ExitPoint__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getExitPointAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExitPoint__Group__1__Impl
+
+
+ // $ANTLR start rule__ChoicePoint__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10979:1: rule__ChoicePoint__Group__0 : rule__ChoicePoint__Group__0__Impl rule__ChoicePoint__Group__1 ;
+ public final void rule__ChoicePoint__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10983:1: ( rule__ChoicePoint__Group__0__Impl rule__ChoicePoint__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10984:2: rule__ChoicePoint__Group__0__Impl rule__ChoicePoint__Group__1
+ {
+ pushFollow(FOLLOW_rule__ChoicePoint__Group__0__Impl_in_rule__ChoicePoint__Group__022168);
+ rule__ChoicePoint__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ChoicePoint__Group__1_in_rule__ChoicePoint__Group__022171);
+ rule__ChoicePoint__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicePoint__Group__0
+
+
+ // $ANTLR start rule__ChoicePoint__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10991:1: rule__ChoicePoint__Group__0__Impl : ( 'ChoicePoint' ) ;
+ public final void rule__ChoicePoint__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10995:1: ( ( 'ChoicePoint' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10996:1: ( 'ChoicePoint' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10996:1: ( 'ChoicePoint' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:10997:1: 'ChoicePoint'
+ {
+ before(grammarAccess.getChoicePointAccess().getChoicePointKeyword_0());
+ match(input,82,FOLLOW_82_in_rule__ChoicePoint__Group__0__Impl22199);
+ after(grammarAccess.getChoicePointAccess().getChoicePointKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicePoint__Group__0__Impl
+
+
+ // $ANTLR start rule__ChoicePoint__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11010:1: rule__ChoicePoint__Group__1 : rule__ChoicePoint__Group__1__Impl ;
+ public final void rule__ChoicePoint__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11014:1: ( rule__ChoicePoint__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11015:2: rule__ChoicePoint__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ChoicePoint__Group__1__Impl_in_rule__ChoicePoint__Group__122230);
+ rule__ChoicePoint__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicePoint__Group__1
+
+
+ // $ANTLR start rule__ChoicePoint__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11021:1: rule__ChoicePoint__Group__1__Impl : ( ( rule__ChoicePoint__NameAssignment_1 ) ) ;
+ public final void rule__ChoicePoint__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11025:1: ( ( ( rule__ChoicePoint__NameAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11026:1: ( ( rule__ChoicePoint__NameAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11026:1: ( ( rule__ChoicePoint__NameAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11027:1: ( rule__ChoicePoint__NameAssignment_1 )
+ {
+ before(grammarAccess.getChoicePointAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11028:1: ( rule__ChoicePoint__NameAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11028:2: rule__ChoicePoint__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__ChoicePoint__NameAssignment_1_in_rule__ChoicePoint__Group__1__Impl22257);
+ rule__ChoicePoint__NameAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getChoicePointAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicePoint__Group__1__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11042:1: rule__InitialTransition__Group__0 : rule__InitialTransition__Group__0__Impl rule__InitialTransition__Group__1 ;
+ public final void rule__InitialTransition__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11046:1: ( rule__InitialTransition__Group__0__Impl rule__InitialTransition__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11047:2: rule__InitialTransition__Group__0__Impl rule__InitialTransition__Group__1
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__0__Impl_in_rule__InitialTransition__Group__022291);
+ rule__InitialTransition__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__1_in_rule__InitialTransition__Group__022294);
+ rule__InitialTransition__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__0
+
+
+ // $ANTLR start rule__InitialTransition__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11054:1: rule__InitialTransition__Group__0__Impl : ( 'Transition' ) ;
+ public final void rule__InitialTransition__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11058:1: ( ( 'Transition' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11059:1: ( 'Transition' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11059:1: ( 'Transition' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11060:1: 'Transition'
+ {
+ before(grammarAccess.getInitialTransitionAccess().getTransitionKeyword_0());
+ match(input,83,FOLLOW_83_in_rule__InitialTransition__Group__0__Impl22322);
+ after(grammarAccess.getInitialTransitionAccess().getTransitionKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__0__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11073:1: rule__InitialTransition__Group__1 : rule__InitialTransition__Group__1__Impl rule__InitialTransition__Group__2 ;
+ public final void rule__InitialTransition__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11077:1: ( rule__InitialTransition__Group__1__Impl rule__InitialTransition__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11078:2: rule__InitialTransition__Group__1__Impl rule__InitialTransition__Group__2
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__1__Impl_in_rule__InitialTransition__Group__122353);
+ rule__InitialTransition__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__2_in_rule__InitialTransition__Group__122356);
+ rule__InitialTransition__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__1
+
+
+ // $ANTLR start rule__InitialTransition__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11085:1: rule__InitialTransition__Group__1__Impl : ( ( rule__InitialTransition__NameAssignment_1 )? ) ;
+ public final void rule__InitialTransition__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11089:1: ( ( ( rule__InitialTransition__NameAssignment_1 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11090:1: ( ( rule__InitialTransition__NameAssignment_1 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11090:1: ( ( rule__InitialTransition__NameAssignment_1 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11091:1: ( rule__InitialTransition__NameAssignment_1 )?
+ {
+ before(grammarAccess.getInitialTransitionAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11092:1: ( rule__InitialTransition__NameAssignment_1 )?
+ int alt86=2;
+ int LA86_0 = input.LA(1);
+
+ if ( (LA86_0==RULE_ID) ) {
+ alt86=1;
+ }
+ switch (alt86) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11092:2: rule__InitialTransition__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__NameAssignment_1_in_rule__InitialTransition__Group__1__Impl22383);
+ rule__InitialTransition__NameAssignment_1();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getInitialTransitionAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__1__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11102:1: rule__InitialTransition__Group__2 : rule__InitialTransition__Group__2__Impl rule__InitialTransition__Group__3 ;
+ public final void rule__InitialTransition__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11106:1: ( rule__InitialTransition__Group__2__Impl rule__InitialTransition__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11107:2: rule__InitialTransition__Group__2__Impl rule__InitialTransition__Group__3
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__2__Impl_in_rule__InitialTransition__Group__222414);
+ rule__InitialTransition__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__3_in_rule__InitialTransition__Group__222417);
+ rule__InitialTransition__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__2
+
+
+ // $ANTLR start rule__InitialTransition__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11114:1: rule__InitialTransition__Group__2__Impl : ( ':' ) ;
+ public final void rule__InitialTransition__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11118:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11119:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11119:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11120:1: ':'
+ {
+ before(grammarAccess.getInitialTransitionAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__InitialTransition__Group__2__Impl22445);
+ after(grammarAccess.getInitialTransitionAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__2__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11133:1: rule__InitialTransition__Group__3 : rule__InitialTransition__Group__3__Impl rule__InitialTransition__Group__4 ;
+ public final void rule__InitialTransition__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11137:1: ( rule__InitialTransition__Group__3__Impl rule__InitialTransition__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11138:2: rule__InitialTransition__Group__3__Impl rule__InitialTransition__Group__4
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__3__Impl_in_rule__InitialTransition__Group__322476);
+ rule__InitialTransition__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__4_in_rule__InitialTransition__Group__322479);
+ rule__InitialTransition__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__3
+
+
+ // $ANTLR start rule__InitialTransition__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11145:1: rule__InitialTransition__Group__3__Impl : ( 'initial' ) ;
+ public final void rule__InitialTransition__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11149:1: ( ( 'initial' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11150:1: ( 'initial' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11150:1: ( 'initial' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11151:1: 'initial'
+ {
+ before(grammarAccess.getInitialTransitionAccess().getInitialKeyword_3());
+ match(input,84,FOLLOW_84_in_rule__InitialTransition__Group__3__Impl22507);
+ after(grammarAccess.getInitialTransitionAccess().getInitialKeyword_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__3__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11164:1: rule__InitialTransition__Group__4 : rule__InitialTransition__Group__4__Impl rule__InitialTransition__Group__5 ;
+ public final void rule__InitialTransition__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11168:1: ( rule__InitialTransition__Group__4__Impl rule__InitialTransition__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11169:2: rule__InitialTransition__Group__4__Impl rule__InitialTransition__Group__5
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__4__Impl_in_rule__InitialTransition__Group__422538);
+ rule__InitialTransition__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__5_in_rule__InitialTransition__Group__422541);
+ rule__InitialTransition__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__4
+
+
+ // $ANTLR start rule__InitialTransition__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11176:1: rule__InitialTransition__Group__4__Impl : ( '->' ) ;
+ public final void rule__InitialTransition__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11180:1: ( ( '->' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11181:1: ( '->' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11181:1: ( '->' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11182:1: '->'
+ {
+ before(grammarAccess.getInitialTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+ match(input,49,FOLLOW_49_in_rule__InitialTransition__Group__4__Impl22569);
+ after(grammarAccess.getInitialTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__4__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11195:1: rule__InitialTransition__Group__5 : rule__InitialTransition__Group__5__Impl rule__InitialTransition__Group__6 ;
+ public final void rule__InitialTransition__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11199:1: ( rule__InitialTransition__Group__5__Impl rule__InitialTransition__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11200:2: rule__InitialTransition__Group__5__Impl rule__InitialTransition__Group__6
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__5__Impl_in_rule__InitialTransition__Group__522600);
+ rule__InitialTransition__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__6_in_rule__InitialTransition__Group__522603);
+ rule__InitialTransition__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__5
+
+
+ // $ANTLR start rule__InitialTransition__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11207:1: rule__InitialTransition__Group__5__Impl : ( ( rule__InitialTransition__ToAssignment_5 ) ) ;
+ public final void rule__InitialTransition__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11211:1: ( ( ( rule__InitialTransition__ToAssignment_5 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11212:1: ( ( rule__InitialTransition__ToAssignment_5 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11212:1: ( ( rule__InitialTransition__ToAssignment_5 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11213:1: ( rule__InitialTransition__ToAssignment_5 )
+ {
+ before(grammarAccess.getInitialTransitionAccess().getToAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11214:1: ( rule__InitialTransition__ToAssignment_5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11214:2: rule__InitialTransition__ToAssignment_5
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__ToAssignment_5_in_rule__InitialTransition__Group__5__Impl22630);
+ rule__InitialTransition__ToAssignment_5();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getInitialTransitionAccess().getToAssignment_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__5__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11224:1: rule__InitialTransition__Group__6 : rule__InitialTransition__Group__6__Impl rule__InitialTransition__Group__7 ;
+ public final void rule__InitialTransition__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11228:1: ( rule__InitialTransition__Group__6__Impl rule__InitialTransition__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11229:2: rule__InitialTransition__Group__6__Impl rule__InitialTransition__Group__7
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__6__Impl_in_rule__InitialTransition__Group__622660);
+ rule__InitialTransition__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__7_in_rule__InitialTransition__Group__622663);
+ rule__InitialTransition__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__6
+
+
+ // $ANTLR start rule__InitialTransition__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11236:1: rule__InitialTransition__Group__6__Impl : ( '{' ) ;
+ public final void rule__InitialTransition__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11240:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11241:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11241:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11242:1: '{'
+ {
+ before(grammarAccess.getInitialTransitionAccess().getLeftCurlyBracketKeyword_6());
+ match(input,24,FOLLOW_24_in_rule__InitialTransition__Group__6__Impl22691);
+ after(grammarAccess.getInitialTransitionAccess().getLeftCurlyBracketKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__6__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11255:1: rule__InitialTransition__Group__7 : rule__InitialTransition__Group__7__Impl rule__InitialTransition__Group__8 ;
+ public final void rule__InitialTransition__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11259:1: ( rule__InitialTransition__Group__7__Impl rule__InitialTransition__Group__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11260:2: rule__InitialTransition__Group__7__Impl rule__InitialTransition__Group__8
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__7__Impl_in_rule__InitialTransition__Group__722722);
+ rule__InitialTransition__Group__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group__8_in_rule__InitialTransition__Group__722725);
+ rule__InitialTransition__Group__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__7
+
+
+ // $ANTLR start rule__InitialTransition__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11267:1: rule__InitialTransition__Group__7__Impl : ( ( rule__InitialTransition__Group_7__0 )? ) ;
+ public final void rule__InitialTransition__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11271:1: ( ( ( rule__InitialTransition__Group_7__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11272:1: ( ( rule__InitialTransition__Group_7__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11272:1: ( ( rule__InitialTransition__Group_7__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11273:1: ( rule__InitialTransition__Group_7__0 )?
+ {
+ before(grammarAccess.getInitialTransitionAccess().getGroup_7());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11274:1: ( rule__InitialTransition__Group_7__0 )?
+ int alt87=2;
+ int LA87_0 = input.LA(1);
+
+ if ( (LA87_0==85) ) {
+ alt87=1;
+ }
+ switch (alt87) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11274:2: rule__InitialTransition__Group_7__0
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group_7__0_in_rule__InitialTransition__Group__7__Impl22752);
+ rule__InitialTransition__Group_7__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getInitialTransitionAccess().getGroup_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__7__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11284:1: rule__InitialTransition__Group__8 : rule__InitialTransition__Group__8__Impl ;
+ public final void rule__InitialTransition__Group__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11288:1: ( rule__InitialTransition__Group__8__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11289:2: rule__InitialTransition__Group__8__Impl
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group__8__Impl_in_rule__InitialTransition__Group__822783);
+ rule__InitialTransition__Group__8__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__8
+
+
+ // $ANTLR start rule__InitialTransition__Group__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11295:1: rule__InitialTransition__Group__8__Impl : ( '}' ) ;
+ public final void rule__InitialTransition__Group__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11299:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11300:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11300:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11301:1: '}'
+ {
+ before(grammarAccess.getInitialTransitionAccess().getRightCurlyBracketKeyword_8());
+ match(input,25,FOLLOW_25_in_rule__InitialTransition__Group__8__Impl22811);
+ after(grammarAccess.getInitialTransitionAccess().getRightCurlyBracketKeyword_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group__8__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group_7__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11332:1: rule__InitialTransition__Group_7__0 : rule__InitialTransition__Group_7__0__Impl rule__InitialTransition__Group_7__1 ;
+ public final void rule__InitialTransition__Group_7__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11336:1: ( rule__InitialTransition__Group_7__0__Impl rule__InitialTransition__Group_7__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11337:2: rule__InitialTransition__Group_7__0__Impl rule__InitialTransition__Group_7__1
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group_7__0__Impl_in_rule__InitialTransition__Group_7__022860);
+ rule__InitialTransition__Group_7__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__InitialTransition__Group_7__1_in_rule__InitialTransition__Group_7__022863);
+ rule__InitialTransition__Group_7__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group_7__0
+
+
+ // $ANTLR start rule__InitialTransition__Group_7__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11344:1: rule__InitialTransition__Group_7__0__Impl : ( 'action' ) ;
+ public final void rule__InitialTransition__Group_7__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11348:1: ( ( 'action' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11349:1: ( 'action' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11349:1: ( 'action' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11350:1: 'action'
+ {
+ before(grammarAccess.getInitialTransitionAccess().getActionKeyword_7_0());
+ match(input,85,FOLLOW_85_in_rule__InitialTransition__Group_7__0__Impl22891);
+ after(grammarAccess.getInitialTransitionAccess().getActionKeyword_7_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group_7__0__Impl
+
+
+ // $ANTLR start rule__InitialTransition__Group_7__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11363:1: rule__InitialTransition__Group_7__1 : rule__InitialTransition__Group_7__1__Impl ;
+ public final void rule__InitialTransition__Group_7__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11367:1: ( rule__InitialTransition__Group_7__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11368:2: rule__InitialTransition__Group_7__1__Impl
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__Group_7__1__Impl_in_rule__InitialTransition__Group_7__122922);
+ rule__InitialTransition__Group_7__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group_7__1
+
+
+ // $ANTLR start rule__InitialTransition__Group_7__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11374:1: rule__InitialTransition__Group_7__1__Impl : ( ( rule__InitialTransition__ActionAssignment_7_1 ) ) ;
+ public final void rule__InitialTransition__Group_7__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11378:1: ( ( ( rule__InitialTransition__ActionAssignment_7_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11379:1: ( ( rule__InitialTransition__ActionAssignment_7_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11379:1: ( ( rule__InitialTransition__ActionAssignment_7_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11380:1: ( rule__InitialTransition__ActionAssignment_7_1 )
+ {
+ before(grammarAccess.getInitialTransitionAccess().getActionAssignment_7_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11381:1: ( rule__InitialTransition__ActionAssignment_7_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11381:2: rule__InitialTransition__ActionAssignment_7_1
+ {
+ pushFollow(FOLLOW_rule__InitialTransition__ActionAssignment_7_1_in_rule__InitialTransition__Group_7__1__Impl22949);
+ rule__InitialTransition__ActionAssignment_7_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getInitialTransitionAccess().getActionAssignment_7_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__Group_7__1__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11395:1: rule__ContinuationTransition__Group__0 : rule__ContinuationTransition__Group__0__Impl rule__ContinuationTransition__Group__1 ;
+ public final void rule__ContinuationTransition__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11399:1: ( rule__ContinuationTransition__Group__0__Impl rule__ContinuationTransition__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11400:2: rule__ContinuationTransition__Group__0__Impl rule__ContinuationTransition__Group__1
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__0__Impl_in_rule__ContinuationTransition__Group__022983);
+ rule__ContinuationTransition__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__1_in_rule__ContinuationTransition__Group__022986);
+ rule__ContinuationTransition__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__0
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11407:1: rule__ContinuationTransition__Group__0__Impl : ( 'Transition' ) ;
+ public final void rule__ContinuationTransition__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11411:1: ( ( 'Transition' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11412:1: ( 'Transition' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11412:1: ( 'Transition' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11413:1: 'Transition'
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getTransitionKeyword_0());
+ match(input,83,FOLLOW_83_in_rule__ContinuationTransition__Group__0__Impl23014);
+ after(grammarAccess.getContinuationTransitionAccess().getTransitionKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__0__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11426:1: rule__ContinuationTransition__Group__1 : rule__ContinuationTransition__Group__1__Impl rule__ContinuationTransition__Group__2 ;
+ public final void rule__ContinuationTransition__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11430:1: ( rule__ContinuationTransition__Group__1__Impl rule__ContinuationTransition__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11431:2: rule__ContinuationTransition__Group__1__Impl rule__ContinuationTransition__Group__2
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__1__Impl_in_rule__ContinuationTransition__Group__123045);
+ rule__ContinuationTransition__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__2_in_rule__ContinuationTransition__Group__123048);
+ rule__ContinuationTransition__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__1
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11438:1: rule__ContinuationTransition__Group__1__Impl : ( ( rule__ContinuationTransition__NameAssignment_1 )? ) ;
+ public final void rule__ContinuationTransition__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11442:1: ( ( ( rule__ContinuationTransition__NameAssignment_1 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11443:1: ( ( rule__ContinuationTransition__NameAssignment_1 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11443:1: ( ( rule__ContinuationTransition__NameAssignment_1 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11444:1: ( rule__ContinuationTransition__NameAssignment_1 )?
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11445:1: ( rule__ContinuationTransition__NameAssignment_1 )?
+ int alt88=2;
+ int LA88_0 = input.LA(1);
+
+ if ( (LA88_0==RULE_ID) ) {
+ alt88=1;
+ }
+ switch (alt88) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11445:2: rule__ContinuationTransition__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__NameAssignment_1_in_rule__ContinuationTransition__Group__1__Impl23075);
+ rule__ContinuationTransition__NameAssignment_1();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getContinuationTransitionAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__1__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11455:1: rule__ContinuationTransition__Group__2 : rule__ContinuationTransition__Group__2__Impl rule__ContinuationTransition__Group__3 ;
+ public final void rule__ContinuationTransition__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11459:1: ( rule__ContinuationTransition__Group__2__Impl rule__ContinuationTransition__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11460:2: rule__ContinuationTransition__Group__2__Impl rule__ContinuationTransition__Group__3
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__2__Impl_in_rule__ContinuationTransition__Group__223106);
+ rule__ContinuationTransition__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__3_in_rule__ContinuationTransition__Group__223109);
+ rule__ContinuationTransition__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__2
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11467:1: rule__ContinuationTransition__Group__2__Impl : ( ':' ) ;
+ public final void rule__ContinuationTransition__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11471:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11472:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11472:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11473:1: ':'
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__ContinuationTransition__Group__2__Impl23137);
+ after(grammarAccess.getContinuationTransitionAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__2__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11486:1: rule__ContinuationTransition__Group__3 : rule__ContinuationTransition__Group__3__Impl rule__ContinuationTransition__Group__4 ;
+ public final void rule__ContinuationTransition__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11490:1: ( rule__ContinuationTransition__Group__3__Impl rule__ContinuationTransition__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11491:2: rule__ContinuationTransition__Group__3__Impl rule__ContinuationTransition__Group__4
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__3__Impl_in_rule__ContinuationTransition__Group__323168);
+ rule__ContinuationTransition__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__4_in_rule__ContinuationTransition__Group__323171);
+ rule__ContinuationTransition__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__3
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11498:1: rule__ContinuationTransition__Group__3__Impl : ( ( rule__ContinuationTransition__FromAssignment_3 ) ) ;
+ public final void rule__ContinuationTransition__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11502:1: ( ( ( rule__ContinuationTransition__FromAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11503:1: ( ( rule__ContinuationTransition__FromAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11503:1: ( ( rule__ContinuationTransition__FromAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11504:1: ( rule__ContinuationTransition__FromAssignment_3 )
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getFromAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11505:1: ( rule__ContinuationTransition__FromAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11505:2: rule__ContinuationTransition__FromAssignment_3
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__FromAssignment_3_in_rule__ContinuationTransition__Group__3__Impl23198);
+ rule__ContinuationTransition__FromAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getContinuationTransitionAccess().getFromAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__3__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11515:1: rule__ContinuationTransition__Group__4 : rule__ContinuationTransition__Group__4__Impl rule__ContinuationTransition__Group__5 ;
+ public final void rule__ContinuationTransition__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11519:1: ( rule__ContinuationTransition__Group__4__Impl rule__ContinuationTransition__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11520:2: rule__ContinuationTransition__Group__4__Impl rule__ContinuationTransition__Group__5
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__4__Impl_in_rule__ContinuationTransition__Group__423228);
+ rule__ContinuationTransition__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__5_in_rule__ContinuationTransition__Group__423231);
+ rule__ContinuationTransition__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__4
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11527:1: rule__ContinuationTransition__Group__4__Impl : ( '->' ) ;
+ public final void rule__ContinuationTransition__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11531:1: ( ( '->' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11532:1: ( '->' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11532:1: ( '->' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11533:1: '->'
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+ match(input,49,FOLLOW_49_in_rule__ContinuationTransition__Group__4__Impl23259);
+ after(grammarAccess.getContinuationTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__4__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11546:1: rule__ContinuationTransition__Group__5 : rule__ContinuationTransition__Group__5__Impl rule__ContinuationTransition__Group__6 ;
+ public final void rule__ContinuationTransition__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11550:1: ( rule__ContinuationTransition__Group__5__Impl rule__ContinuationTransition__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11551:2: rule__ContinuationTransition__Group__5__Impl rule__ContinuationTransition__Group__6
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__5__Impl_in_rule__ContinuationTransition__Group__523290);
+ rule__ContinuationTransition__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__6_in_rule__ContinuationTransition__Group__523293);
+ rule__ContinuationTransition__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__5
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11558:1: rule__ContinuationTransition__Group__5__Impl : ( ( rule__ContinuationTransition__ToAssignment_5 ) ) ;
+ public final void rule__ContinuationTransition__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11562:1: ( ( ( rule__ContinuationTransition__ToAssignment_5 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11563:1: ( ( rule__ContinuationTransition__ToAssignment_5 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11563:1: ( ( rule__ContinuationTransition__ToAssignment_5 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11564:1: ( rule__ContinuationTransition__ToAssignment_5 )
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getToAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11565:1: ( rule__ContinuationTransition__ToAssignment_5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11565:2: rule__ContinuationTransition__ToAssignment_5
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__ToAssignment_5_in_rule__ContinuationTransition__Group__5__Impl23320);
+ rule__ContinuationTransition__ToAssignment_5();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getContinuationTransitionAccess().getToAssignment_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__5__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11575:1: rule__ContinuationTransition__Group__6 : rule__ContinuationTransition__Group__6__Impl rule__ContinuationTransition__Group__7 ;
+ public final void rule__ContinuationTransition__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11579:1: ( rule__ContinuationTransition__Group__6__Impl rule__ContinuationTransition__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11580:2: rule__ContinuationTransition__Group__6__Impl rule__ContinuationTransition__Group__7
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__6__Impl_in_rule__ContinuationTransition__Group__623350);
+ rule__ContinuationTransition__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__7_in_rule__ContinuationTransition__Group__623353);
+ rule__ContinuationTransition__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__6
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11587:1: rule__ContinuationTransition__Group__6__Impl : ( '{' ) ;
+ public final void rule__ContinuationTransition__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11591:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11592:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11592:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11593:1: '{'
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getLeftCurlyBracketKeyword_6());
+ match(input,24,FOLLOW_24_in_rule__ContinuationTransition__Group__6__Impl23381);
+ after(grammarAccess.getContinuationTransitionAccess().getLeftCurlyBracketKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__6__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11606:1: rule__ContinuationTransition__Group__7 : rule__ContinuationTransition__Group__7__Impl rule__ContinuationTransition__Group__8 ;
+ public final void rule__ContinuationTransition__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11610:1: ( rule__ContinuationTransition__Group__7__Impl rule__ContinuationTransition__Group__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11611:2: rule__ContinuationTransition__Group__7__Impl rule__ContinuationTransition__Group__8
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__7__Impl_in_rule__ContinuationTransition__Group__723412);
+ rule__ContinuationTransition__Group__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__8_in_rule__ContinuationTransition__Group__723415);
+ rule__ContinuationTransition__Group__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__7
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11618:1: rule__ContinuationTransition__Group__7__Impl : ( ( rule__ContinuationTransition__Group_7__0 )? ) ;
+ public final void rule__ContinuationTransition__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11622:1: ( ( ( rule__ContinuationTransition__Group_7__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11623:1: ( ( rule__ContinuationTransition__Group_7__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11623:1: ( ( rule__ContinuationTransition__Group_7__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11624:1: ( rule__ContinuationTransition__Group_7__0 )?
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getGroup_7());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11625:1: ( rule__ContinuationTransition__Group_7__0 )?
+ int alt89=2;
+ int LA89_0 = input.LA(1);
+
+ if ( (LA89_0==85) ) {
+ alt89=1;
+ }
+ switch (alt89) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11625:2: rule__ContinuationTransition__Group_7__0
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group_7__0_in_rule__ContinuationTransition__Group__7__Impl23442);
+ rule__ContinuationTransition__Group_7__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getContinuationTransitionAccess().getGroup_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__7__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11635:1: rule__ContinuationTransition__Group__8 : rule__ContinuationTransition__Group__8__Impl ;
+ public final void rule__ContinuationTransition__Group__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11639:1: ( rule__ContinuationTransition__Group__8__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11640:2: rule__ContinuationTransition__Group__8__Impl
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group__8__Impl_in_rule__ContinuationTransition__Group__823473);
+ rule__ContinuationTransition__Group__8__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__8
+
+
+ // $ANTLR start rule__ContinuationTransition__Group__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11646:1: rule__ContinuationTransition__Group__8__Impl : ( '}' ) ;
+ public final void rule__ContinuationTransition__Group__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11650:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11651:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11651:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11652:1: '}'
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getRightCurlyBracketKeyword_8());
+ match(input,25,FOLLOW_25_in_rule__ContinuationTransition__Group__8__Impl23501);
+ after(grammarAccess.getContinuationTransitionAccess().getRightCurlyBracketKeyword_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group__8__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group_7__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11683:1: rule__ContinuationTransition__Group_7__0 : rule__ContinuationTransition__Group_7__0__Impl rule__ContinuationTransition__Group_7__1 ;
+ public final void rule__ContinuationTransition__Group_7__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11687:1: ( rule__ContinuationTransition__Group_7__0__Impl rule__ContinuationTransition__Group_7__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11688:2: rule__ContinuationTransition__Group_7__0__Impl rule__ContinuationTransition__Group_7__1
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group_7__0__Impl_in_rule__ContinuationTransition__Group_7__023550);
+ rule__ContinuationTransition__Group_7__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group_7__1_in_rule__ContinuationTransition__Group_7__023553);
+ rule__ContinuationTransition__Group_7__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group_7__0
+
+
+ // $ANTLR start rule__ContinuationTransition__Group_7__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11695:1: rule__ContinuationTransition__Group_7__0__Impl : ( 'action' ) ;
+ public final void rule__ContinuationTransition__Group_7__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11699:1: ( ( 'action' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11700:1: ( 'action' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11700:1: ( 'action' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11701:1: 'action'
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getActionKeyword_7_0());
+ match(input,85,FOLLOW_85_in_rule__ContinuationTransition__Group_7__0__Impl23581);
+ after(grammarAccess.getContinuationTransitionAccess().getActionKeyword_7_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group_7__0__Impl
+
+
+ // $ANTLR start rule__ContinuationTransition__Group_7__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11714:1: rule__ContinuationTransition__Group_7__1 : rule__ContinuationTransition__Group_7__1__Impl ;
+ public final void rule__ContinuationTransition__Group_7__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11718:1: ( rule__ContinuationTransition__Group_7__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11719:2: rule__ContinuationTransition__Group_7__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__Group_7__1__Impl_in_rule__ContinuationTransition__Group_7__123612);
+ rule__ContinuationTransition__Group_7__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group_7__1
+
+
+ // $ANTLR start rule__ContinuationTransition__Group_7__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11725:1: rule__ContinuationTransition__Group_7__1__Impl : ( ( rule__ContinuationTransition__ActionAssignment_7_1 ) ) ;
+ public final void rule__ContinuationTransition__Group_7__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11729:1: ( ( ( rule__ContinuationTransition__ActionAssignment_7_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11730:1: ( ( rule__ContinuationTransition__ActionAssignment_7_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11730:1: ( ( rule__ContinuationTransition__ActionAssignment_7_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11731:1: ( rule__ContinuationTransition__ActionAssignment_7_1 )
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getActionAssignment_7_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11732:1: ( rule__ContinuationTransition__ActionAssignment_7_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11732:2: rule__ContinuationTransition__ActionAssignment_7_1
+ {
+ pushFollow(FOLLOW_rule__ContinuationTransition__ActionAssignment_7_1_in_rule__ContinuationTransition__Group_7__1__Impl23639);
+ rule__ContinuationTransition__ActionAssignment_7_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getContinuationTransitionAccess().getActionAssignment_7_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__Group_7__1__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11746:1: rule__TriggeredTransition__Group__0 : rule__TriggeredTransition__Group__0__Impl rule__TriggeredTransition__Group__1 ;
+ public final void rule__TriggeredTransition__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11750:1: ( rule__TriggeredTransition__Group__0__Impl rule__TriggeredTransition__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11751:2: rule__TriggeredTransition__Group__0__Impl rule__TriggeredTransition__Group__1
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__0__Impl_in_rule__TriggeredTransition__Group__023673);
+ rule__TriggeredTransition__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__1_in_rule__TriggeredTransition__Group__023676);
+ rule__TriggeredTransition__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__0
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11758:1: rule__TriggeredTransition__Group__0__Impl : ( 'Transition' ) ;
+ public final void rule__TriggeredTransition__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11762:1: ( ( 'Transition' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11763:1: ( 'Transition' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11763:1: ( 'Transition' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11764:1: 'Transition'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getTransitionKeyword_0());
+ match(input,83,FOLLOW_83_in_rule__TriggeredTransition__Group__0__Impl23704);
+ after(grammarAccess.getTriggeredTransitionAccess().getTransitionKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__0__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11777:1: rule__TriggeredTransition__Group__1 : rule__TriggeredTransition__Group__1__Impl rule__TriggeredTransition__Group__2 ;
+ public final void rule__TriggeredTransition__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11781:1: ( rule__TriggeredTransition__Group__1__Impl rule__TriggeredTransition__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11782:2: rule__TriggeredTransition__Group__1__Impl rule__TriggeredTransition__Group__2
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__1__Impl_in_rule__TriggeredTransition__Group__123735);
+ rule__TriggeredTransition__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__2_in_rule__TriggeredTransition__Group__123738);
+ rule__TriggeredTransition__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__1
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11789:1: rule__TriggeredTransition__Group__1__Impl : ( ( rule__TriggeredTransition__NameAssignment_1 )? ) ;
+ public final void rule__TriggeredTransition__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11793:1: ( ( ( rule__TriggeredTransition__NameAssignment_1 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11794:1: ( ( rule__TriggeredTransition__NameAssignment_1 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11794:1: ( ( rule__TriggeredTransition__NameAssignment_1 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11795:1: ( rule__TriggeredTransition__NameAssignment_1 )?
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11796:1: ( rule__TriggeredTransition__NameAssignment_1 )?
+ int alt90=2;
+ int LA90_0 = input.LA(1);
+
+ if ( (LA90_0==RULE_ID) ) {
+ alt90=1;
+ }
+ switch (alt90) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11796:2: rule__TriggeredTransition__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__NameAssignment_1_in_rule__TriggeredTransition__Group__1__Impl23765);
+ rule__TriggeredTransition__NameAssignment_1();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__1__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11806:1: rule__TriggeredTransition__Group__2 : rule__TriggeredTransition__Group__2__Impl rule__TriggeredTransition__Group__3 ;
+ public final void rule__TriggeredTransition__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11810:1: ( rule__TriggeredTransition__Group__2__Impl rule__TriggeredTransition__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11811:2: rule__TriggeredTransition__Group__2__Impl rule__TriggeredTransition__Group__3
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__2__Impl_in_rule__TriggeredTransition__Group__223796);
+ rule__TriggeredTransition__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__3_in_rule__TriggeredTransition__Group__223799);
+ rule__TriggeredTransition__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__2
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11818:1: rule__TriggeredTransition__Group__2__Impl : ( ':' ) ;
+ public final void rule__TriggeredTransition__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11822:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11823:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11823:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11824:1: ':'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__TriggeredTransition__Group__2__Impl23827);
+ after(grammarAccess.getTriggeredTransitionAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__2__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11837:1: rule__TriggeredTransition__Group__3 : rule__TriggeredTransition__Group__3__Impl rule__TriggeredTransition__Group__4 ;
+ public final void rule__TriggeredTransition__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11841:1: ( rule__TriggeredTransition__Group__3__Impl rule__TriggeredTransition__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11842:2: rule__TriggeredTransition__Group__3__Impl rule__TriggeredTransition__Group__4
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__3__Impl_in_rule__TriggeredTransition__Group__323858);
+ rule__TriggeredTransition__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__4_in_rule__TriggeredTransition__Group__323861);
+ rule__TriggeredTransition__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__3
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11849:1: rule__TriggeredTransition__Group__3__Impl : ( ( rule__TriggeredTransition__FromAssignment_3 ) ) ;
+ public final void rule__TriggeredTransition__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11853:1: ( ( ( rule__TriggeredTransition__FromAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11854:1: ( ( rule__TriggeredTransition__FromAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11854:1: ( ( rule__TriggeredTransition__FromAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11855:1: ( rule__TriggeredTransition__FromAssignment_3 )
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getFromAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11856:1: ( rule__TriggeredTransition__FromAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11856:2: rule__TriggeredTransition__FromAssignment_3
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__FromAssignment_3_in_rule__TriggeredTransition__Group__3__Impl23888);
+ rule__TriggeredTransition__FromAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getFromAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__3__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11866:1: rule__TriggeredTransition__Group__4 : rule__TriggeredTransition__Group__4__Impl rule__TriggeredTransition__Group__5 ;
+ public final void rule__TriggeredTransition__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11870:1: ( rule__TriggeredTransition__Group__4__Impl rule__TriggeredTransition__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11871:2: rule__TriggeredTransition__Group__4__Impl rule__TriggeredTransition__Group__5
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__4__Impl_in_rule__TriggeredTransition__Group__423918);
+ rule__TriggeredTransition__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__5_in_rule__TriggeredTransition__Group__423921);
+ rule__TriggeredTransition__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__4
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11878:1: rule__TriggeredTransition__Group__4__Impl : ( '->' ) ;
+ public final void rule__TriggeredTransition__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11882:1: ( ( '->' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11883:1: ( '->' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11883:1: ( '->' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11884:1: '->'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+ match(input,49,FOLLOW_49_in_rule__TriggeredTransition__Group__4__Impl23949);
+ after(grammarAccess.getTriggeredTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__4__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11897:1: rule__TriggeredTransition__Group__5 : rule__TriggeredTransition__Group__5__Impl rule__TriggeredTransition__Group__6 ;
+ public final void rule__TriggeredTransition__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11901:1: ( rule__TriggeredTransition__Group__5__Impl rule__TriggeredTransition__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11902:2: rule__TriggeredTransition__Group__5__Impl rule__TriggeredTransition__Group__6
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__5__Impl_in_rule__TriggeredTransition__Group__523980);
+ rule__TriggeredTransition__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__6_in_rule__TriggeredTransition__Group__523983);
+ rule__TriggeredTransition__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__5
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11909:1: rule__TriggeredTransition__Group__5__Impl : ( ( rule__TriggeredTransition__ToAssignment_5 ) ) ;
+ public final void rule__TriggeredTransition__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11913:1: ( ( ( rule__TriggeredTransition__ToAssignment_5 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11914:1: ( ( rule__TriggeredTransition__ToAssignment_5 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11914:1: ( ( rule__TriggeredTransition__ToAssignment_5 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11915:1: ( rule__TriggeredTransition__ToAssignment_5 )
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getToAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11916:1: ( rule__TriggeredTransition__ToAssignment_5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11916:2: rule__TriggeredTransition__ToAssignment_5
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__ToAssignment_5_in_rule__TriggeredTransition__Group__5__Impl24010);
+ rule__TriggeredTransition__ToAssignment_5();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getToAssignment_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__5__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11926:1: rule__TriggeredTransition__Group__6 : rule__TriggeredTransition__Group__6__Impl rule__TriggeredTransition__Group__7 ;
+ public final void rule__TriggeredTransition__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11930:1: ( rule__TriggeredTransition__Group__6__Impl rule__TriggeredTransition__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11931:2: rule__TriggeredTransition__Group__6__Impl rule__TriggeredTransition__Group__7
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__6__Impl_in_rule__TriggeredTransition__Group__624040);
+ rule__TriggeredTransition__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__7_in_rule__TriggeredTransition__Group__624043);
+ rule__TriggeredTransition__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__6
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11938:1: rule__TriggeredTransition__Group__6__Impl : ( '{' ) ;
+ public final void rule__TriggeredTransition__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11942:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11943:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11943:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11944:1: '{'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_6());
+ match(input,24,FOLLOW_24_in_rule__TriggeredTransition__Group__6__Impl24071);
+ after(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__6__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11957:1: rule__TriggeredTransition__Group__7 : rule__TriggeredTransition__Group__7__Impl rule__TriggeredTransition__Group__8 ;
+ public final void rule__TriggeredTransition__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11961:1: ( rule__TriggeredTransition__Group__7__Impl rule__TriggeredTransition__Group__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11962:2: rule__TriggeredTransition__Group__7__Impl rule__TriggeredTransition__Group__8
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__7__Impl_in_rule__TriggeredTransition__Group__724102);
+ rule__TriggeredTransition__Group__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__8_in_rule__TriggeredTransition__Group__724105);
+ rule__TriggeredTransition__Group__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__7
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11969:1: rule__TriggeredTransition__Group__7__Impl : ( 'triggers' ) ;
+ public final void rule__TriggeredTransition__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11973:1: ( ( 'triggers' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11974:1: ( 'triggers' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11974:1: ( 'triggers' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11975:1: 'triggers'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getTriggersKeyword_7());
+ match(input,86,FOLLOW_86_in_rule__TriggeredTransition__Group__7__Impl24133);
+ after(grammarAccess.getTriggeredTransitionAccess().getTriggersKeyword_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__7__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11988:1: rule__TriggeredTransition__Group__8 : rule__TriggeredTransition__Group__8__Impl rule__TriggeredTransition__Group__9 ;
+ public final void rule__TriggeredTransition__Group__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11992:1: ( rule__TriggeredTransition__Group__8__Impl rule__TriggeredTransition__Group__9 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:11993:2: rule__TriggeredTransition__Group__8__Impl rule__TriggeredTransition__Group__9
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__8__Impl_in_rule__TriggeredTransition__Group__824164);
+ rule__TriggeredTransition__Group__8__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__9_in_rule__TriggeredTransition__Group__824167);
+ rule__TriggeredTransition__Group__9();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__8
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12000:1: rule__TriggeredTransition__Group__8__Impl : ( '{' ) ;
+ public final void rule__TriggeredTransition__Group__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12004:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12005:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12005:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12006:1: '{'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_8());
+ match(input,24,FOLLOW_24_in_rule__TriggeredTransition__Group__8__Impl24195);
+ after(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__8__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__9
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12019:1: rule__TriggeredTransition__Group__9 : rule__TriggeredTransition__Group__9__Impl rule__TriggeredTransition__Group__10 ;
+ public final void rule__TriggeredTransition__Group__9() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12023:1: ( rule__TriggeredTransition__Group__9__Impl rule__TriggeredTransition__Group__10 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12024:2: rule__TriggeredTransition__Group__9__Impl rule__TriggeredTransition__Group__10
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__9__Impl_in_rule__TriggeredTransition__Group__924226);
+ rule__TriggeredTransition__Group__9__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__10_in_rule__TriggeredTransition__Group__924229);
+ rule__TriggeredTransition__Group__10();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__9
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__9__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12031:1: rule__TriggeredTransition__Group__9__Impl : ( ( rule__TriggeredTransition__TriggersAssignment_9 ) ) ;
+ public final void rule__TriggeredTransition__Group__9__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12035:1: ( ( ( rule__TriggeredTransition__TriggersAssignment_9 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12036:1: ( ( rule__TriggeredTransition__TriggersAssignment_9 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12036:1: ( ( rule__TriggeredTransition__TriggersAssignment_9 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12037:1: ( rule__TriggeredTransition__TriggersAssignment_9 )
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_9());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12038:1: ( rule__TriggeredTransition__TriggersAssignment_9 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12038:2: rule__TriggeredTransition__TriggersAssignment_9
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__TriggersAssignment_9_in_rule__TriggeredTransition__Group__9__Impl24256);
+ rule__TriggeredTransition__TriggersAssignment_9();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_9());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__9__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__10
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12048:1: rule__TriggeredTransition__Group__10 : rule__TriggeredTransition__Group__10__Impl rule__TriggeredTransition__Group__11 ;
+ public final void rule__TriggeredTransition__Group__10() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12052:1: ( rule__TriggeredTransition__Group__10__Impl rule__TriggeredTransition__Group__11 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12053:2: rule__TriggeredTransition__Group__10__Impl rule__TriggeredTransition__Group__11
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__10__Impl_in_rule__TriggeredTransition__Group__1024286);
+ rule__TriggeredTransition__Group__10__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__11_in_rule__TriggeredTransition__Group__1024289);
+ rule__TriggeredTransition__Group__11();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__10
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__10__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12060:1: rule__TriggeredTransition__Group__10__Impl : ( ( rule__TriggeredTransition__Group_10__0 )* ) ;
+ public final void rule__TriggeredTransition__Group__10__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12064:1: ( ( ( rule__TriggeredTransition__Group_10__0 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12065:1: ( ( rule__TriggeredTransition__Group_10__0 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12065:1: ( ( rule__TriggeredTransition__Group_10__0 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12066:1: ( rule__TriggeredTransition__Group_10__0 )*
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getGroup_10());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12067:1: ( rule__TriggeredTransition__Group_10__0 )*
+ loop91:
+ do {
+ int alt91=2;
+ int LA91_0 = input.LA(1);
+
+ if ( (LA91_0==87) ) {
+ alt91=1;
+ }
+
+
+ switch (alt91) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12067:2: rule__TriggeredTransition__Group_10__0
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_10__0_in_rule__TriggeredTransition__Group__10__Impl24316);
+ rule__TriggeredTransition__Group_10__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop91;
+ }
+ } while (true);
+
+ after(grammarAccess.getTriggeredTransitionAccess().getGroup_10());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__10__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__11
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12077:1: rule__TriggeredTransition__Group__11 : rule__TriggeredTransition__Group__11__Impl rule__TriggeredTransition__Group__12 ;
+ public final void rule__TriggeredTransition__Group__11() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12081:1: ( rule__TriggeredTransition__Group__11__Impl rule__TriggeredTransition__Group__12 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12082:2: rule__TriggeredTransition__Group__11__Impl rule__TriggeredTransition__Group__12
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__11__Impl_in_rule__TriggeredTransition__Group__1124347);
+ rule__TriggeredTransition__Group__11__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__12_in_rule__TriggeredTransition__Group__1124350);
+ rule__TriggeredTransition__Group__12();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__11
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__11__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12089:1: rule__TriggeredTransition__Group__11__Impl : ( '}' ) ;
+ public final void rule__TriggeredTransition__Group__11__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12093:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12094:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12094:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12095:1: '}'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_11());
+ match(input,25,FOLLOW_25_in_rule__TriggeredTransition__Group__11__Impl24378);
+ after(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_11());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__11__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__12
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12108:1: rule__TriggeredTransition__Group__12 : rule__TriggeredTransition__Group__12__Impl rule__TriggeredTransition__Group__13 ;
+ public final void rule__TriggeredTransition__Group__12() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12112:1: ( rule__TriggeredTransition__Group__12__Impl rule__TriggeredTransition__Group__13 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12113:2: rule__TriggeredTransition__Group__12__Impl rule__TriggeredTransition__Group__13
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__12__Impl_in_rule__TriggeredTransition__Group__1224409);
+ rule__TriggeredTransition__Group__12__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__13_in_rule__TriggeredTransition__Group__1224412);
+ rule__TriggeredTransition__Group__13();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__12
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__12__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12120:1: rule__TriggeredTransition__Group__12__Impl : ( ( rule__TriggeredTransition__Group_12__0 )? ) ;
+ public final void rule__TriggeredTransition__Group__12__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12124:1: ( ( ( rule__TriggeredTransition__Group_12__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12125:1: ( ( rule__TriggeredTransition__Group_12__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12125:1: ( ( rule__TriggeredTransition__Group_12__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12126:1: ( rule__TriggeredTransition__Group_12__0 )?
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getGroup_12());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12127:1: ( rule__TriggeredTransition__Group_12__0 )?
+ int alt92=2;
+ int LA92_0 = input.LA(1);
+
+ if ( (LA92_0==85) ) {
+ alt92=1;
+ }
+ switch (alt92) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12127:2: rule__TriggeredTransition__Group_12__0
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_12__0_in_rule__TriggeredTransition__Group__12__Impl24439);
+ rule__TriggeredTransition__Group_12__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getGroup_12());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__12__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__13
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12137:1: rule__TriggeredTransition__Group__13 : rule__TriggeredTransition__Group__13__Impl ;
+ public final void rule__TriggeredTransition__Group__13() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12141:1: ( rule__TriggeredTransition__Group__13__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12142:2: rule__TriggeredTransition__Group__13__Impl
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group__13__Impl_in_rule__TriggeredTransition__Group__1324470);
+ rule__TriggeredTransition__Group__13__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__13
+
+
+ // $ANTLR start rule__TriggeredTransition__Group__13__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12148:1: rule__TriggeredTransition__Group__13__Impl : ( '}' ) ;
+ public final void rule__TriggeredTransition__Group__13__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12152:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12153:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12153:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12154:1: '}'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_13());
+ match(input,25,FOLLOW_25_in_rule__TriggeredTransition__Group__13__Impl24498);
+ after(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_13());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group__13__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_10__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12195:1: rule__TriggeredTransition__Group_10__0 : rule__TriggeredTransition__Group_10__0__Impl rule__TriggeredTransition__Group_10__1 ;
+ public final void rule__TriggeredTransition__Group_10__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12199:1: ( rule__TriggeredTransition__Group_10__0__Impl rule__TriggeredTransition__Group_10__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12200:2: rule__TriggeredTransition__Group_10__0__Impl rule__TriggeredTransition__Group_10__1
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_10__0__Impl_in_rule__TriggeredTransition__Group_10__024557);
+ rule__TriggeredTransition__Group_10__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_10__1_in_rule__TriggeredTransition__Group_10__024560);
+ rule__TriggeredTransition__Group_10__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_10__0
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_10__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12207:1: rule__TriggeredTransition__Group_10__0__Impl : ( 'or' ) ;
+ public final void rule__TriggeredTransition__Group_10__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12211:1: ( ( 'or' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12212:1: ( 'or' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12212:1: ( 'or' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12213:1: 'or'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getOrKeyword_10_0());
+ match(input,87,FOLLOW_87_in_rule__TriggeredTransition__Group_10__0__Impl24588);
+ after(grammarAccess.getTriggeredTransitionAccess().getOrKeyword_10_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_10__0__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_10__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12226:1: rule__TriggeredTransition__Group_10__1 : rule__TriggeredTransition__Group_10__1__Impl ;
+ public final void rule__TriggeredTransition__Group_10__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12230:1: ( rule__TriggeredTransition__Group_10__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12231:2: rule__TriggeredTransition__Group_10__1__Impl
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_10__1__Impl_in_rule__TriggeredTransition__Group_10__124619);
+ rule__TriggeredTransition__Group_10__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_10__1
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_10__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12237:1: rule__TriggeredTransition__Group_10__1__Impl : ( ( rule__TriggeredTransition__TriggersAssignment_10_1 ) ) ;
+ public final void rule__TriggeredTransition__Group_10__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12241:1: ( ( ( rule__TriggeredTransition__TriggersAssignment_10_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12242:1: ( ( rule__TriggeredTransition__TriggersAssignment_10_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12242:1: ( ( rule__TriggeredTransition__TriggersAssignment_10_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12243:1: ( rule__TriggeredTransition__TriggersAssignment_10_1 )
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_10_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12244:1: ( rule__TriggeredTransition__TriggersAssignment_10_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12244:2: rule__TriggeredTransition__TriggersAssignment_10_1
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__TriggersAssignment_10_1_in_rule__TriggeredTransition__Group_10__1__Impl24646);
+ rule__TriggeredTransition__TriggersAssignment_10_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_10_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_10__1__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_12__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12258:1: rule__TriggeredTransition__Group_12__0 : rule__TriggeredTransition__Group_12__0__Impl rule__TriggeredTransition__Group_12__1 ;
+ public final void rule__TriggeredTransition__Group_12__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12262:1: ( rule__TriggeredTransition__Group_12__0__Impl rule__TriggeredTransition__Group_12__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12263:2: rule__TriggeredTransition__Group_12__0__Impl rule__TriggeredTransition__Group_12__1
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_12__0__Impl_in_rule__TriggeredTransition__Group_12__024680);
+ rule__TriggeredTransition__Group_12__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_12__1_in_rule__TriggeredTransition__Group_12__024683);
+ rule__TriggeredTransition__Group_12__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_12__0
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_12__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12270:1: rule__TriggeredTransition__Group_12__0__Impl : ( 'action' ) ;
+ public final void rule__TriggeredTransition__Group_12__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12274:1: ( ( 'action' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12275:1: ( 'action' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12275:1: ( 'action' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12276:1: 'action'
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getActionKeyword_12_0());
+ match(input,85,FOLLOW_85_in_rule__TriggeredTransition__Group_12__0__Impl24711);
+ after(grammarAccess.getTriggeredTransitionAccess().getActionKeyword_12_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_12__0__Impl
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_12__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12289:1: rule__TriggeredTransition__Group_12__1 : rule__TriggeredTransition__Group_12__1__Impl ;
+ public final void rule__TriggeredTransition__Group_12__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12293:1: ( rule__TriggeredTransition__Group_12__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12294:2: rule__TriggeredTransition__Group_12__1__Impl
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__Group_12__1__Impl_in_rule__TriggeredTransition__Group_12__124742);
+ rule__TriggeredTransition__Group_12__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_12__1
+
+
+ // $ANTLR start rule__TriggeredTransition__Group_12__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12300:1: rule__TriggeredTransition__Group_12__1__Impl : ( ( rule__TriggeredTransition__ActionAssignment_12_1 ) ) ;
+ public final void rule__TriggeredTransition__Group_12__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12304:1: ( ( ( rule__TriggeredTransition__ActionAssignment_12_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12305:1: ( ( rule__TriggeredTransition__ActionAssignment_12_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12305:1: ( ( rule__TriggeredTransition__ActionAssignment_12_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12306:1: ( rule__TriggeredTransition__ActionAssignment_12_1 )
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getActionAssignment_12_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12307:1: ( rule__TriggeredTransition__ActionAssignment_12_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12307:2: rule__TriggeredTransition__ActionAssignment_12_1
+ {
+ pushFollow(FOLLOW_rule__TriggeredTransition__ActionAssignment_12_1_in_rule__TriggeredTransition__Group_12__1__Impl24769);
+ rule__TriggeredTransition__ActionAssignment_12_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggeredTransitionAccess().getActionAssignment_12_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__Group_12__1__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12321:1: rule__CPBranchTransition__Group__0 : rule__CPBranchTransition__Group__0__Impl rule__CPBranchTransition__Group__1 ;
+ public final void rule__CPBranchTransition__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12325:1: ( rule__CPBranchTransition__Group__0__Impl rule__CPBranchTransition__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12326:2: rule__CPBranchTransition__Group__0__Impl rule__CPBranchTransition__Group__1
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__0__Impl_in_rule__CPBranchTransition__Group__024803);
+ rule__CPBranchTransition__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__1_in_rule__CPBranchTransition__Group__024806);
+ rule__CPBranchTransition__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__0
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12333:1: rule__CPBranchTransition__Group__0__Impl : ( 'Transition' ) ;
+ public final void rule__CPBranchTransition__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12337:1: ( ( 'Transition' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12338:1: ( 'Transition' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12338:1: ( 'Transition' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12339:1: 'Transition'
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getTransitionKeyword_0());
+ match(input,83,FOLLOW_83_in_rule__CPBranchTransition__Group__0__Impl24834);
+ after(grammarAccess.getCPBranchTransitionAccess().getTransitionKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__0__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12352:1: rule__CPBranchTransition__Group__1 : rule__CPBranchTransition__Group__1__Impl rule__CPBranchTransition__Group__2 ;
+ public final void rule__CPBranchTransition__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12356:1: ( rule__CPBranchTransition__Group__1__Impl rule__CPBranchTransition__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12357:2: rule__CPBranchTransition__Group__1__Impl rule__CPBranchTransition__Group__2
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__1__Impl_in_rule__CPBranchTransition__Group__124865);
+ rule__CPBranchTransition__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__2_in_rule__CPBranchTransition__Group__124868);
+ rule__CPBranchTransition__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__1
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12364:1: rule__CPBranchTransition__Group__1__Impl : ( ( rule__CPBranchTransition__NameAssignment_1 )? ) ;
+ public final void rule__CPBranchTransition__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12368:1: ( ( ( rule__CPBranchTransition__NameAssignment_1 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12369:1: ( ( rule__CPBranchTransition__NameAssignment_1 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12369:1: ( ( rule__CPBranchTransition__NameAssignment_1 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12370:1: ( rule__CPBranchTransition__NameAssignment_1 )?
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getNameAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12371:1: ( rule__CPBranchTransition__NameAssignment_1 )?
+ int alt93=2;
+ int LA93_0 = input.LA(1);
+
+ if ( (LA93_0==RULE_ID) ) {
+ alt93=1;
+ }
+ switch (alt93) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12371:2: rule__CPBranchTransition__NameAssignment_1
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__NameAssignment_1_in_rule__CPBranchTransition__Group__1__Impl24895);
+ rule__CPBranchTransition__NameAssignment_1();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getCPBranchTransitionAccess().getNameAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__1__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12381:1: rule__CPBranchTransition__Group__2 : rule__CPBranchTransition__Group__2__Impl rule__CPBranchTransition__Group__3 ;
+ public final void rule__CPBranchTransition__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12385:1: ( rule__CPBranchTransition__Group__2__Impl rule__CPBranchTransition__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12386:2: rule__CPBranchTransition__Group__2__Impl rule__CPBranchTransition__Group__3
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__2__Impl_in_rule__CPBranchTransition__Group__224926);
+ rule__CPBranchTransition__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__3_in_rule__CPBranchTransition__Group__224929);
+ rule__CPBranchTransition__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__2
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12393:1: rule__CPBranchTransition__Group__2__Impl : ( ':' ) ;
+ public final void rule__CPBranchTransition__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12397:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12398:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12398:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12399:1: ':'
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getColonKeyword_2());
+ match(input,26,FOLLOW_26_in_rule__CPBranchTransition__Group__2__Impl24957);
+ after(grammarAccess.getCPBranchTransitionAccess().getColonKeyword_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__2__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12412:1: rule__CPBranchTransition__Group__3 : rule__CPBranchTransition__Group__3__Impl rule__CPBranchTransition__Group__4 ;
+ public final void rule__CPBranchTransition__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12416:1: ( rule__CPBranchTransition__Group__3__Impl rule__CPBranchTransition__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12417:2: rule__CPBranchTransition__Group__3__Impl rule__CPBranchTransition__Group__4
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__3__Impl_in_rule__CPBranchTransition__Group__324988);
+ rule__CPBranchTransition__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__4_in_rule__CPBranchTransition__Group__324991);
+ rule__CPBranchTransition__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__3
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12424:1: rule__CPBranchTransition__Group__3__Impl : ( ( rule__CPBranchTransition__FromAssignment_3 ) ) ;
+ public final void rule__CPBranchTransition__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12428:1: ( ( ( rule__CPBranchTransition__FromAssignment_3 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12429:1: ( ( rule__CPBranchTransition__FromAssignment_3 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12429:1: ( ( rule__CPBranchTransition__FromAssignment_3 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12430:1: ( rule__CPBranchTransition__FromAssignment_3 )
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getFromAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12431:1: ( rule__CPBranchTransition__FromAssignment_3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12431:2: rule__CPBranchTransition__FromAssignment_3
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__FromAssignment_3_in_rule__CPBranchTransition__Group__3__Impl25018);
+ rule__CPBranchTransition__FromAssignment_3();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getCPBranchTransitionAccess().getFromAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__3__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12441:1: rule__CPBranchTransition__Group__4 : rule__CPBranchTransition__Group__4__Impl rule__CPBranchTransition__Group__5 ;
+ public final void rule__CPBranchTransition__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12445:1: ( rule__CPBranchTransition__Group__4__Impl rule__CPBranchTransition__Group__5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12446:2: rule__CPBranchTransition__Group__4__Impl rule__CPBranchTransition__Group__5
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__4__Impl_in_rule__CPBranchTransition__Group__425048);
+ rule__CPBranchTransition__Group__4__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__5_in_rule__CPBranchTransition__Group__425051);
+ rule__CPBranchTransition__Group__5();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__4
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12453:1: rule__CPBranchTransition__Group__4__Impl : ( '->' ) ;
+ public final void rule__CPBranchTransition__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12457:1: ( ( '->' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12458:1: ( '->' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12458:1: ( '->' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12459:1: '->'
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+ match(input,49,FOLLOW_49_in_rule__CPBranchTransition__Group__4__Impl25079);
+ after(grammarAccess.getCPBranchTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__4__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12472:1: rule__CPBranchTransition__Group__5 : rule__CPBranchTransition__Group__5__Impl rule__CPBranchTransition__Group__6 ;
+ public final void rule__CPBranchTransition__Group__5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12476:1: ( rule__CPBranchTransition__Group__5__Impl rule__CPBranchTransition__Group__6 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12477:2: rule__CPBranchTransition__Group__5__Impl rule__CPBranchTransition__Group__6
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__5__Impl_in_rule__CPBranchTransition__Group__525110);
+ rule__CPBranchTransition__Group__5__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__6_in_rule__CPBranchTransition__Group__525113);
+ rule__CPBranchTransition__Group__6();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__5
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__5__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12484:1: rule__CPBranchTransition__Group__5__Impl : ( ( rule__CPBranchTransition__ToAssignment_5 ) ) ;
+ public final void rule__CPBranchTransition__Group__5__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12488:1: ( ( ( rule__CPBranchTransition__ToAssignment_5 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12489:1: ( ( rule__CPBranchTransition__ToAssignment_5 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12489:1: ( ( rule__CPBranchTransition__ToAssignment_5 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12490:1: ( rule__CPBranchTransition__ToAssignment_5 )
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getToAssignment_5());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12491:1: ( rule__CPBranchTransition__ToAssignment_5 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12491:2: rule__CPBranchTransition__ToAssignment_5
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__ToAssignment_5_in_rule__CPBranchTransition__Group__5__Impl25140);
+ rule__CPBranchTransition__ToAssignment_5();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getCPBranchTransitionAccess().getToAssignment_5());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__5__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12501:1: rule__CPBranchTransition__Group__6 : rule__CPBranchTransition__Group__6__Impl rule__CPBranchTransition__Group__7 ;
+ public final void rule__CPBranchTransition__Group__6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12505:1: ( rule__CPBranchTransition__Group__6__Impl rule__CPBranchTransition__Group__7 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12506:2: rule__CPBranchTransition__Group__6__Impl rule__CPBranchTransition__Group__7
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__6__Impl_in_rule__CPBranchTransition__Group__625170);
+ rule__CPBranchTransition__Group__6__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__7_in_rule__CPBranchTransition__Group__625173);
+ rule__CPBranchTransition__Group__7();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__6
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__6__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12513:1: rule__CPBranchTransition__Group__6__Impl : ( '{' ) ;
+ public final void rule__CPBranchTransition__Group__6__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12517:1: ( ( '{' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12518:1: ( '{' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12518:1: ( '{' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12519:1: '{'
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getLeftCurlyBracketKeyword_6());
+ match(input,24,FOLLOW_24_in_rule__CPBranchTransition__Group__6__Impl25201);
+ after(grammarAccess.getCPBranchTransitionAccess().getLeftCurlyBracketKeyword_6());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__6__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12532:1: rule__CPBranchTransition__Group__7 : rule__CPBranchTransition__Group__7__Impl rule__CPBranchTransition__Group__8 ;
+ public final void rule__CPBranchTransition__Group__7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12536:1: ( rule__CPBranchTransition__Group__7__Impl rule__CPBranchTransition__Group__8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12537:2: rule__CPBranchTransition__Group__7__Impl rule__CPBranchTransition__Group__8
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__7__Impl_in_rule__CPBranchTransition__Group__725232);
+ rule__CPBranchTransition__Group__7__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__8_in_rule__CPBranchTransition__Group__725235);
+ rule__CPBranchTransition__Group__8();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__7
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__7__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12544:1: rule__CPBranchTransition__Group__7__Impl : ( 'cond' ) ;
+ public final void rule__CPBranchTransition__Group__7__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12548:1: ( ( 'cond' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12549:1: ( 'cond' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12549:1: ( 'cond' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12550:1: 'cond'
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getCondKeyword_7());
+ match(input,88,FOLLOW_88_in_rule__CPBranchTransition__Group__7__Impl25263);
+ after(grammarAccess.getCPBranchTransitionAccess().getCondKeyword_7());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__7__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12563:1: rule__CPBranchTransition__Group__8 : rule__CPBranchTransition__Group__8__Impl rule__CPBranchTransition__Group__9 ;
+ public final void rule__CPBranchTransition__Group__8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12567:1: ( rule__CPBranchTransition__Group__8__Impl rule__CPBranchTransition__Group__9 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12568:2: rule__CPBranchTransition__Group__8__Impl rule__CPBranchTransition__Group__9
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__8__Impl_in_rule__CPBranchTransition__Group__825294);
+ rule__CPBranchTransition__Group__8__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__9_in_rule__CPBranchTransition__Group__825297);
+ rule__CPBranchTransition__Group__9();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__8
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__8__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12575:1: rule__CPBranchTransition__Group__8__Impl : ( ( rule__CPBranchTransition__ConditionAssignment_8 ) ) ;
+ public final void rule__CPBranchTransition__Group__8__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12579:1: ( ( ( rule__CPBranchTransition__ConditionAssignment_8 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12580:1: ( ( rule__CPBranchTransition__ConditionAssignment_8 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12580:1: ( ( rule__CPBranchTransition__ConditionAssignment_8 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12581:1: ( rule__CPBranchTransition__ConditionAssignment_8 )
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getConditionAssignment_8());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12582:1: ( rule__CPBranchTransition__ConditionAssignment_8 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12582:2: rule__CPBranchTransition__ConditionAssignment_8
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__ConditionAssignment_8_in_rule__CPBranchTransition__Group__8__Impl25324);
+ rule__CPBranchTransition__ConditionAssignment_8();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getCPBranchTransitionAccess().getConditionAssignment_8());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__8__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__9
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12592:1: rule__CPBranchTransition__Group__9 : rule__CPBranchTransition__Group__9__Impl rule__CPBranchTransition__Group__10 ;
+ public final void rule__CPBranchTransition__Group__9() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12596:1: ( rule__CPBranchTransition__Group__9__Impl rule__CPBranchTransition__Group__10 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12597:2: rule__CPBranchTransition__Group__9__Impl rule__CPBranchTransition__Group__10
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__9__Impl_in_rule__CPBranchTransition__Group__925354);
+ rule__CPBranchTransition__Group__9__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__10_in_rule__CPBranchTransition__Group__925357);
+ rule__CPBranchTransition__Group__10();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__9
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__9__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12604:1: rule__CPBranchTransition__Group__9__Impl : ( ( rule__CPBranchTransition__Group_9__0 )? ) ;
+ public final void rule__CPBranchTransition__Group__9__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12608:1: ( ( ( rule__CPBranchTransition__Group_9__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12609:1: ( ( rule__CPBranchTransition__Group_9__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12609:1: ( ( rule__CPBranchTransition__Group_9__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12610:1: ( rule__CPBranchTransition__Group_9__0 )?
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getGroup_9());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12611:1: ( rule__CPBranchTransition__Group_9__0 )?
+ int alt94=2;
+ int LA94_0 = input.LA(1);
+
+ if ( (LA94_0==85) ) {
+ alt94=1;
+ }
+ switch (alt94) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12611:2: rule__CPBranchTransition__Group_9__0
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group_9__0_in_rule__CPBranchTransition__Group__9__Impl25384);
+ rule__CPBranchTransition__Group_9__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getCPBranchTransitionAccess().getGroup_9());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__9__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__10
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12621:1: rule__CPBranchTransition__Group__10 : rule__CPBranchTransition__Group__10__Impl ;
+ public final void rule__CPBranchTransition__Group__10() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12625:1: ( rule__CPBranchTransition__Group__10__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12626:2: rule__CPBranchTransition__Group__10__Impl
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group__10__Impl_in_rule__CPBranchTransition__Group__1025415);
+ rule__CPBranchTransition__Group__10__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__10
+
+
+ // $ANTLR start rule__CPBranchTransition__Group__10__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12632:1: rule__CPBranchTransition__Group__10__Impl : ( '}' ) ;
+ public final void rule__CPBranchTransition__Group__10__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12636:1: ( ( '}' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12637:1: ( '}' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12637:1: ( '}' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12638:1: '}'
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getRightCurlyBracketKeyword_10());
+ match(input,25,FOLLOW_25_in_rule__CPBranchTransition__Group__10__Impl25443);
+ after(grammarAccess.getCPBranchTransitionAccess().getRightCurlyBracketKeyword_10());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group__10__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group_9__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12673:1: rule__CPBranchTransition__Group_9__0 : rule__CPBranchTransition__Group_9__0__Impl rule__CPBranchTransition__Group_9__1 ;
+ public final void rule__CPBranchTransition__Group_9__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12677:1: ( rule__CPBranchTransition__Group_9__0__Impl rule__CPBranchTransition__Group_9__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12678:2: rule__CPBranchTransition__Group_9__0__Impl rule__CPBranchTransition__Group_9__1
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group_9__0__Impl_in_rule__CPBranchTransition__Group_9__025496);
+ rule__CPBranchTransition__Group_9__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group_9__1_in_rule__CPBranchTransition__Group_9__025499);
+ rule__CPBranchTransition__Group_9__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group_9__0
+
+
+ // $ANTLR start rule__CPBranchTransition__Group_9__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12685:1: rule__CPBranchTransition__Group_9__0__Impl : ( 'action' ) ;
+ public final void rule__CPBranchTransition__Group_9__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12689:1: ( ( 'action' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12690:1: ( 'action' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12690:1: ( 'action' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12691:1: 'action'
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getActionKeyword_9_0());
+ match(input,85,FOLLOW_85_in_rule__CPBranchTransition__Group_9__0__Impl25527);
+ after(grammarAccess.getCPBranchTransitionAccess().getActionKeyword_9_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group_9__0__Impl
+
+
+ // $ANTLR start rule__CPBranchTransition__Group_9__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12704:1: rule__CPBranchTransition__Group_9__1 : rule__CPBranchTransition__Group_9__1__Impl ;
+ public final void rule__CPBranchTransition__Group_9__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12708:1: ( rule__CPBranchTransition__Group_9__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12709:2: rule__CPBranchTransition__Group_9__1__Impl
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__Group_9__1__Impl_in_rule__CPBranchTransition__Group_9__125558);
+ rule__CPBranchTransition__Group_9__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group_9__1
+
+
+ // $ANTLR start rule__CPBranchTransition__Group_9__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12715:1: rule__CPBranchTransition__Group_9__1__Impl : ( ( rule__CPBranchTransition__ActionAssignment_9_1 ) ) ;
+ public final void rule__CPBranchTransition__Group_9__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12719:1: ( ( ( rule__CPBranchTransition__ActionAssignment_9_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12720:1: ( ( rule__CPBranchTransition__ActionAssignment_9_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12720:1: ( ( rule__CPBranchTransition__ActionAssignment_9_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12721:1: ( rule__CPBranchTransition__ActionAssignment_9_1 )
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getActionAssignment_9_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12722:1: ( rule__CPBranchTransition__ActionAssignment_9_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12722:2: rule__CPBranchTransition__ActionAssignment_9_1
+ {
+ pushFollow(FOLLOW_rule__CPBranchTransition__ActionAssignment_9_1_in_rule__CPBranchTransition__Group_9__1__Impl25585);
+ rule__CPBranchTransition__ActionAssignment_9_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getCPBranchTransitionAccess().getActionAssignment_9_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__Group_9__1__Impl
+
+
+ // $ANTLR start rule__TrPointTerminal__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12736:1: rule__TrPointTerminal__Group__0 : rule__TrPointTerminal__Group__0__Impl rule__TrPointTerminal__Group__1 ;
+ public final void rule__TrPointTerminal__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12740:1: ( rule__TrPointTerminal__Group__0__Impl rule__TrPointTerminal__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12741:2: rule__TrPointTerminal__Group__0__Impl rule__TrPointTerminal__Group__1
+ {
+ pushFollow(FOLLOW_rule__TrPointTerminal__Group__0__Impl_in_rule__TrPointTerminal__Group__025619);
+ rule__TrPointTerminal__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__TrPointTerminal__Group__1_in_rule__TrPointTerminal__Group__025622);
+ rule__TrPointTerminal__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TrPointTerminal__Group__0
+
+
+ // $ANTLR start rule__TrPointTerminal__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12748:1: rule__TrPointTerminal__Group__0__Impl : ( 'my' ) ;
+ public final void rule__TrPointTerminal__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12752:1: ( ( 'my' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12753:1: ( 'my' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12753:1: ( 'my' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12754:1: 'my'
+ {
+ before(grammarAccess.getTrPointTerminalAccess().getMyKeyword_0());
+ match(input,89,FOLLOW_89_in_rule__TrPointTerminal__Group__0__Impl25650);
+ after(grammarAccess.getTrPointTerminalAccess().getMyKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TrPointTerminal__Group__0__Impl
+
+
+ // $ANTLR start rule__TrPointTerminal__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12767:1: rule__TrPointTerminal__Group__1 : rule__TrPointTerminal__Group__1__Impl ;
+ public final void rule__TrPointTerminal__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12771:1: ( rule__TrPointTerminal__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12772:2: rule__TrPointTerminal__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__TrPointTerminal__Group__1__Impl_in_rule__TrPointTerminal__Group__125681);
+ rule__TrPointTerminal__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TrPointTerminal__Group__1
+
+
+ // $ANTLR start rule__TrPointTerminal__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12778:1: rule__TrPointTerminal__Group__1__Impl : ( ( rule__TrPointTerminal__TrPointAssignment_1 ) ) ;
+ public final void rule__TrPointTerminal__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12782:1: ( ( ( rule__TrPointTerminal__TrPointAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12783:1: ( ( rule__TrPointTerminal__TrPointAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12783:1: ( ( rule__TrPointTerminal__TrPointAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12784:1: ( rule__TrPointTerminal__TrPointAssignment_1 )
+ {
+ before(grammarAccess.getTrPointTerminalAccess().getTrPointAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12785:1: ( rule__TrPointTerminal__TrPointAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12785:2: rule__TrPointTerminal__TrPointAssignment_1
+ {
+ pushFollow(FOLLOW_rule__TrPointTerminal__TrPointAssignment_1_in_rule__TrPointTerminal__Group__1__Impl25708);
+ rule__TrPointTerminal__TrPointAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTrPointTerminalAccess().getTrPointAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TrPointTerminal__Group__1__Impl
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12799:1: rule__SubStateTrPointTerminal__Group__0 : rule__SubStateTrPointTerminal__Group__0__Impl rule__SubStateTrPointTerminal__Group__1 ;
+ public final void rule__SubStateTrPointTerminal__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12803:1: ( rule__SubStateTrPointTerminal__Group__0__Impl rule__SubStateTrPointTerminal__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12804:2: rule__SubStateTrPointTerminal__Group__0__Impl rule__SubStateTrPointTerminal__Group__1
+ {
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__Group__0__Impl_in_rule__SubStateTrPointTerminal__Group__025742);
+ rule__SubStateTrPointTerminal__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__Group__1_in_rule__SubStateTrPointTerminal__Group__025745);
+ rule__SubStateTrPointTerminal__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__Group__0
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12811:1: rule__SubStateTrPointTerminal__Group__0__Impl : ( ( rule__SubStateTrPointTerminal__TrPointAssignment_0 ) ) ;
+ public final void rule__SubStateTrPointTerminal__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12815:1: ( ( ( rule__SubStateTrPointTerminal__TrPointAssignment_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12816:1: ( ( rule__SubStateTrPointTerminal__TrPointAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12816:1: ( ( rule__SubStateTrPointTerminal__TrPointAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12817:1: ( rule__SubStateTrPointTerminal__TrPointAssignment_0 )
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12818:1: ( rule__SubStateTrPointTerminal__TrPointAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12818:2: rule__SubStateTrPointTerminal__TrPointAssignment_0
+ {
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__TrPointAssignment_0_in_rule__SubStateTrPointTerminal__Group__0__Impl25772);
+ rule__SubStateTrPointTerminal__TrPointAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__Group__0__Impl
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12828:1: rule__SubStateTrPointTerminal__Group__1 : rule__SubStateTrPointTerminal__Group__1__Impl rule__SubStateTrPointTerminal__Group__2 ;
+ public final void rule__SubStateTrPointTerminal__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12832:1: ( rule__SubStateTrPointTerminal__Group__1__Impl rule__SubStateTrPointTerminal__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12833:2: rule__SubStateTrPointTerminal__Group__1__Impl rule__SubStateTrPointTerminal__Group__2
+ {
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__Group__1__Impl_in_rule__SubStateTrPointTerminal__Group__125802);
+ rule__SubStateTrPointTerminal__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__Group__2_in_rule__SubStateTrPointTerminal__Group__125805);
+ rule__SubStateTrPointTerminal__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__Group__1
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12840:1: rule__SubStateTrPointTerminal__Group__1__Impl : ( 'of' ) ;
+ public final void rule__SubStateTrPointTerminal__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12844:1: ( ( 'of' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12845:1: ( 'of' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12845:1: ( 'of' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12846:1: 'of'
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getOfKeyword_1());
+ match(input,60,FOLLOW_60_in_rule__SubStateTrPointTerminal__Group__1__Impl25833);
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getOfKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__Group__1__Impl
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12859:1: rule__SubStateTrPointTerminal__Group__2 : rule__SubStateTrPointTerminal__Group__2__Impl ;
+ public final void rule__SubStateTrPointTerminal__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12863:1: ( rule__SubStateTrPointTerminal__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12864:2: rule__SubStateTrPointTerminal__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__Group__2__Impl_in_rule__SubStateTrPointTerminal__Group__225864);
+ rule__SubStateTrPointTerminal__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__Group__2
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12870:1: rule__SubStateTrPointTerminal__Group__2__Impl : ( ( rule__SubStateTrPointTerminal__StateAssignment_2 ) ) ;
+ public final void rule__SubStateTrPointTerminal__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12874:1: ( ( ( rule__SubStateTrPointTerminal__StateAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12875:1: ( ( rule__SubStateTrPointTerminal__StateAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12875:1: ( ( rule__SubStateTrPointTerminal__StateAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12876:1: ( rule__SubStateTrPointTerminal__StateAssignment_2 )
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getStateAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12877:1: ( rule__SubStateTrPointTerminal__StateAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12877:2: rule__SubStateTrPointTerminal__StateAssignment_2
+ {
+ pushFollow(FOLLOW_rule__SubStateTrPointTerminal__StateAssignment_2_in_rule__SubStateTrPointTerminal__Group__2__Impl25891);
+ rule__SubStateTrPointTerminal__StateAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getStateAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__Group__2__Impl
+
+
+ // $ANTLR start rule__ChoicepointTerminal__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12893:1: rule__ChoicepointTerminal__Group__0 : rule__ChoicepointTerminal__Group__0__Impl rule__ChoicepointTerminal__Group__1 ;
+ public final void rule__ChoicepointTerminal__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12897:1: ( rule__ChoicepointTerminal__Group__0__Impl rule__ChoicepointTerminal__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12898:2: rule__ChoicepointTerminal__Group__0__Impl rule__ChoicepointTerminal__Group__1
+ {
+ pushFollow(FOLLOW_rule__ChoicepointTerminal__Group__0__Impl_in_rule__ChoicepointTerminal__Group__025927);
+ rule__ChoicepointTerminal__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ChoicepointTerminal__Group__1_in_rule__ChoicepointTerminal__Group__025930);
+ rule__ChoicepointTerminal__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicepointTerminal__Group__0
+
+
+ // $ANTLR start rule__ChoicepointTerminal__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12905:1: rule__ChoicepointTerminal__Group__0__Impl : ( 'cp' ) ;
+ public final void rule__ChoicepointTerminal__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12909:1: ( ( 'cp' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12910:1: ( 'cp' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12910:1: ( 'cp' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12911:1: 'cp'
+ {
+ before(grammarAccess.getChoicepointTerminalAccess().getCpKeyword_0());
+ match(input,90,FOLLOW_90_in_rule__ChoicepointTerminal__Group__0__Impl25958);
+ after(grammarAccess.getChoicepointTerminalAccess().getCpKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicepointTerminal__Group__0__Impl
+
+
+ // $ANTLR start rule__ChoicepointTerminal__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12924:1: rule__ChoicepointTerminal__Group__1 : rule__ChoicepointTerminal__Group__1__Impl ;
+ public final void rule__ChoicepointTerminal__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12928:1: ( rule__ChoicepointTerminal__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12929:2: rule__ChoicepointTerminal__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ChoicepointTerminal__Group__1__Impl_in_rule__ChoicepointTerminal__Group__125989);
+ rule__ChoicepointTerminal__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicepointTerminal__Group__1
+
+
+ // $ANTLR start rule__ChoicepointTerminal__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12935:1: rule__ChoicepointTerminal__Group__1__Impl : ( ( rule__ChoicepointTerminal__CpAssignment_1 ) ) ;
+ public final void rule__ChoicepointTerminal__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12939:1: ( ( ( rule__ChoicepointTerminal__CpAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12940:1: ( ( rule__ChoicepointTerminal__CpAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12940:1: ( ( rule__ChoicepointTerminal__CpAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12941:1: ( rule__ChoicepointTerminal__CpAssignment_1 )
+ {
+ before(grammarAccess.getChoicepointTerminalAccess().getCpAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12942:1: ( rule__ChoicepointTerminal__CpAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12942:2: rule__ChoicepointTerminal__CpAssignment_1
+ {
+ pushFollow(FOLLOW_rule__ChoicepointTerminal__CpAssignment_1_in_rule__ChoicepointTerminal__Group__1__Impl26016);
+ rule__ChoicepointTerminal__CpAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getChoicepointTerminalAccess().getCpAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicepointTerminal__Group__1__Impl
+
+
+ // $ANTLR start rule__Trigger__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12956:1: rule__Trigger__Group__0 : rule__Trigger__Group__0__Impl rule__Trigger__Group__1 ;
+ public final void rule__Trigger__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12960:1: ( rule__Trigger__Group__0__Impl rule__Trigger__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12961:2: rule__Trigger__Group__0__Impl rule__Trigger__Group__1
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group__0__Impl_in_rule__Trigger__Group__026050);
+ rule__Trigger__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Trigger__Group__1_in_rule__Trigger__Group__026053);
+ rule__Trigger__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__0
+
+
+ // $ANTLR start rule__Trigger__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12968:1: rule__Trigger__Group__0__Impl : ( '<' ) ;
+ public final void rule__Trigger__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12972:1: ( ( '<' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12973:1: ( '<' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12973:1: ( '<' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12974:1: '<'
+ {
+ before(grammarAccess.getTriggerAccess().getLessThanSignKeyword_0());
+ match(input,91,FOLLOW_91_in_rule__Trigger__Group__0__Impl26081);
+ after(grammarAccess.getTriggerAccess().getLessThanSignKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__0__Impl
+
+
+ // $ANTLR start rule__Trigger__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12987:1: rule__Trigger__Group__1 : rule__Trigger__Group__1__Impl rule__Trigger__Group__2 ;
+ public final void rule__Trigger__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12991:1: ( rule__Trigger__Group__1__Impl rule__Trigger__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12992:2: rule__Trigger__Group__1__Impl rule__Trigger__Group__2
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group__1__Impl_in_rule__Trigger__Group__126112);
+ rule__Trigger__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Trigger__Group__2_in_rule__Trigger__Group__126115);
+ rule__Trigger__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__1
+
+
+ // $ANTLR start rule__Trigger__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:12999:1: rule__Trigger__Group__1__Impl : ( ( rule__Trigger__MsgFromIfPairsAssignment_1 ) ) ;
+ public final void rule__Trigger__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13003:1: ( ( ( rule__Trigger__MsgFromIfPairsAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13004:1: ( ( rule__Trigger__MsgFromIfPairsAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13004:1: ( ( rule__Trigger__MsgFromIfPairsAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13005:1: ( rule__Trigger__MsgFromIfPairsAssignment_1 )
+ {
+ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13006:1: ( rule__Trigger__MsgFromIfPairsAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13006:2: rule__Trigger__MsgFromIfPairsAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Trigger__MsgFromIfPairsAssignment_1_in_rule__Trigger__Group__1__Impl26142);
+ rule__Trigger__MsgFromIfPairsAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__1__Impl
+
+
+ // $ANTLR start rule__Trigger__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13016:1: rule__Trigger__Group__2 : rule__Trigger__Group__2__Impl rule__Trigger__Group__3 ;
+ public final void rule__Trigger__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13020:1: ( rule__Trigger__Group__2__Impl rule__Trigger__Group__3 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13021:2: rule__Trigger__Group__2__Impl rule__Trigger__Group__3
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group__2__Impl_in_rule__Trigger__Group__226172);
+ rule__Trigger__Group__2__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Trigger__Group__3_in_rule__Trigger__Group__226175);
+ rule__Trigger__Group__3();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__2
+
+
+ // $ANTLR start rule__Trigger__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13028:1: rule__Trigger__Group__2__Impl : ( ( rule__Trigger__Group_2__0 )* ) ;
+ public final void rule__Trigger__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13032:1: ( ( ( rule__Trigger__Group_2__0 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13033:1: ( ( rule__Trigger__Group_2__0 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13033:1: ( ( rule__Trigger__Group_2__0 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13034:1: ( rule__Trigger__Group_2__0 )*
+ {
+ before(grammarAccess.getTriggerAccess().getGroup_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13035:1: ( rule__Trigger__Group_2__0 )*
+ loop95:
+ do {
+ int alt95=2;
+ int LA95_0 = input.LA(1);
+
+ if ( (LA95_0==93) ) {
+ alt95=1;
+ }
+
+
+ switch (alt95) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13035:2: rule__Trigger__Group_2__0
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group_2__0_in_rule__Trigger__Group__2__Impl26202);
+ rule__Trigger__Group_2__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop95;
+ }
+ } while (true);
+
+ after(grammarAccess.getTriggerAccess().getGroup_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__2__Impl
+
+
+ // $ANTLR start rule__Trigger__Group__3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13045:1: rule__Trigger__Group__3 : rule__Trigger__Group__3__Impl rule__Trigger__Group__4 ;
+ public final void rule__Trigger__Group__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13049:1: ( rule__Trigger__Group__3__Impl rule__Trigger__Group__4 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13050:2: rule__Trigger__Group__3__Impl rule__Trigger__Group__4
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group__3__Impl_in_rule__Trigger__Group__326233);
+ rule__Trigger__Group__3__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Trigger__Group__4_in_rule__Trigger__Group__326236);
+ rule__Trigger__Group__4();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__3
+
+
+ // $ANTLR start rule__Trigger__Group__3__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13057:1: rule__Trigger__Group__3__Impl : ( ( rule__Trigger__GuardAssignment_3 )? ) ;
+ public final void rule__Trigger__Group__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13061:1: ( ( ( rule__Trigger__GuardAssignment_3 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13062:1: ( ( rule__Trigger__GuardAssignment_3 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13062:1: ( ( rule__Trigger__GuardAssignment_3 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13063:1: ( rule__Trigger__GuardAssignment_3 )?
+ {
+ before(grammarAccess.getTriggerAccess().getGuardAssignment_3());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13064:1: ( rule__Trigger__GuardAssignment_3 )?
+ int alt96=2;
+ int LA96_0 = input.LA(1);
+
+ if ( (LA96_0==94) ) {
+ alt96=1;
+ }
+ switch (alt96) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13064:2: rule__Trigger__GuardAssignment_3
+ {
+ pushFollow(FOLLOW_rule__Trigger__GuardAssignment_3_in_rule__Trigger__Group__3__Impl26263);
+ rule__Trigger__GuardAssignment_3();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getTriggerAccess().getGuardAssignment_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__3__Impl
+
+
+ // $ANTLR start rule__Trigger__Group__4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13074:1: rule__Trigger__Group__4 : rule__Trigger__Group__4__Impl ;
+ public final void rule__Trigger__Group__4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13078:1: ( rule__Trigger__Group__4__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13079:2: rule__Trigger__Group__4__Impl
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group__4__Impl_in_rule__Trigger__Group__426294);
+ rule__Trigger__Group__4__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__4
+
+
+ // $ANTLR start rule__Trigger__Group__4__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13085:1: rule__Trigger__Group__4__Impl : ( '>' ) ;
+ public final void rule__Trigger__Group__4__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13089:1: ( ( '>' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13090:1: ( '>' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13090:1: ( '>' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13091:1: '>'
+ {
+ before(grammarAccess.getTriggerAccess().getGreaterThanSignKeyword_4());
+ match(input,92,FOLLOW_92_in_rule__Trigger__Group__4__Impl26322);
+ after(grammarAccess.getTriggerAccess().getGreaterThanSignKeyword_4());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group__4__Impl
+
+
+ // $ANTLR start rule__Trigger__Group_2__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13114:1: rule__Trigger__Group_2__0 : rule__Trigger__Group_2__0__Impl rule__Trigger__Group_2__1 ;
+ public final void rule__Trigger__Group_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13118:1: ( rule__Trigger__Group_2__0__Impl rule__Trigger__Group_2__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13119:2: rule__Trigger__Group_2__0__Impl rule__Trigger__Group_2__1
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group_2__0__Impl_in_rule__Trigger__Group_2__026363);
+ rule__Trigger__Group_2__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Trigger__Group_2__1_in_rule__Trigger__Group_2__026366);
+ rule__Trigger__Group_2__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group_2__0
+
+
+ // $ANTLR start rule__Trigger__Group_2__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13126:1: rule__Trigger__Group_2__0__Impl : ( '|' ) ;
+ public final void rule__Trigger__Group_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13130:1: ( ( '|' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13131:1: ( '|' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13131:1: ( '|' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13132:1: '|'
+ {
+ before(grammarAccess.getTriggerAccess().getVerticalLineKeyword_2_0());
+ match(input,93,FOLLOW_93_in_rule__Trigger__Group_2__0__Impl26394);
+ after(grammarAccess.getTriggerAccess().getVerticalLineKeyword_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group_2__0__Impl
+
+
+ // $ANTLR start rule__Trigger__Group_2__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13145:1: rule__Trigger__Group_2__1 : rule__Trigger__Group_2__1__Impl ;
+ public final void rule__Trigger__Group_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13149:1: ( rule__Trigger__Group_2__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13150:2: rule__Trigger__Group_2__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Trigger__Group_2__1__Impl_in_rule__Trigger__Group_2__126425);
+ rule__Trigger__Group_2__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group_2__1
+
+
+ // $ANTLR start rule__Trigger__Group_2__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13156:1: rule__Trigger__Group_2__1__Impl : ( ( rule__Trigger__MsgFromIfPairsAssignment_2_1 ) ) ;
+ public final void rule__Trigger__Group_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13160:1: ( ( ( rule__Trigger__MsgFromIfPairsAssignment_2_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13161:1: ( ( rule__Trigger__MsgFromIfPairsAssignment_2_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13161:1: ( ( rule__Trigger__MsgFromIfPairsAssignment_2_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13162:1: ( rule__Trigger__MsgFromIfPairsAssignment_2_1 )
+ {
+ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_2_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13163:1: ( rule__Trigger__MsgFromIfPairsAssignment_2_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13163:2: rule__Trigger__MsgFromIfPairsAssignment_2_1
+ {
+ pushFollow(FOLLOW_rule__Trigger__MsgFromIfPairsAssignment_2_1_in_rule__Trigger__Group_2__1__Impl26452);
+ rule__Trigger__MsgFromIfPairsAssignment_2_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__Group_2__1__Impl
+
+
+ // $ANTLR start rule__MessageFromIf__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13177:1: rule__MessageFromIf__Group__0 : rule__MessageFromIf__Group__0__Impl rule__MessageFromIf__Group__1 ;
+ public final void rule__MessageFromIf__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13181:1: ( rule__MessageFromIf__Group__0__Impl rule__MessageFromIf__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13182:2: rule__MessageFromIf__Group__0__Impl rule__MessageFromIf__Group__1
+ {
+ pushFollow(FOLLOW_rule__MessageFromIf__Group__0__Impl_in_rule__MessageFromIf__Group__026486);
+ rule__MessageFromIf__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__MessageFromIf__Group__1_in_rule__MessageFromIf__Group__026489);
+ rule__MessageFromIf__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__Group__0
+
+
+ // $ANTLR start rule__MessageFromIf__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13189:1: rule__MessageFromIf__Group__0__Impl : ( ( rule__MessageFromIf__MessageAssignment_0 ) ) ;
+ public final void rule__MessageFromIf__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13193:1: ( ( ( rule__MessageFromIf__MessageAssignment_0 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13194:1: ( ( rule__MessageFromIf__MessageAssignment_0 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13194:1: ( ( rule__MessageFromIf__MessageAssignment_0 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13195:1: ( rule__MessageFromIf__MessageAssignment_0 )
+ {
+ before(grammarAccess.getMessageFromIfAccess().getMessageAssignment_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13196:1: ( rule__MessageFromIf__MessageAssignment_0 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13196:2: rule__MessageFromIf__MessageAssignment_0
+ {
+ pushFollow(FOLLOW_rule__MessageFromIf__MessageAssignment_0_in_rule__MessageFromIf__Group__0__Impl26516);
+ rule__MessageFromIf__MessageAssignment_0();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageFromIfAccess().getMessageAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__Group__0__Impl
+
+
+ // $ANTLR start rule__MessageFromIf__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13206:1: rule__MessageFromIf__Group__1 : rule__MessageFromIf__Group__1__Impl rule__MessageFromIf__Group__2 ;
+ public final void rule__MessageFromIf__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13210:1: ( rule__MessageFromIf__Group__1__Impl rule__MessageFromIf__Group__2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13211:2: rule__MessageFromIf__Group__1__Impl rule__MessageFromIf__Group__2
+ {
+ pushFollow(FOLLOW_rule__MessageFromIf__Group__1__Impl_in_rule__MessageFromIf__Group__126546);
+ rule__MessageFromIf__Group__1__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__MessageFromIf__Group__2_in_rule__MessageFromIf__Group__126549);
+ rule__MessageFromIf__Group__2();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__Group__1
+
+
+ // $ANTLR start rule__MessageFromIf__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13218:1: rule__MessageFromIf__Group__1__Impl : ( ':' ) ;
+ public final void rule__MessageFromIf__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13222:1: ( ( ':' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13223:1: ( ':' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13223:1: ( ':' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13224:1: ':'
+ {
+ before(grammarAccess.getMessageFromIfAccess().getColonKeyword_1());
+ match(input,26,FOLLOW_26_in_rule__MessageFromIf__Group__1__Impl26577);
+ after(grammarAccess.getMessageFromIfAccess().getColonKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__Group__1__Impl
+
+
+ // $ANTLR start rule__MessageFromIf__Group__2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13237:1: rule__MessageFromIf__Group__2 : rule__MessageFromIf__Group__2__Impl ;
+ public final void rule__MessageFromIf__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13241:1: ( rule__MessageFromIf__Group__2__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13242:2: rule__MessageFromIf__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__MessageFromIf__Group__2__Impl_in_rule__MessageFromIf__Group__226608);
+ rule__MessageFromIf__Group__2__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__Group__2
+
+
+ // $ANTLR start rule__MessageFromIf__Group__2__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13248:1: rule__MessageFromIf__Group__2__Impl : ( ( rule__MessageFromIf__FromAssignment_2 ) ) ;
+ public final void rule__MessageFromIf__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13252:1: ( ( ( rule__MessageFromIf__FromAssignment_2 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13253:1: ( ( rule__MessageFromIf__FromAssignment_2 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13253:1: ( ( rule__MessageFromIf__FromAssignment_2 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13254:1: ( rule__MessageFromIf__FromAssignment_2 )
+ {
+ before(grammarAccess.getMessageFromIfAccess().getFromAssignment_2());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13255:1: ( rule__MessageFromIf__FromAssignment_2 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13255:2: rule__MessageFromIf__FromAssignment_2
+ {
+ pushFollow(FOLLOW_rule__MessageFromIf__FromAssignment_2_in_rule__MessageFromIf__Group__2__Impl26635);
+ rule__MessageFromIf__FromAssignment_2();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getMessageFromIfAccess().getFromAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__Group__2__Impl
+
+
+ // $ANTLR start rule__Guard__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13271:1: rule__Guard__Group__0 : rule__Guard__Group__0__Impl rule__Guard__Group__1 ;
+ public final void rule__Guard__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13275:1: ( rule__Guard__Group__0__Impl rule__Guard__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13276:2: rule__Guard__Group__0__Impl rule__Guard__Group__1
+ {
+ pushFollow(FOLLOW_rule__Guard__Group__0__Impl_in_rule__Guard__Group__026671);
+ rule__Guard__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Guard__Group__1_in_rule__Guard__Group__026674);
+ rule__Guard__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Guard__Group__0
+
+
+ // $ANTLR start rule__Guard__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13283:1: rule__Guard__Group__0__Impl : ( 'guard' ) ;
+ public final void rule__Guard__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13287:1: ( ( 'guard' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13288:1: ( 'guard' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13288:1: ( 'guard' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13289:1: 'guard'
+ {
+ before(grammarAccess.getGuardAccess().getGuardKeyword_0());
+ match(input,94,FOLLOW_94_in_rule__Guard__Group__0__Impl26702);
+ after(grammarAccess.getGuardAccess().getGuardKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Guard__Group__0__Impl
+
+
+ // $ANTLR start rule__Guard__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13302:1: rule__Guard__Group__1 : rule__Guard__Group__1__Impl ;
+ public final void rule__Guard__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13306:1: ( rule__Guard__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13307:2: rule__Guard__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Guard__Group__1__Impl_in_rule__Guard__Group__126733);
+ rule__Guard__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Guard__Group__1
+
+
+ // $ANTLR start rule__Guard__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13313:1: rule__Guard__Group__1__Impl : ( ( rule__Guard__GuardAssignment_1 ) ) ;
+ public final void rule__Guard__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13317:1: ( ( ( rule__Guard__GuardAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13318:1: ( ( rule__Guard__GuardAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13318:1: ( ( rule__Guard__GuardAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13319:1: ( rule__Guard__GuardAssignment_1 )
+ {
+ before(grammarAccess.getGuardAccess().getGuardAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13320:1: ( rule__Guard__GuardAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13320:2: rule__Guard__GuardAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Guard__GuardAssignment_1_in_rule__Guard__Group__1__Impl26760);
+ rule__Guard__GuardAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getGuardAccess().getGuardAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Guard__Group__1__Impl
+
+
+ // $ANTLR start rule__Import__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13334:1: rule__Import__Group__0 : rule__Import__Group__0__Impl rule__Import__Group__1 ;
+ public final void rule__Import__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13338:1: ( rule__Import__Group__0__Impl rule__Import__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13339:2: rule__Import__Group__0__Impl rule__Import__Group__1
+ {
+ pushFollow(FOLLOW_rule__Import__Group__0__Impl_in_rule__Import__Group__026794);
+ rule__Import__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__Import__Group__1_in_rule__Import__Group__026797);
+ rule__Import__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Import__Group__0
+
+
+ // $ANTLR start rule__Import__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13346:1: rule__Import__Group__0__Impl : ( 'import' ) ;
+ public final void rule__Import__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13350:1: ( ( 'import' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13351:1: ( 'import' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13351:1: ( 'import' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13352:1: 'import'
+ {
+ before(grammarAccess.getImportAccess().getImportKeyword_0());
+ match(input,95,FOLLOW_95_in_rule__Import__Group__0__Impl26825);
+ after(grammarAccess.getImportAccess().getImportKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Import__Group__0__Impl
+
+
+ // $ANTLR start rule__Import__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13365:1: rule__Import__Group__1 : rule__Import__Group__1__Impl ;
+ public final void rule__Import__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13369:1: ( rule__Import__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13370:2: rule__Import__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Import__Group__1__Impl_in_rule__Import__Group__126856);
+ rule__Import__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Import__Group__1
+
+
+ // $ANTLR start rule__Import__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13376:1: rule__Import__Group__1__Impl : ( ( rule__Import__ImportedNamespaceAssignment_1 ) ) ;
+ public final void rule__Import__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13380:1: ( ( ( rule__Import__ImportedNamespaceAssignment_1 ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13381:1: ( ( rule__Import__ImportedNamespaceAssignment_1 ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13381:1: ( ( rule__Import__ImportedNamespaceAssignment_1 ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13382:1: ( rule__Import__ImportedNamespaceAssignment_1 )
+ {
+ before(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13383:1: ( rule__Import__ImportedNamespaceAssignment_1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13383:2: rule__Import__ImportedNamespaceAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Import__ImportedNamespaceAssignment_1_in_rule__Import__Group__1__Impl26883);
+ rule__Import__ImportedNamespaceAssignment_1();
+ _fsp--;
+
+
+ }
+
+ after(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Import__Group__1__Impl
+
+
+ // $ANTLR start rule__ImportedFQN__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13397:1: rule__ImportedFQN__Group__0 : rule__ImportedFQN__Group__0__Impl rule__ImportedFQN__Group__1 ;
+ public final void rule__ImportedFQN__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13401:1: ( rule__ImportedFQN__Group__0__Impl rule__ImportedFQN__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13402:2: rule__ImportedFQN__Group__0__Impl rule__ImportedFQN__Group__1
+ {
+ pushFollow(FOLLOW_rule__ImportedFQN__Group__0__Impl_in_rule__ImportedFQN__Group__026917);
+ rule__ImportedFQN__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ImportedFQN__Group__1_in_rule__ImportedFQN__Group__026920);
+ rule__ImportedFQN__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group__0
+
+
+ // $ANTLR start rule__ImportedFQN__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13409:1: rule__ImportedFQN__Group__0__Impl : ( ruleFQN ) ;
+ public final void rule__ImportedFQN__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13413:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13414:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13414:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13415:1: ruleFQN
+ {
+ before(grammarAccess.getImportedFQNAccess().getFQNParserRuleCall_0());
+ pushFollow(FOLLOW_ruleFQN_in_rule__ImportedFQN__Group__0__Impl26947);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getImportedFQNAccess().getFQNParserRuleCall_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group__0__Impl
+
+
+ // $ANTLR start rule__ImportedFQN__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13426:1: rule__ImportedFQN__Group__1 : rule__ImportedFQN__Group__1__Impl ;
+ public final void rule__ImportedFQN__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13430:1: ( rule__ImportedFQN__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13431:2: rule__ImportedFQN__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ImportedFQN__Group__1__Impl_in_rule__ImportedFQN__Group__126976);
+ rule__ImportedFQN__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group__1
+
+
+ // $ANTLR start rule__ImportedFQN__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13437:1: rule__ImportedFQN__Group__1__Impl : ( ( rule__ImportedFQN__Group_1__0 )? ) ;
+ public final void rule__ImportedFQN__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13441:1: ( ( ( rule__ImportedFQN__Group_1__0 )? ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13442:1: ( ( rule__ImportedFQN__Group_1__0 )? )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13442:1: ( ( rule__ImportedFQN__Group_1__0 )? )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13443:1: ( rule__ImportedFQN__Group_1__0 )?
+ {
+ before(grammarAccess.getImportedFQNAccess().getGroup_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13444:1: ( rule__ImportedFQN__Group_1__0 )?
+ int alt97=2;
+ int LA97_0 = input.LA(1);
+
+ if ( (LA97_0==65) ) {
+ alt97=1;
+ }
+ switch (alt97) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13444:2: rule__ImportedFQN__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__ImportedFQN__Group_1__0_in_rule__ImportedFQN__Group__1__Impl27003);
+ rule__ImportedFQN__Group_1__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getImportedFQNAccess().getGroup_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group__1__Impl
+
+
+ // $ANTLR start rule__ImportedFQN__Group_1__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13458:1: rule__ImportedFQN__Group_1__0 : rule__ImportedFQN__Group_1__0__Impl rule__ImportedFQN__Group_1__1 ;
+ public final void rule__ImportedFQN__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13462:1: ( rule__ImportedFQN__Group_1__0__Impl rule__ImportedFQN__Group_1__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13463:2: rule__ImportedFQN__Group_1__0__Impl rule__ImportedFQN__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__ImportedFQN__Group_1__0__Impl_in_rule__ImportedFQN__Group_1__027038);
+ rule__ImportedFQN__Group_1__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__ImportedFQN__Group_1__1_in_rule__ImportedFQN__Group_1__027041);
+ rule__ImportedFQN__Group_1__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group_1__0
+
+
+ // $ANTLR start rule__ImportedFQN__Group_1__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13470:1: rule__ImportedFQN__Group_1__0__Impl : ( '.' ) ;
+ public final void rule__ImportedFQN__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13474:1: ( ( '.' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13475:1: ( '.' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13475:1: ( '.' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13476:1: '.'
+ {
+ before(grammarAccess.getImportedFQNAccess().getFullStopKeyword_1_0());
+ match(input,65,FOLLOW_65_in_rule__ImportedFQN__Group_1__0__Impl27069);
+ after(grammarAccess.getImportedFQNAccess().getFullStopKeyword_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group_1__0__Impl
+
+
+ // $ANTLR start rule__ImportedFQN__Group_1__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13489:1: rule__ImportedFQN__Group_1__1 : rule__ImportedFQN__Group_1__1__Impl ;
+ public final void rule__ImportedFQN__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13493:1: ( rule__ImportedFQN__Group_1__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13494:2: rule__ImportedFQN__Group_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ImportedFQN__Group_1__1__Impl_in_rule__ImportedFQN__Group_1__127100);
+ rule__ImportedFQN__Group_1__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group_1__1
+
+
+ // $ANTLR start rule__ImportedFQN__Group_1__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13500:1: rule__ImportedFQN__Group_1__1__Impl : ( '*' ) ;
+ public final void rule__ImportedFQN__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13504:1: ( ( '*' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13505:1: ( '*' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13505:1: ( '*' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13506:1: '*'
+ {
+ before(grammarAccess.getImportedFQNAccess().getAsteriskKeyword_1_1());
+ match(input,96,FOLLOW_96_in_rule__ImportedFQN__Group_1__1__Impl27128);
+ after(grammarAccess.getImportedFQNAccess().getAsteriskKeyword_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ImportedFQN__Group_1__1__Impl
+
+
+ // $ANTLR start rule__FQN__Group__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13523:1: rule__FQN__Group__0 : rule__FQN__Group__0__Impl rule__FQN__Group__1 ;
+ public final void rule__FQN__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13527:1: ( rule__FQN__Group__0__Impl rule__FQN__Group__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13528:2: rule__FQN__Group__0__Impl rule__FQN__Group__1
+ {
+ pushFollow(FOLLOW_rule__FQN__Group__0__Impl_in_rule__FQN__Group__027163);
+ rule__FQN__Group__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__FQN__Group__1_in_rule__FQN__Group__027166);
+ rule__FQN__Group__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group__0
+
+
+ // $ANTLR start rule__FQN__Group__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13535:1: rule__FQN__Group__0__Impl : ( RULE_ID ) ;
+ public final void rule__FQN__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13539:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13540:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13540:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13541:1: RULE_ID
+ {
+ before(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__FQN__Group__0__Impl27193);
+ after(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group__0__Impl
+
+
+ // $ANTLR start rule__FQN__Group__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13552:1: rule__FQN__Group__1 : rule__FQN__Group__1__Impl ;
+ public final void rule__FQN__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13556:1: ( rule__FQN__Group__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13557:2: rule__FQN__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__FQN__Group__1__Impl_in_rule__FQN__Group__127222);
+ rule__FQN__Group__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group__1
+
+
+ // $ANTLR start rule__FQN__Group__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13563:1: rule__FQN__Group__1__Impl : ( ( rule__FQN__Group_1__0 )* ) ;
+ public final void rule__FQN__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13567:1: ( ( ( rule__FQN__Group_1__0 )* ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13568:1: ( ( rule__FQN__Group_1__0 )* )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13568:1: ( ( rule__FQN__Group_1__0 )* )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13569:1: ( rule__FQN__Group_1__0 )*
+ {
+ before(grammarAccess.getFQNAccess().getGroup_1());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13570:1: ( rule__FQN__Group_1__0 )*
+ loop98:
+ do {
+ int alt98=2;
+ int LA98_0 = input.LA(1);
+
+ if ( (LA98_0==65) ) {
+ int LA98_2 = input.LA(2);
+
+ if ( (LA98_2==RULE_ID) ) {
+ alt98=1;
+ }
+
+
+ }
+
+
+ switch (alt98) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13570:2: rule__FQN__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__FQN__Group_1__0_in_rule__FQN__Group__1__Impl27249);
+ rule__FQN__Group_1__0();
+ _fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop98;
+ }
+ } while (true);
+
+ after(grammarAccess.getFQNAccess().getGroup_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group__1__Impl
+
+
+ // $ANTLR start rule__FQN__Group_1__0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13584:1: rule__FQN__Group_1__0 : rule__FQN__Group_1__0__Impl rule__FQN__Group_1__1 ;
+ public final void rule__FQN__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13588:1: ( rule__FQN__Group_1__0__Impl rule__FQN__Group_1__1 )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13589:2: rule__FQN__Group_1__0__Impl rule__FQN__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__FQN__Group_1__0__Impl_in_rule__FQN__Group_1__027284);
+ rule__FQN__Group_1__0__Impl();
+ _fsp--;
+
+ pushFollow(FOLLOW_rule__FQN__Group_1__1_in_rule__FQN__Group_1__027287);
+ rule__FQN__Group_1__1();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group_1__0
+
+
+ // $ANTLR start rule__FQN__Group_1__0__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13596:1: rule__FQN__Group_1__0__Impl : ( '.' ) ;
+ public final void rule__FQN__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13600:1: ( ( '.' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13601:1: ( '.' )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13601:1: ( '.' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13602:1: '.'
+ {
+ before(grammarAccess.getFQNAccess().getFullStopKeyword_1_0());
+ match(input,65,FOLLOW_65_in_rule__FQN__Group_1__0__Impl27315);
+ after(grammarAccess.getFQNAccess().getFullStopKeyword_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group_1__0__Impl
+
+
+ // $ANTLR start rule__FQN__Group_1__1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13615:1: rule__FQN__Group_1__1 : rule__FQN__Group_1__1__Impl ;
+ public final void rule__FQN__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13619:1: ( rule__FQN__Group_1__1__Impl )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13620:2: rule__FQN__Group_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__FQN__Group_1__1__Impl_in_rule__FQN__Group_1__127346);
+ rule__FQN__Group_1__1__Impl();
+ _fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group_1__1
+
+
+ // $ANTLR start rule__FQN__Group_1__1__Impl
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13626:1: rule__FQN__Group_1__1__Impl : ( RULE_ID ) ;
+ public final void rule__FQN__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13630:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13631:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13631:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13632:1: RULE_ID
+ {
+ before(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__FQN__Group_1__1__Impl27373);
+ after(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FQN__Group_1__1__Impl
+
+
+ // $ANTLR start rule__RoomModel__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13648:1: rule__RoomModel__NameAssignment_1 : ( ruleFQN ) ;
+ public final void rule__RoomModel__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13652:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13653:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13653:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13654:1: ruleFQN
+ {
+ before(grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleFQN_in_rule__RoomModel__NameAssignment_127411);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__NameAssignment_1
+
+
+ // $ANTLR start rule__RoomModel__ImportsAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13663:1: rule__RoomModel__ImportsAssignment_3 : ( ruleImport ) ;
+ public final void rule__RoomModel__ImportsAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13667:1: ( ( ruleImport ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13668:1: ( ruleImport )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13668:1: ( ruleImport )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13669:1: ruleImport
+ {
+ before(grammarAccess.getRoomModelAccess().getImportsImportParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleImport_in_rule__RoomModel__ImportsAssignment_327442);
+ ruleImport();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelAccess().getImportsImportParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__ImportsAssignment_3
+
+
+ // $ANTLR start rule__RoomModel__DataClassesAssignment_4_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13678:1: rule__RoomModel__DataClassesAssignment_4_0 : ( ruleDataClass ) ;
+ public final void rule__RoomModel__DataClassesAssignment_4_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13682:1: ( ( ruleDataClass ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13683:1: ( ruleDataClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13683:1: ( ruleDataClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13684:1: ruleDataClass
+ {
+ before(grammarAccess.getRoomModelAccess().getDataClassesDataClassParserRuleCall_4_0_0());
+ pushFollow(FOLLOW_ruleDataClass_in_rule__RoomModel__DataClassesAssignment_4_027473);
+ ruleDataClass();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelAccess().getDataClassesDataClassParserRuleCall_4_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__DataClassesAssignment_4_0
+
+
+ // $ANTLR start rule__RoomModel__ProtocolClassesAssignment_4_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13693:1: rule__RoomModel__ProtocolClassesAssignment_4_1 : ( ruleProtocolClass ) ;
+ public final void rule__RoomModel__ProtocolClassesAssignment_4_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13697:1: ( ( ruleProtocolClass ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13698:1: ( ruleProtocolClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13698:1: ( ruleProtocolClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13699:1: ruleProtocolClass
+ {
+ before(grammarAccess.getRoomModelAccess().getProtocolClassesProtocolClassParserRuleCall_4_1_0());
+ pushFollow(FOLLOW_ruleProtocolClass_in_rule__RoomModel__ProtocolClassesAssignment_4_127504);
+ ruleProtocolClass();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelAccess().getProtocolClassesProtocolClassParserRuleCall_4_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__ProtocolClassesAssignment_4_1
+
+
+ // $ANTLR start rule__RoomModel__ActorClassesAssignment_4_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13708:1: rule__RoomModel__ActorClassesAssignment_4_2 : ( ruleActorClass ) ;
+ public final void rule__RoomModel__ActorClassesAssignment_4_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13712:1: ( ( ruleActorClass ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13713:1: ( ruleActorClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13713:1: ( ruleActorClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13714:1: ruleActorClass
+ {
+ before(grammarAccess.getRoomModelAccess().getActorClassesActorClassParserRuleCall_4_2_0());
+ pushFollow(FOLLOW_ruleActorClass_in_rule__RoomModel__ActorClassesAssignment_4_227535);
+ ruleActorClass();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelAccess().getActorClassesActorClassParserRuleCall_4_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__ActorClassesAssignment_4_2
+
+
+ // $ANTLR start rule__RoomModel__SubSystemClassesAssignment_4_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13723:1: rule__RoomModel__SubSystemClassesAssignment_4_3 : ( ruleSubSystemClass ) ;
+ public final void rule__RoomModel__SubSystemClassesAssignment_4_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13727:1: ( ( ruleSubSystemClass ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13728:1: ( ruleSubSystemClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13728:1: ( ruleSubSystemClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13729:1: ruleSubSystemClass
+ {
+ before(grammarAccess.getRoomModelAccess().getSubSystemClassesSubSystemClassParserRuleCall_4_3_0());
+ pushFollow(FOLLOW_ruleSubSystemClass_in_rule__RoomModel__SubSystemClassesAssignment_4_327566);
+ ruleSubSystemClass();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelAccess().getSubSystemClassesSubSystemClassParserRuleCall_4_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__SubSystemClassesAssignment_4_3
+
+
+ // $ANTLR start rule__RoomModel__SystemsAssignment_4_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13738:1: rule__RoomModel__SystemsAssignment_4_4 : ( ruleLogicalSystem ) ;
+ public final void rule__RoomModel__SystemsAssignment_4_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13742:1: ( ( ruleLogicalSystem ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13743:1: ( ruleLogicalSystem )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13743:1: ( ruleLogicalSystem )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13744:1: ruleLogicalSystem
+ {
+ before(grammarAccess.getRoomModelAccess().getSystemsLogicalSystemParserRuleCall_4_4_0());
+ pushFollow(FOLLOW_ruleLogicalSystem_in_rule__RoomModel__SystemsAssignment_4_427597);
+ ruleLogicalSystem();
+ _fsp--;
+
+ after(grammarAccess.getRoomModelAccess().getSystemsLogicalSystemParserRuleCall_4_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RoomModel__SystemsAssignment_4_4
+
+
+ // $ANTLR start rule__TypedID__NameAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13753:1: rule__TypedID__NameAssignment_0 : ( RULE_ID ) ;
+ public final void rule__TypedID__NameAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13757:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13758:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13758:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13759:1: RULE_ID
+ {
+ before(grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__TypedID__NameAssignment_027628);
+ after(grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__NameAssignment_0
+
+
+ // $ANTLR start rule__TypedID__TypeAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13768:1: rule__TypedID__TypeAssignment_2 : ( ruleType ) ;
+ public final void rule__TypedID__TypeAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13772:1: ( ( ruleType ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13773:1: ( ruleType )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13773:1: ( ruleType )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13774:1: ruleType
+ {
+ before(grammarAccess.getTypedIDAccess().getTypeTypeParserRuleCall_2_0());
+ pushFollow(FOLLOW_ruleType_in_rule__TypedID__TypeAssignment_227659);
+ ruleType();
+ _fsp--;
+
+ after(grammarAccess.getTypedIDAccess().getTypeTypeParserRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TypedID__TypeAssignment_2
+
+
+ // $ANTLR start rule__FreeTypedID__NameAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13783:1: rule__FreeTypedID__NameAssignment_0 : ( RULE_ID ) ;
+ public final void rule__FreeTypedID__NameAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13787:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13788:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13788:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13789:1: RULE_ID
+ {
+ before(grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__FreeTypedID__NameAssignment_027690);
+ after(grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__NameAssignment_0
+
+
+ // $ANTLR start rule__FreeTypedID__TypeAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13798:1: rule__FreeTypedID__TypeAssignment_2 : ( ruleFreeType ) ;
+ public final void rule__FreeTypedID__TypeAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13802:1: ( ( ruleFreeType ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13803:1: ( ruleFreeType )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13803:1: ( ruleFreeType )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13804:1: ruleFreeType
+ {
+ before(grammarAccess.getFreeTypedIDAccess().getTypeFreeTypeParserRuleCall_2_0());
+ pushFollow(FOLLOW_ruleFreeType_in_rule__FreeTypedID__TypeAssignment_227721);
+ ruleFreeType();
+ _fsp--;
+
+ after(grammarAccess.getFreeTypedIDAccess().getTypeFreeTypeParserRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeTypedID__TypeAssignment_2
+
+
+ // $ANTLR start rule__Type__PrimAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13813:1: rule__Type__PrimAssignment_0 : ( rulePrimitiveType ) ;
+ public final void rule__Type__PrimAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13817:1: ( ( rulePrimitiveType ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13818:1: ( rulePrimitiveType )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13818:1: ( rulePrimitiveType )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13819:1: rulePrimitiveType
+ {
+ before(grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0());
+ pushFollow(FOLLOW_rulePrimitiveType_in_rule__Type__PrimAssignment_027752);
+ rulePrimitiveType();
+ _fsp--;
+
+ after(grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Type__PrimAssignment_0
+
+
+ // $ANTLR start rule__Type__TypeAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13828:1: rule__Type__TypeAssignment_1 : ( ( ruleFQN ) ) ;
+ public final void rule__Type__TypeAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13832:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13833:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13833:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13834:1: ( ruleFQN )
+ {
+ before(grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13835:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13836:1: ruleFQN
+ {
+ before(grammarAccess.getTypeAccess().getTypeDataClassFQNParserRuleCall_1_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__Type__TypeAssignment_127787);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getTypeAccess().getTypeDataClassFQNParserRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Type__TypeAssignment_1
+
+
+ // $ANTLR start rule__FreeType__PrimAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13847:1: rule__FreeType__PrimAssignment_0 : ( rulePrimitiveType ) ;
+ public final void rule__FreeType__PrimAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13851:1: ( ( rulePrimitiveType ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13852:1: ( rulePrimitiveType )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13852:1: ( rulePrimitiveType )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13853:1: rulePrimitiveType
+ {
+ before(grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0());
+ pushFollow(FOLLOW_rulePrimitiveType_in_rule__FreeType__PrimAssignment_027822);
+ rulePrimitiveType();
+ _fsp--;
+
+ after(grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeType__PrimAssignment_0
+
+
+ // $ANTLR start rule__FreeType__TypeAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13862:1: rule__FreeType__TypeAssignment_1 : ( RULE_ID ) ;
+ public final void rule__FreeType__TypeAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13866:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13867:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13867:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13868:1: RULE_ID
+ {
+ before(grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__FreeType__TypeAssignment_127853);
+ after(grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__FreeType__TypeAssignment_1
+
+
+ // $ANTLR start rule__DataClass__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13877:1: rule__DataClass__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__DataClass__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13881:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13882:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13882:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13883:1: RULE_ID
+ {
+ before(grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__DataClass__NameAssignment_127884);
+ after(grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__NameAssignment_1
+
+
+ // $ANTLR start rule__DataClass__BaseAssignment_2_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13892:1: rule__DataClass__BaseAssignment_2_1 : ( ( ruleFQN ) ) ;
+ public final void rule__DataClass__BaseAssignment_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13896:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13897:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13897:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13898:1: ( ruleFQN )
+ {
+ before(grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13899:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13900:1: ruleFQN
+ {
+ before(grammarAccess.getDataClassAccess().getBaseDataClassFQNParserRuleCall_2_1_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__DataClass__BaseAssignment_2_127919);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getDataClassAccess().getBaseDataClassFQNParserRuleCall_2_1_0_1());
+
+ }
+
+ after(grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__BaseAssignment_2_1
+
+
+ // $ANTLR start rule__DataClass__ImportsAssignment_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13911:1: rule__DataClass__ImportsAssignment_4 : ( ruleImport ) ;
+ public final void rule__DataClass__ImportsAssignment_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13915:1: ( ( ruleImport ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13916:1: ( ruleImport )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13916:1: ( ruleImport )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13917:1: ruleImport
+ {
+ before(grammarAccess.getDataClassAccess().getImportsImportParserRuleCall_4_0());
+ pushFollow(FOLLOW_ruleImport_in_rule__DataClass__ImportsAssignment_427954);
+ ruleImport();
+ _fsp--;
+
+ after(grammarAccess.getDataClassAccess().getImportsImportParserRuleCall_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__ImportsAssignment_4
+
+
+ // $ANTLR start rule__DataClass__AttributesAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13926:1: rule__DataClass__AttributesAssignment_5 : ( ruleAttribute ) ;
+ public final void rule__DataClass__AttributesAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13930:1: ( ( ruleAttribute ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13931:1: ( ruleAttribute )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13931:1: ( ruleAttribute )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13932:1: ruleAttribute
+ {
+ before(grammarAccess.getDataClassAccess().getAttributesAttributeParserRuleCall_5_0());
+ pushFollow(FOLLOW_ruleAttribute_in_rule__DataClass__AttributesAssignment_527985);
+ ruleAttribute();
+ _fsp--;
+
+ after(grammarAccess.getDataClassAccess().getAttributesAttributeParserRuleCall_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__AttributesAssignment_5
+
+
+ // $ANTLR start rule__DataClass__OperationsAssignment_6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13941:1: rule__DataClass__OperationsAssignment_6 : ( ruleOperation ) ;
+ public final void rule__DataClass__OperationsAssignment_6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13945:1: ( ( ruleOperation ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13946:1: ( ruleOperation )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13946:1: ( ruleOperation )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13947:1: ruleOperation
+ {
+ before(grammarAccess.getDataClassAccess().getOperationsOperationParserRuleCall_6_0());
+ pushFollow(FOLLOW_ruleOperation_in_rule__DataClass__OperationsAssignment_628016);
+ ruleOperation();
+ _fsp--;
+
+ after(grammarAccess.getDataClassAccess().getOperationsOperationParserRuleCall_6_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DataClass__OperationsAssignment_6
+
+
+ // $ANTLR start rule__Attribute__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13956:1: rule__Attribute__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__Attribute__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13960:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13961:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13961:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13962:1: RULE_ID
+ {
+ before(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_128047);
+ after(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__NameAssignment_1
+
+
+ // $ANTLR start rule__Attribute__SizeAssignment_2_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13971:1: rule__Attribute__SizeAssignment_2_1 : ( RULE_INT ) ;
+ public final void rule__Attribute__SizeAssignment_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13975:1: ( ( RULE_INT ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13976:1: ( RULE_INT )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13976:1: ( RULE_INT )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13977:1: RULE_INT
+ {
+ before(grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0());
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__Attribute__SizeAssignment_2_128078);
+ after(grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__SizeAssignment_2_1
+
+
+ // $ANTLR start rule__Attribute__TypeAssignment_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13986:1: rule__Attribute__TypeAssignment_4 : ( ruleType ) ;
+ public final void rule__Attribute__TypeAssignment_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13990:1: ( ( ruleType ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13991:1: ( ruleType )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13991:1: ( ruleType )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:13992:1: ruleType
+ {
+ before(grammarAccess.getAttributeAccess().getTypeTypeParserRuleCall_4_0());
+ pushFollow(FOLLOW_ruleType_in_rule__Attribute__TypeAssignment_428109);
+ ruleType();
+ _fsp--;
+
+ after(grammarAccess.getAttributeAccess().getTypeTypeParserRuleCall_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Attribute__TypeAssignment_4
+
+
+ // $ANTLR start rule__Operation__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14001:1: rule__Operation__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__Operation__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14005:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14006:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14006:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14007:1: RULE_ID
+ {
+ before(grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Operation__NameAssignment_128140);
+ after(grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__NameAssignment_1
+
+
+ // $ANTLR start rule__Operation__ArgumentsAssignment_3_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14016:1: rule__Operation__ArgumentsAssignment_3_0 : ( ruleFreeTypedID ) ;
+ public final void rule__Operation__ArgumentsAssignment_3_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14020:1: ( ( ruleFreeTypedID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14021:1: ( ruleFreeTypedID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14021:1: ( ruleFreeTypedID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14022:1: ruleFreeTypedID
+ {
+ before(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_0_0());
+ pushFollow(FOLLOW_ruleFreeTypedID_in_rule__Operation__ArgumentsAssignment_3_028171);
+ ruleFreeTypedID();
+ _fsp--;
+
+ after(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__ArgumentsAssignment_3_0
+
+
+ // $ANTLR start rule__Operation__ArgumentsAssignment_3_1_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14031:1: rule__Operation__ArgumentsAssignment_3_1_1 : ( ruleFreeTypedID ) ;
+ public final void rule__Operation__ArgumentsAssignment_3_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14035:1: ( ( ruleFreeTypedID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14036:1: ( ruleFreeTypedID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14036:1: ( ruleFreeTypedID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14037:1: ruleFreeTypedID
+ {
+ before(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_1_1_0());
+ pushFollow(FOLLOW_ruleFreeTypedID_in_rule__Operation__ArgumentsAssignment_3_1_128202);
+ ruleFreeTypedID();
+ _fsp--;
+
+ after(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__ArgumentsAssignment_3_1_1
+
+
+ // $ANTLR start rule__Operation__ReturntypeAssignment_5_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14046:1: rule__Operation__ReturntypeAssignment_5_1 : ( ruleFreeType ) ;
+ public final void rule__Operation__ReturntypeAssignment_5_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14050:1: ( ( ruleFreeType ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14051:1: ( ruleFreeType )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14051:1: ( ruleFreeType )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14052:1: ruleFreeType
+ {
+ before(grammarAccess.getOperationAccess().getReturntypeFreeTypeParserRuleCall_5_1_0());
+ pushFollow(FOLLOW_ruleFreeType_in_rule__Operation__ReturntypeAssignment_5_128233);
+ ruleFreeType();
+ _fsp--;
+
+ after(grammarAccess.getOperationAccess().getReturntypeFreeTypeParserRuleCall_5_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__ReturntypeAssignment_5_1
+
+
+ // $ANTLR start rule__Operation__DetailCodeAssignment_6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14061:1: rule__Operation__DetailCodeAssignment_6 : ( ruleDetailCode ) ;
+ public final void rule__Operation__DetailCodeAssignment_6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14065:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14066:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14066:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14067:1: ruleDetailCode
+ {
+ before(grammarAccess.getOperationAccess().getDetailCodeDetailCodeParserRuleCall_6_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__Operation__DetailCodeAssignment_628264);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getOperationAccess().getDetailCodeDetailCodeParserRuleCall_6_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Operation__DetailCodeAssignment_6
+
+
+ // $ANTLR start rule__ProtocolClass__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14076:1: rule__ProtocolClass__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__ProtocolClass__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14080:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14081:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14081:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14082:1: RULE_ID
+ {
+ before(grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ProtocolClass__NameAssignment_128295);
+ after(grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__NameAssignment_1
+
+
+ // $ANTLR start rule__ProtocolClass__BaseAssignment_2_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14091:1: rule__ProtocolClass__BaseAssignment_2_1 : ( ( ruleFQN ) ) ;
+ public final void rule__ProtocolClass__BaseAssignment_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14095:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14096:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14096:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14097:1: ( ruleFQN )
+ {
+ before(grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14098:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14099:1: ruleFQN
+ {
+ before(grammarAccess.getProtocolClassAccess().getBaseProtocolClassFQNParserRuleCall_2_1_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__ProtocolClass__BaseAssignment_2_128330);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getBaseProtocolClassFQNParserRuleCall_2_1_0_1());
+
+ }
+
+ after(grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__BaseAssignment_2_1
+
+
+ // $ANTLR start rule__ProtocolClass__UserCode1Assignment_4_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14110:1: rule__ProtocolClass__UserCode1Assignment_4_1 : ( ruleDetailCode ) ;
+ public final void rule__ProtocolClass__UserCode1Assignment_4_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14114:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14115:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14115:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14116:1: ruleDetailCode
+ {
+ before(grammarAccess.getProtocolClassAccess().getUserCode1DetailCodeParserRuleCall_4_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__ProtocolClass__UserCode1Assignment_4_128365);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getUserCode1DetailCodeParserRuleCall_4_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__UserCode1Assignment_4_1
+
+
+ // $ANTLR start rule__ProtocolClass__UserCode2Assignment_5_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14125:1: rule__ProtocolClass__UserCode2Assignment_5_1 : ( ruleDetailCode ) ;
+ public final void rule__ProtocolClass__UserCode2Assignment_5_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14129:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14130:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14130:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14131:1: ruleDetailCode
+ {
+ before(grammarAccess.getProtocolClassAccess().getUserCode2DetailCodeParserRuleCall_5_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__ProtocolClass__UserCode2Assignment_5_128396);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getUserCode2DetailCodeParserRuleCall_5_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__UserCode2Assignment_5_1
+
+
+ // $ANTLR start rule__ProtocolClass__IncomingMessagesAssignment_8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14140:1: rule__ProtocolClass__IncomingMessagesAssignment_8 : ( ruleMessage ) ;
+ public final void rule__ProtocolClass__IncomingMessagesAssignment_8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14144:1: ( ( ruleMessage ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14145:1: ( ruleMessage )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14145:1: ( ruleMessage )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14146:1: ruleMessage
+ {
+ before(grammarAccess.getProtocolClassAccess().getIncomingMessagesMessageParserRuleCall_8_0());
+ pushFollow(FOLLOW_ruleMessage_in_rule__ProtocolClass__IncomingMessagesAssignment_828427);
+ ruleMessage();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getIncomingMessagesMessageParserRuleCall_8_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__IncomingMessagesAssignment_8
+
+
+ // $ANTLR start rule__ProtocolClass__OutgoingMessagesAssignment_12
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14155:1: rule__ProtocolClass__OutgoingMessagesAssignment_12 : ( ruleMessage ) ;
+ public final void rule__ProtocolClass__OutgoingMessagesAssignment_12() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14159:1: ( ( ruleMessage ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14160:1: ( ruleMessage )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14160:1: ( ruleMessage )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14161:1: ruleMessage
+ {
+ before(grammarAccess.getProtocolClassAccess().getOutgoingMessagesMessageParserRuleCall_12_0());
+ pushFollow(FOLLOW_ruleMessage_in_rule__ProtocolClass__OutgoingMessagesAssignment_1228458);
+ ruleMessage();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getOutgoingMessagesMessageParserRuleCall_12_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__OutgoingMessagesAssignment_12
+
+
+ // $ANTLR start rule__ProtocolClass__RegularAssignment_14_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14170:1: rule__ProtocolClass__RegularAssignment_14_2 : ( rulePortClass ) ;
+ public final void rule__ProtocolClass__RegularAssignment_14_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14174:1: ( ( rulePortClass ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14175:1: ( rulePortClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14175:1: ( rulePortClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14176:1: rulePortClass
+ {
+ before(grammarAccess.getProtocolClassAccess().getRegularPortClassParserRuleCall_14_2_0());
+ pushFollow(FOLLOW_rulePortClass_in_rule__ProtocolClass__RegularAssignment_14_228489);
+ rulePortClass();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getRegularPortClassParserRuleCall_14_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__RegularAssignment_14_2
+
+
+ // $ANTLR start rule__ProtocolClass__ConjugateAssignment_15_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14185:1: rule__ProtocolClass__ConjugateAssignment_15_2 : ( rulePortClass ) ;
+ public final void rule__ProtocolClass__ConjugateAssignment_15_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14189:1: ( ( rulePortClass ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14190:1: ( rulePortClass )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14190:1: ( rulePortClass )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14191:1: rulePortClass
+ {
+ before(grammarAccess.getProtocolClassAccess().getConjugatePortClassParserRuleCall_15_2_0());
+ pushFollow(FOLLOW_rulePortClass_in_rule__ProtocolClass__ConjugateAssignment_15_228520);
+ rulePortClass();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getConjugatePortClassParserRuleCall_15_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__ConjugateAssignment_15_2
+
+
+ // $ANTLR start rule__ProtocolClass__SemanticsAssignment_16
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14200:1: rule__ProtocolClass__SemanticsAssignment_16 : ( ruleProtocolSemantics ) ;
+ public final void rule__ProtocolClass__SemanticsAssignment_16() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14204:1: ( ( ruleProtocolSemantics ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14205:1: ( ruleProtocolSemantics )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14205:1: ( ruleProtocolSemantics )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14206:1: ruleProtocolSemantics
+ {
+ before(grammarAccess.getProtocolClassAccess().getSemanticsProtocolSemanticsParserRuleCall_16_0());
+ pushFollow(FOLLOW_ruleProtocolSemantics_in_rule__ProtocolClass__SemanticsAssignment_1628551);
+ ruleProtocolSemantics();
+ _fsp--;
+
+ after(grammarAccess.getProtocolClassAccess().getSemanticsProtocolSemanticsParserRuleCall_16_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolClass__SemanticsAssignment_16
+
+
+ // $ANTLR start rule__Message__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14215:1: rule__Message__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__Message__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14219:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14220:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14220:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14221:1: RULE_ID
+ {
+ before(grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Message__NameAssignment_128582);
+ after(grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__NameAssignment_1
+
+
+ // $ANTLR start rule__Message__ArgumentsAssignment_3_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14230:1: rule__Message__ArgumentsAssignment_3_0 : ( ruleTypedID ) ;
+ public final void rule__Message__ArgumentsAssignment_3_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14234:1: ( ( ruleTypedID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14235:1: ( ruleTypedID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14235:1: ( ruleTypedID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14236:1: ruleTypedID
+ {
+ before(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_0_0());
+ pushFollow(FOLLOW_ruleTypedID_in_rule__Message__ArgumentsAssignment_3_028613);
+ ruleTypedID();
+ _fsp--;
+
+ after(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__ArgumentsAssignment_3_0
+
+
+ // $ANTLR start rule__Message__ArgumentsAssignment_3_1_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14245:1: rule__Message__ArgumentsAssignment_3_1_1 : ( ruleTypedID ) ;
+ public final void rule__Message__ArgumentsAssignment_3_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14249:1: ( ( ruleTypedID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14250:1: ( ruleTypedID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14250:1: ( ruleTypedID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14251:1: ruleTypedID
+ {
+ before(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_1_1_0());
+ pushFollow(FOLLOW_ruleTypedID_in_rule__Message__ArgumentsAssignment_3_1_128644);
+ ruleTypedID();
+ _fsp--;
+
+ after(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Message__ArgumentsAssignment_3_1_1
+
+
+ // $ANTLR start rule__PortClass__UserCodeAssignment_1_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14260:1: rule__PortClass__UserCodeAssignment_1_1 : ( ruleDetailCode ) ;
+ public final void rule__PortClass__UserCodeAssignment_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14264:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14265:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14265:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14266:1: ruleDetailCode
+ {
+ before(grammarAccess.getPortClassAccess().getUserCodeDetailCodeParserRuleCall_1_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__PortClass__UserCodeAssignment_1_128675);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getPortClassAccess().getUserCodeDetailCodeParserRuleCall_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__UserCodeAssignment_1_1
+
+
+ // $ANTLR start rule__PortClass__AttributesAssignment_2_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14275:1: rule__PortClass__AttributesAssignment_2_0 : ( ruleAttribute ) ;
+ public final void rule__PortClass__AttributesAssignment_2_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14279:1: ( ( ruleAttribute ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14280:1: ( ruleAttribute )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14280:1: ( ruleAttribute )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14281:1: ruleAttribute
+ {
+ before(grammarAccess.getPortClassAccess().getAttributesAttributeParserRuleCall_2_0_0());
+ pushFollow(FOLLOW_ruleAttribute_in_rule__PortClass__AttributesAssignment_2_028706);
+ ruleAttribute();
+ _fsp--;
+
+ after(grammarAccess.getPortClassAccess().getAttributesAttributeParserRuleCall_2_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__AttributesAssignment_2_0
+
+
+ // $ANTLR start rule__PortClass__OperationsAssignment_2_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14290:1: rule__PortClass__OperationsAssignment_2_1 : ( ruleOperation ) ;
+ public final void rule__PortClass__OperationsAssignment_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14294:1: ( ( ruleOperation ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14295:1: ( ruleOperation )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14295:1: ( ruleOperation )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14296:1: ruleOperation
+ {
+ before(grammarAccess.getPortClassAccess().getOperationsOperationParserRuleCall_2_1_0());
+ pushFollow(FOLLOW_ruleOperation_in_rule__PortClass__OperationsAssignment_2_128737);
+ ruleOperation();
+ _fsp--;
+
+ after(grammarAccess.getPortClassAccess().getOperationsOperationParserRuleCall_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__OperationsAssignment_2_1
+
+
+ // $ANTLR start rule__PortClass__MsgHandlersAssignment_2_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14305:1: rule__PortClass__MsgHandlersAssignment_2_2 : ( ruleMessageHandler ) ;
+ public final void rule__PortClass__MsgHandlersAssignment_2_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14309:1: ( ( ruleMessageHandler ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14310:1: ( ruleMessageHandler )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14310:1: ( ruleMessageHandler )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14311:1: ruleMessageHandler
+ {
+ before(grammarAccess.getPortClassAccess().getMsgHandlersMessageHandlerParserRuleCall_2_2_0());
+ pushFollow(FOLLOW_ruleMessageHandler_in_rule__PortClass__MsgHandlersAssignment_2_228768);
+ ruleMessageHandler();
+ _fsp--;
+
+ after(grammarAccess.getPortClassAccess().getMsgHandlersMessageHandlerParserRuleCall_2_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__PortClass__MsgHandlersAssignment_2_2
+
+
+ // $ANTLR start rule__MessageHandler__MsgAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14320:1: rule__MessageHandler__MsgAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__MessageHandler__MsgAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14324:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14325:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14325:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14326:1: ( RULE_ID )
+ {
+ before(grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14327:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14328:1: RULE_ID
+ {
+ before(grammarAccess.getMessageHandlerAccess().getMsgMessageIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__MessageHandler__MsgAssignment_128803);
+ after(grammarAccess.getMessageHandlerAccess().getMsgMessageIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__MsgAssignment_1
+
+
+ // $ANTLR start rule__MessageHandler__DetailCodeAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14339:1: rule__MessageHandler__DetailCodeAssignment_2 : ( ruleDetailCode ) ;
+ public final void rule__MessageHandler__DetailCodeAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14343:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14344:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14344:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14345:1: ruleDetailCode
+ {
+ before(grammarAccess.getMessageHandlerAccess().getDetailCodeDetailCodeParserRuleCall_2_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__MessageHandler__DetailCodeAssignment_228838);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getMessageHandlerAccess().getDetailCodeDetailCodeParserRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageHandler__DetailCodeAssignment_2
+
+
+ // $ANTLR start rule__ProtocolSemantics__RulesAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14354:1: rule__ProtocolSemantics__RulesAssignment_2 : ( ruleSemanticsRule ) ;
+ public final void rule__ProtocolSemantics__RulesAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14358:1: ( ( ruleSemanticsRule ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14359:1: ( ruleSemanticsRule )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14359:1: ( ruleSemanticsRule )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14360:1: ruleSemanticsRule
+ {
+ before(grammarAccess.getProtocolSemanticsAccess().getRulesSemanticsRuleParserRuleCall_2_0());
+ pushFollow(FOLLOW_ruleSemanticsRule_in_rule__ProtocolSemantics__RulesAssignment_228869);
+ ruleSemanticsRule();
+ _fsp--;
+
+ after(grammarAccess.getProtocolSemanticsAccess().getRulesSemanticsRuleParserRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ProtocolSemantics__RulesAssignment_2
+
+
+ // $ANTLR start rule__SemanticsInRule__MsgAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14369:1: rule__SemanticsInRule__MsgAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__SemanticsInRule__MsgAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14373:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14374:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14374:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14375:1: ( RULE_ID )
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14376:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14377:1: RULE_ID
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SemanticsInRule__MsgAssignment_128904);
+ after(grammarAccess.getSemanticsInRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__MsgAssignment_1
+
+
+ // $ANTLR start rule__SemanticsInRule__FollowUpsAssignment_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14388:1: rule__SemanticsInRule__FollowUpsAssignment_4 : ( ruleSemanticsRule ) ;
+ public final void rule__SemanticsInRule__FollowUpsAssignment_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14392:1: ( ( ruleSemanticsRule ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14393:1: ( ruleSemanticsRule )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14393:1: ( ruleSemanticsRule )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14394:1: ruleSemanticsRule
+ {
+ before(grammarAccess.getSemanticsInRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0());
+ pushFollow(FOLLOW_ruleSemanticsRule_in_rule__SemanticsInRule__FollowUpsAssignment_428939);
+ ruleSemanticsRule();
+ _fsp--;
+
+ after(grammarAccess.getSemanticsInRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsInRule__FollowUpsAssignment_4
+
+
+ // $ANTLR start rule__SemanticsOutRule__MsgAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14403:1: rule__SemanticsOutRule__MsgAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__SemanticsOutRule__MsgAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14407:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14408:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14408:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14409:1: ( RULE_ID )
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14410:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14411:1: RULE_ID
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SemanticsOutRule__MsgAssignment_128974);
+ after(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__MsgAssignment_1
+
+
+ // $ANTLR start rule__SemanticsOutRule__FollowUpsAssignment_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14422:1: rule__SemanticsOutRule__FollowUpsAssignment_4 : ( ruleSemanticsRule ) ;
+ public final void rule__SemanticsOutRule__FollowUpsAssignment_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14426:1: ( ( ruleSemanticsRule ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14427:1: ( ruleSemanticsRule )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14427:1: ( ruleSemanticsRule )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14428:1: ruleSemanticsRule
+ {
+ before(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0());
+ pushFollow(FOLLOW_ruleSemanticsRule_in_rule__SemanticsOutRule__FollowUpsAssignment_429009);
+ ruleSemanticsRule();
+ _fsp--;
+
+ after(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SemanticsOutRule__FollowUpsAssignment_4
+
+
+ // $ANTLR start rule__ActorClass__AbstractAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14437:1: rule__ActorClass__AbstractAssignment_0 : ( ( 'abstract' ) ) ;
+ public final void rule__ActorClass__AbstractAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14441:1: ( ( ( 'abstract' ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14442:1: ( ( 'abstract' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14442:1: ( ( 'abstract' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14443:1: ( 'abstract' )
+ {
+ before(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14444:1: ( 'abstract' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14445:1: 'abstract'
+ {
+ before(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0());
+ match(input,97,FOLLOW_97_in_rule__ActorClass__AbstractAssignment_029045);
+ after(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0());
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__AbstractAssignment_0
+
+
+ // $ANTLR start rule__ActorClass__NameAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14460:1: rule__ActorClass__NameAssignment_2 : ( RULE_ID ) ;
+ public final void rule__ActorClass__NameAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14464:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14465:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14465:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14466:1: RULE_ID
+ {
+ before(grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ActorClass__NameAssignment_229084);
+ after(grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__NameAssignment_2
+
+
+ // $ANTLR start rule__ActorClass__BaseAssignment_3_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14475:1: rule__ActorClass__BaseAssignment_3_1 : ( ( ruleFQN ) ) ;
+ public final void rule__ActorClass__BaseAssignment_3_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14479:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14480:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14480:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14481:1: ( ruleFQN )
+ {
+ before(grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14482:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14483:1: ruleFQN
+ {
+ before(grammarAccess.getActorClassAccess().getBaseActorClassFQNParserRuleCall_3_1_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__ActorClass__BaseAssignment_3_129119);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getBaseActorClassFQNParserRuleCall_3_1_0_1());
+
+ }
+
+ after(grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__BaseAssignment_3_1
+
+
+ // $ANTLR start rule__ActorClass__IfPortsAssignment_5_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14494:1: rule__ActorClass__IfPortsAssignment_5_2 : ( rulePort ) ;
+ public final void rule__ActorClass__IfPortsAssignment_5_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14498:1: ( ( rulePort ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14499:1: ( rulePort )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14499:1: ( rulePort )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14500:1: rulePort
+ {
+ before(grammarAccess.getActorClassAccess().getIfPortsPortParserRuleCall_5_2_0());
+ pushFollow(FOLLOW_rulePort_in_rule__ActorClass__IfPortsAssignment_5_229154);
+ rulePort();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getIfPortsPortParserRuleCall_5_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__IfPortsAssignment_5_2
+
+
+ // $ANTLR start rule__ActorClass__IfSPPsAssignment_5_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14509:1: rule__ActorClass__IfSPPsAssignment_5_3 : ( ruleSPPRef ) ;
+ public final void rule__ActorClass__IfSPPsAssignment_5_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14513:1: ( ( ruleSPPRef ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14514:1: ( ruleSPPRef )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14514:1: ( ruleSPPRef )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14515:1: ruleSPPRef
+ {
+ before(grammarAccess.getActorClassAccess().getIfSPPsSPPRefParserRuleCall_5_3_0());
+ pushFollow(FOLLOW_ruleSPPRef_in_rule__ActorClass__IfSPPsAssignment_5_329185);
+ ruleSPPRef();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getIfSPPsSPPRefParserRuleCall_5_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__IfSPPsAssignment_5_3
+
+
+ // $ANTLR start rule__ActorClass__UserCode1Assignment_6_2_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14524:1: rule__ActorClass__UserCode1Assignment_6_2_1 : ( ruleDetailCode ) ;
+ public final void rule__ActorClass__UserCode1Assignment_6_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14528:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14529:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14529:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14530:1: ruleDetailCode
+ {
+ before(grammarAccess.getActorClassAccess().getUserCode1DetailCodeParserRuleCall_6_2_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__ActorClass__UserCode1Assignment_6_2_129216);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getUserCode1DetailCodeParserRuleCall_6_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__UserCode1Assignment_6_2_1
+
+
+ // $ANTLR start rule__ActorClass__UserCode2Assignment_6_3_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14539:1: rule__ActorClass__UserCode2Assignment_6_3_1 : ( ruleDetailCode ) ;
+ public final void rule__ActorClass__UserCode2Assignment_6_3_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14543:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14544:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14544:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14545:1: ruleDetailCode
+ {
+ before(grammarAccess.getActorClassAccess().getUserCode2DetailCodeParserRuleCall_6_3_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__ActorClass__UserCode2Assignment_6_3_129247);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getUserCode2DetailCodeParserRuleCall_6_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__UserCode2Assignment_6_3_1
+
+
+ // $ANTLR start rule__ActorClass__IntPortsAssignment_6_4_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14554:1: rule__ActorClass__IntPortsAssignment_6_4_0 : ( rulePort ) ;
+ public final void rule__ActorClass__IntPortsAssignment_6_4_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14558:1: ( ( rulePort ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14559:1: ( rulePort )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14559:1: ( rulePort )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14560:1: rulePort
+ {
+ before(grammarAccess.getActorClassAccess().getIntPortsPortParserRuleCall_6_4_0_0());
+ pushFollow(FOLLOW_rulePort_in_rule__ActorClass__IntPortsAssignment_6_4_029278);
+ rulePort();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getIntPortsPortParserRuleCall_6_4_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__IntPortsAssignment_6_4_0
+
+
+ // $ANTLR start rule__ActorClass__ExtPortsAssignment_6_4_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14569:1: rule__ActorClass__ExtPortsAssignment_6_4_1 : ( ruleExternalPort ) ;
+ public final void rule__ActorClass__ExtPortsAssignment_6_4_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14573:1: ( ( ruleExternalPort ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14574:1: ( ruleExternalPort )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14574:1: ( ruleExternalPort )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14575:1: ruleExternalPort
+ {
+ before(grammarAccess.getActorClassAccess().getExtPortsExternalPortParserRuleCall_6_4_1_0());
+ pushFollow(FOLLOW_ruleExternalPort_in_rule__ActorClass__ExtPortsAssignment_6_4_129309);
+ ruleExternalPort();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getExtPortsExternalPortParserRuleCall_6_4_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__ExtPortsAssignment_6_4_1
+
+
+ // $ANTLR start rule__ActorClass__ServiceImplementationsAssignment_6_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14584:1: rule__ActorClass__ServiceImplementationsAssignment_6_5 : ( ruleServiceImplementation ) ;
+ public final void rule__ActorClass__ServiceImplementationsAssignment_6_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14588:1: ( ( ruleServiceImplementation ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14589:1: ( ruleServiceImplementation )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14589:1: ( ruleServiceImplementation )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14590:1: ruleServiceImplementation
+ {
+ before(grammarAccess.getActorClassAccess().getServiceImplementationsServiceImplementationParserRuleCall_6_5_0());
+ pushFollow(FOLLOW_ruleServiceImplementation_in_rule__ActorClass__ServiceImplementationsAssignment_6_529340);
+ ruleServiceImplementation();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getServiceImplementationsServiceImplementationParserRuleCall_6_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__ServiceImplementationsAssignment_6_5
+
+
+ // $ANTLR start rule__ActorClass__StrSAPsAssignment_6_6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14599:1: rule__ActorClass__StrSAPsAssignment_6_6 : ( ruleSAPRef ) ;
+ public final void rule__ActorClass__StrSAPsAssignment_6_6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14603:1: ( ( ruleSAPRef ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14604:1: ( ruleSAPRef )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14604:1: ( ruleSAPRef )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14605:1: ruleSAPRef
+ {
+ before(grammarAccess.getActorClassAccess().getStrSAPsSAPRefParserRuleCall_6_6_0());
+ pushFollow(FOLLOW_ruleSAPRef_in_rule__ActorClass__StrSAPsAssignment_6_629371);
+ ruleSAPRef();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getStrSAPsSAPRefParserRuleCall_6_6_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__StrSAPsAssignment_6_6
+
+
+ // $ANTLR start rule__ActorClass__AttributesAssignment_6_7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14614:1: rule__ActorClass__AttributesAssignment_6_7 : ( ruleAttribute ) ;
+ public final void rule__ActorClass__AttributesAssignment_6_7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14618:1: ( ( ruleAttribute ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14619:1: ( ruleAttribute )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14619:1: ( ruleAttribute )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14620:1: ruleAttribute
+ {
+ before(grammarAccess.getActorClassAccess().getAttributesAttributeParserRuleCall_6_7_0());
+ pushFollow(FOLLOW_ruleAttribute_in_rule__ActorClass__AttributesAssignment_6_729402);
+ ruleAttribute();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getAttributesAttributeParserRuleCall_6_7_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__AttributesAssignment_6_7
+
+
+ // $ANTLR start rule__ActorClass__ActorRefsAssignment_6_8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14629:1: rule__ActorClass__ActorRefsAssignment_6_8 : ( ruleActorRef ) ;
+ public final void rule__ActorClass__ActorRefsAssignment_6_8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14633:1: ( ( ruleActorRef ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14634:1: ( ruleActorRef )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14634:1: ( ruleActorRef )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14635:1: ruleActorRef
+ {
+ before(grammarAccess.getActorClassAccess().getActorRefsActorRefParserRuleCall_6_8_0());
+ pushFollow(FOLLOW_ruleActorRef_in_rule__ActorClass__ActorRefsAssignment_6_829433);
+ ruleActorRef();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getActorRefsActorRefParserRuleCall_6_8_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__ActorRefsAssignment_6_8
+
+
+ // $ANTLR start rule__ActorClass__BindingsAssignment_6_9
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14644:1: rule__ActorClass__BindingsAssignment_6_9 : ( ruleBinding ) ;
+ public final void rule__ActorClass__BindingsAssignment_6_9() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14648:1: ( ( ruleBinding ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14649:1: ( ruleBinding )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14649:1: ( ruleBinding )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14650:1: ruleBinding
+ {
+ before(grammarAccess.getActorClassAccess().getBindingsBindingParserRuleCall_6_9_0());
+ pushFollow(FOLLOW_ruleBinding_in_rule__ActorClass__BindingsAssignment_6_929464);
+ ruleBinding();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getBindingsBindingParserRuleCall_6_9_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__BindingsAssignment_6_9
+
+
+ // $ANTLR start rule__ActorClass__ConnectionsAssignment_6_10
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14659:1: rule__ActorClass__ConnectionsAssignment_6_10 : ( ruleLayerConnection ) ;
+ public final void rule__ActorClass__ConnectionsAssignment_6_10() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14663:1: ( ( ruleLayerConnection ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14664:1: ( ruleLayerConnection )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14664:1: ( ruleLayerConnection )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14665:1: ruleLayerConnection
+ {
+ before(grammarAccess.getActorClassAccess().getConnectionsLayerConnectionParserRuleCall_6_10_0());
+ pushFollow(FOLLOW_ruleLayerConnection_in_rule__ActorClass__ConnectionsAssignment_6_1029495);
+ ruleLayerConnection();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getConnectionsLayerConnectionParserRuleCall_6_10_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__ConnectionsAssignment_6_10
+
+
+ // $ANTLR start rule__ActorClass__OperationsAssignment_7_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14674:1: rule__ActorClass__OperationsAssignment_7_2 : ( ruleOperation ) ;
+ public final void rule__ActorClass__OperationsAssignment_7_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14678:1: ( ( ruleOperation ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14679:1: ( ruleOperation )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14679:1: ( ruleOperation )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14680:1: ruleOperation
+ {
+ before(grammarAccess.getActorClassAccess().getOperationsOperationParserRuleCall_7_2_0());
+ pushFollow(FOLLOW_ruleOperation_in_rule__ActorClass__OperationsAssignment_7_229526);
+ ruleOperation();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getOperationsOperationParserRuleCall_7_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__OperationsAssignment_7_2
+
+
+ // $ANTLR start rule__ActorClass__StateMachineAssignment_7_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14689:1: rule__ActorClass__StateMachineAssignment_7_3 : ( ruleStateMachine ) ;
+ public final void rule__ActorClass__StateMachineAssignment_7_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14693:1: ( ( ruleStateMachine ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14694:1: ( ruleStateMachine )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14694:1: ( ruleStateMachine )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14695:1: ruleStateMachine
+ {
+ before(grammarAccess.getActorClassAccess().getStateMachineStateMachineParserRuleCall_7_3_0());
+ pushFollow(FOLLOW_ruleStateMachine_in_rule__ActorClass__StateMachineAssignment_7_329557);
+ ruleStateMachine();
+ _fsp--;
+
+ after(grammarAccess.getActorClassAccess().getStateMachineStateMachineParserRuleCall_7_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorClass__StateMachineAssignment_7_3
+
+
+ // $ANTLR start rule__Port__ConjugatedAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14704:1: rule__Port__ConjugatedAssignment_0 : ( ( 'conjugated' ) ) ;
+ public final void rule__Port__ConjugatedAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14708:1: ( ( ( 'conjugated' ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14709:1: ( ( 'conjugated' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14709:1: ( ( 'conjugated' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14710:1: ( 'conjugated' )
+ {
+ before(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14711:1: ( 'conjugated' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14712:1: 'conjugated'
+ {
+ before(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0());
+ match(input,98,FOLLOW_98_in_rule__Port__ConjugatedAssignment_029593);
+ after(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0());
+
+ }
+
+ after(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__ConjugatedAssignment_0
+
+
+ // $ANTLR start rule__Port__NameAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14727:1: rule__Port__NameAssignment_2 : ( RULE_ID ) ;
+ public final void rule__Port__NameAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14731:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14732:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14732:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14733:1: RULE_ID
+ {
+ before(grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Port__NameAssignment_229632);
+ after(grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__NameAssignment_2
+
+
+ // $ANTLR start rule__Port__MultiplicityAssignment_3_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14742:1: rule__Port__MultiplicityAssignment_3_1 : ( RULE_INT ) ;
+ public final void rule__Port__MultiplicityAssignment_3_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14746:1: ( ( RULE_INT ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14747:1: ( RULE_INT )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14747:1: ( RULE_INT )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14748:1: RULE_INT
+ {
+ before(grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0());
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__Port__MultiplicityAssignment_3_129663);
+ after(grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__MultiplicityAssignment_3_1
+
+
+ // $ANTLR start rule__Port__ProtocolAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14757:1: rule__Port__ProtocolAssignment_5 : ( ( ruleFQN ) ) ;
+ public final void rule__Port__ProtocolAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14761:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14762:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14762:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14763:1: ( ruleFQN )
+ {
+ before(grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14764:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14765:1: ruleFQN
+ {
+ before(grammarAccess.getPortAccess().getProtocolProtocolClassFQNParserRuleCall_5_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__Port__ProtocolAssignment_529698);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getPortAccess().getProtocolProtocolClassFQNParserRuleCall_5_0_1());
+
+ }
+
+ after(grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Port__ProtocolAssignment_5
+
+
+ // $ANTLR start rule__ExternalPort__IfportAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14776:1: rule__ExternalPort__IfportAssignment_2 : ( ( RULE_ID ) ) ;
+ public final void rule__ExternalPort__IfportAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14780:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14781:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14781:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14782:1: ( RULE_ID )
+ {
+ before(grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14783:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14784:1: RULE_ID
+ {
+ before(grammarAccess.getExternalPortAccess().getIfportPortIDTerminalRuleCall_2_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ExternalPort__IfportAssignment_229737);
+ after(grammarAccess.getExternalPortAccess().getIfportPortIDTerminalRuleCall_2_0_1());
+
+ }
+
+ after(grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExternalPort__IfportAssignment_2
+
+
+ // $ANTLR start rule__SAPRef__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14795:1: rule__SAPRef__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__SAPRef__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14799:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14800:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14800:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14801:1: RULE_ID
+ {
+ before(grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SAPRef__NameAssignment_129772);
+ after(grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__NameAssignment_1
+
+
+ // $ANTLR start rule__SAPRef__ProtocolAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14810:1: rule__SAPRef__ProtocolAssignment_3 : ( ( ruleFQN ) ) ;
+ public final void rule__SAPRef__ProtocolAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14814:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14815:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14815:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14816:1: ( ruleFQN )
+ {
+ before(grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14817:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14818:1: ruleFQN
+ {
+ before(grammarAccess.getSAPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__SAPRef__ProtocolAssignment_329807);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getSAPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1());
+
+ }
+
+ after(grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SAPRef__ProtocolAssignment_3
+
+
+ // $ANTLR start rule__SPPRef__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14829:1: rule__SPPRef__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__SPPRef__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14833:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14834:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14834:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14835:1: RULE_ID
+ {
+ before(grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SPPRef__NameAssignment_129842);
+ after(grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__NameAssignment_1
+
+
+ // $ANTLR start rule__SPPRef__ProtocolAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14844:1: rule__SPPRef__ProtocolAssignment_3 : ( ( ruleFQN ) ) ;
+ public final void rule__SPPRef__ProtocolAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14848:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14849:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14849:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14850:1: ( ruleFQN )
+ {
+ before(grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14851:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14852:1: ruleFQN
+ {
+ before(grammarAccess.getSPPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__SPPRef__ProtocolAssignment_329877);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getSPPRefAccess().getProtocolProtocolClassFQNParserRuleCall_3_0_1());
+
+ }
+
+ after(grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPRef__ProtocolAssignment_3
+
+
+ // $ANTLR start rule__ServiceImplementation__SppAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14863:1: rule__ServiceImplementation__SppAssignment_2 : ( ( RULE_ID ) ) ;
+ public final void rule__ServiceImplementation__SppAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14867:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14868:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14868:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14869:1: ( RULE_ID )
+ {
+ before(grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14870:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14871:1: RULE_ID
+ {
+ before(grammarAccess.getServiceImplementationAccess().getSppSPPRefIDTerminalRuleCall_2_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ServiceImplementation__SppAssignment_229916);
+ after(grammarAccess.getServiceImplementationAccess().getSppSPPRefIDTerminalRuleCall_2_0_1());
+
+ }
+
+ after(grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ServiceImplementation__SppAssignment_2
+
+
+ // $ANTLR start rule__LogicalSystem__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14882:1: rule__LogicalSystem__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__LogicalSystem__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14886:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14887:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14887:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14888:1: RULE_ID
+ {
+ before(grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__LogicalSystem__NameAssignment_129951);
+ after(grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__NameAssignment_1
+
+
+ // $ANTLR start rule__LogicalSystem__SubSystemsAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14897:1: rule__LogicalSystem__SubSystemsAssignment_3 : ( ruleSubSystemRef ) ;
+ public final void rule__LogicalSystem__SubSystemsAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14901:1: ( ( ruleSubSystemRef ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14902:1: ( ruleSubSystemRef )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14902:1: ( ruleSubSystemRef )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14903:1: ruleSubSystemRef
+ {
+ before(grammarAccess.getLogicalSystemAccess().getSubSystemsSubSystemRefParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleSubSystemRef_in_rule__LogicalSystem__SubSystemsAssignment_329982);
+ ruleSubSystemRef();
+ _fsp--;
+
+ after(grammarAccess.getLogicalSystemAccess().getSubSystemsSubSystemRefParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__SubSystemsAssignment_3
+
+
+ // $ANTLR start rule__LogicalSystem__BindingsAssignment_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14912:1: rule__LogicalSystem__BindingsAssignment_4 : ( ruleBinding ) ;
+ public final void rule__LogicalSystem__BindingsAssignment_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14916:1: ( ( ruleBinding ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14917:1: ( ruleBinding )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14917:1: ( ruleBinding )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14918:1: ruleBinding
+ {
+ before(grammarAccess.getLogicalSystemAccess().getBindingsBindingParserRuleCall_4_0());
+ pushFollow(FOLLOW_ruleBinding_in_rule__LogicalSystem__BindingsAssignment_430013);
+ ruleBinding();
+ _fsp--;
+
+ after(grammarAccess.getLogicalSystemAccess().getBindingsBindingParserRuleCall_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__BindingsAssignment_4
+
+
+ // $ANTLR start rule__LogicalSystem__ConnectionsAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14927:1: rule__LogicalSystem__ConnectionsAssignment_5 : ( ruleLayerConnection ) ;
+ public final void rule__LogicalSystem__ConnectionsAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14931:1: ( ( ruleLayerConnection ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14932:1: ( ruleLayerConnection )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14932:1: ( ruleLayerConnection )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14933:1: ruleLayerConnection
+ {
+ before(grammarAccess.getLogicalSystemAccess().getConnectionsLayerConnectionParserRuleCall_5_0());
+ pushFollow(FOLLOW_ruleLayerConnection_in_rule__LogicalSystem__ConnectionsAssignment_530044);
+ ruleLayerConnection();
+ _fsp--;
+
+ after(grammarAccess.getLogicalSystemAccess().getConnectionsLayerConnectionParserRuleCall_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalSystem__ConnectionsAssignment_5
+
+
+ // $ANTLR start rule__SubSystemRef__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14942:1: rule__SubSystemRef__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__SubSystemRef__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14946:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14947:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14947:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14948:1: RULE_ID
+ {
+ before(grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SubSystemRef__NameAssignment_130075);
+ after(grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__NameAssignment_1
+
+
+ // $ANTLR start rule__SubSystemRef__TypeAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14957:1: rule__SubSystemRef__TypeAssignment_3 : ( ( ruleFQN ) ) ;
+ public final void rule__SubSystemRef__TypeAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14961:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14962:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14962:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14963:1: ( ruleFQN )
+ {
+ before(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14964:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14965:1: ruleFQN
+ {
+ before(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassFQNParserRuleCall_3_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__SubSystemRef__TypeAssignment_330110);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassFQNParserRuleCall_3_0_1());
+
+ }
+
+ after(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemRef__TypeAssignment_3
+
+
+ // $ANTLR start rule__SubSystemClass__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14976:1: rule__SubSystemClass__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__SubSystemClass__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14980:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14981:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14981:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14982:1: RULE_ID
+ {
+ before(grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SubSystemClass__NameAssignment_130145);
+ after(grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__NameAssignment_1
+
+
+ // $ANTLR start rule__SubSystemClass__RelayPortsAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14991:1: rule__SubSystemClass__RelayPortsAssignment_3 : ( rulePort ) ;
+ public final void rule__SubSystemClass__RelayPortsAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14995:1: ( ( rulePort ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14996:1: ( rulePort )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14996:1: ( rulePort )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:14997:1: rulePort
+ {
+ before(grammarAccess.getSubSystemClassAccess().getRelayPortsPortParserRuleCall_3_0());
+ pushFollow(FOLLOW_rulePort_in_rule__SubSystemClass__RelayPortsAssignment_330176);
+ rulePort();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemClassAccess().getRelayPortsPortParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__RelayPortsAssignment_3
+
+
+ // $ANTLR start rule__SubSystemClass__IfSPPsAssignment_4
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15006:1: rule__SubSystemClass__IfSPPsAssignment_4 : ( ruleSPPRef ) ;
+ public final void rule__SubSystemClass__IfSPPsAssignment_4() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15010:1: ( ( ruleSPPRef ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15011:1: ( ruleSPPRef )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15011:1: ( ruleSPPRef )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15012:1: ruleSPPRef
+ {
+ before(grammarAccess.getSubSystemClassAccess().getIfSPPsSPPRefParserRuleCall_4_0());
+ pushFollow(FOLLOW_ruleSPPRef_in_rule__SubSystemClass__IfSPPsAssignment_430207);
+ ruleSPPRef();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemClassAccess().getIfSPPsSPPRefParserRuleCall_4_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__IfSPPsAssignment_4
+
+
+ // $ANTLR start rule__SubSystemClass__ActorRefsAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15021:1: rule__SubSystemClass__ActorRefsAssignment_5 : ( ruleActorRef ) ;
+ public final void rule__SubSystemClass__ActorRefsAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15025:1: ( ( ruleActorRef ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15026:1: ( ruleActorRef )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15026:1: ( ruleActorRef )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15027:1: ruleActorRef
+ {
+ before(grammarAccess.getSubSystemClassAccess().getActorRefsActorRefParserRuleCall_5_0());
+ pushFollow(FOLLOW_ruleActorRef_in_rule__SubSystemClass__ActorRefsAssignment_530238);
+ ruleActorRef();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemClassAccess().getActorRefsActorRefParserRuleCall_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__ActorRefsAssignment_5
+
+
+ // $ANTLR start rule__SubSystemClass__BindingsAssignment_6
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15036:1: rule__SubSystemClass__BindingsAssignment_6 : ( ruleBinding ) ;
+ public final void rule__SubSystemClass__BindingsAssignment_6() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15040:1: ( ( ruleBinding ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15041:1: ( ruleBinding )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15041:1: ( ruleBinding )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15042:1: ruleBinding
+ {
+ before(grammarAccess.getSubSystemClassAccess().getBindingsBindingParserRuleCall_6_0());
+ pushFollow(FOLLOW_ruleBinding_in_rule__SubSystemClass__BindingsAssignment_630269);
+ ruleBinding();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemClassAccess().getBindingsBindingParserRuleCall_6_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__BindingsAssignment_6
+
+
+ // $ANTLR start rule__SubSystemClass__ConnectionsAssignment_7
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15051:1: rule__SubSystemClass__ConnectionsAssignment_7 : ( ruleLayerConnection ) ;
+ public final void rule__SubSystemClass__ConnectionsAssignment_7() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15055:1: ( ( ruleLayerConnection ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15056:1: ( ruleLayerConnection )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15056:1: ( ruleLayerConnection )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15057:1: ruleLayerConnection
+ {
+ before(grammarAccess.getSubSystemClassAccess().getConnectionsLayerConnectionParserRuleCall_7_0());
+ pushFollow(FOLLOW_ruleLayerConnection_in_rule__SubSystemClass__ConnectionsAssignment_730300);
+ ruleLayerConnection();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemClassAccess().getConnectionsLayerConnectionParserRuleCall_7_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__ConnectionsAssignment_7
+
+
+ // $ANTLR start rule__SubSystemClass__ThreadsAssignment_8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15066:1: rule__SubSystemClass__ThreadsAssignment_8 : ( ruleLogicalThread ) ;
+ public final void rule__SubSystemClass__ThreadsAssignment_8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15070:1: ( ( ruleLogicalThread ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15071:1: ( ruleLogicalThread )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15071:1: ( ruleLogicalThread )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15072:1: ruleLogicalThread
+ {
+ before(grammarAccess.getSubSystemClassAccess().getThreadsLogicalThreadParserRuleCall_8_0());
+ pushFollow(FOLLOW_ruleLogicalThread_in_rule__SubSystemClass__ThreadsAssignment_830331);
+ ruleLogicalThread();
+ _fsp--;
+
+ after(grammarAccess.getSubSystemClassAccess().getThreadsLogicalThreadParserRuleCall_8_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubSystemClass__ThreadsAssignment_8
+
+
+ // $ANTLR start rule__LogicalThread__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15081:1: rule__LogicalThread__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__LogicalThread__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15085:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15086:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15086:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15087:1: RULE_ID
+ {
+ before(grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__LogicalThread__NameAssignment_130362);
+ after(grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__NameAssignment_1
+
+
+ // $ANTLR start rule__LogicalThread__InstancesAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15096:1: rule__LogicalThread__InstancesAssignment_3 : ( ruleActorInstancePath ) ;
+ public final void rule__LogicalThread__InstancesAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15100:1: ( ( ruleActorInstancePath ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15101:1: ( ruleActorInstancePath )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15101:1: ( ruleActorInstancePath )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15102:1: ruleActorInstancePath
+ {
+ before(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleActorInstancePath_in_rule__LogicalThread__InstancesAssignment_330393);
+ ruleActorInstancePath();
+ _fsp--;
+
+ after(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__InstancesAssignment_3
+
+
+ // $ANTLR start rule__LogicalThread__InstancesAssignment_4_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15111:1: rule__LogicalThread__InstancesAssignment_4_1 : ( ruleActorInstancePath ) ;
+ public final void rule__LogicalThread__InstancesAssignment_4_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15115:1: ( ( ruleActorInstancePath ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15116:1: ( ruleActorInstancePath )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15116:1: ( ruleActorInstancePath )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15117:1: ruleActorInstancePath
+ {
+ before(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_4_1_0());
+ pushFollow(FOLLOW_ruleActorInstancePath_in_rule__LogicalThread__InstancesAssignment_4_130424);
+ ruleActorInstancePath();
+ _fsp--;
+
+ after(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_4_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LogicalThread__InstancesAssignment_4_1
+
+
+ // $ANTLR start rule__ActorInstancePath__SegmentsAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15126:1: rule__ActorInstancePath__SegmentsAssignment_0 : ( RULE_ID ) ;
+ public final void rule__ActorInstancePath__SegmentsAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15130:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15131:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15131:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15132:1: RULE_ID
+ {
+ before(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ActorInstancePath__SegmentsAssignment_030455);
+ after(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__SegmentsAssignment_0
+
+
+ // $ANTLR start rule__ActorInstancePath__SegmentsAssignment_1_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15141:1: rule__ActorInstancePath__SegmentsAssignment_1_1 : ( RULE_ID ) ;
+ public final void rule__ActorInstancePath__SegmentsAssignment_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15145:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15146:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15146:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15147:1: RULE_ID
+ {
+ before(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ActorInstancePath__SegmentsAssignment_1_130486);
+ after(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorInstancePath__SegmentsAssignment_1_1
+
+
+ // $ANTLR start rule__Binding__Endpoint1Assignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15156:1: rule__Binding__Endpoint1Assignment_1 : ( ruleBindingEndPoint ) ;
+ public final void rule__Binding__Endpoint1Assignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15160:1: ( ( ruleBindingEndPoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15161:1: ( ruleBindingEndPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15161:1: ( ruleBindingEndPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15162:1: ruleBindingEndPoint
+ {
+ before(grammarAccess.getBindingAccess().getEndpoint1BindingEndPointParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleBindingEndPoint_in_rule__Binding__Endpoint1Assignment_130517);
+ ruleBindingEndPoint();
+ _fsp--;
+
+ after(grammarAccess.getBindingAccess().getEndpoint1BindingEndPointParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Endpoint1Assignment_1
+
+
+ // $ANTLR start rule__Binding__Endpoint2Assignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15171:1: rule__Binding__Endpoint2Assignment_3 : ( ruleBindingEndPoint ) ;
+ public final void rule__Binding__Endpoint2Assignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15175:1: ( ( ruleBindingEndPoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15176:1: ( ruleBindingEndPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15176:1: ( ruleBindingEndPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15177:1: ruleBindingEndPoint
+ {
+ before(grammarAccess.getBindingAccess().getEndpoint2BindingEndPointParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleBindingEndPoint_in_rule__Binding__Endpoint2Assignment_330548);
+ ruleBindingEndPoint();
+ _fsp--;
+
+ after(grammarAccess.getBindingAccess().getEndpoint2BindingEndPointParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Binding__Endpoint2Assignment_3
+
+
+ // $ANTLR start rule__BindingEndPoint__ActorRefAssignment_0_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15186:1: rule__BindingEndPoint__ActorRefAssignment_0_0 : ( ( RULE_ID ) ) ;
+ public final void rule__BindingEndPoint__ActorRefAssignment_0_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15190:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15191:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15191:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15192:1: ( RULE_ID )
+ {
+ before(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15193:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15194:1: RULE_ID
+ {
+ before(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefIDTerminalRuleCall_0_0_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__BindingEndPoint__ActorRefAssignment_0_030583);
+ after(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefIDTerminalRuleCall_0_0_0_1());
+
+ }
+
+ after(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__ActorRefAssignment_0_0
+
+
+ // $ANTLR start rule__BindingEndPoint__PortAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15205:1: rule__BindingEndPoint__PortAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__BindingEndPoint__PortAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15209:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15210:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15210:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15211:1: ( RULE_ID )
+ {
+ before(grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15212:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15213:1: RULE_ID
+ {
+ before(grammarAccess.getBindingEndPointAccess().getPortPortIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__BindingEndPoint__PortAssignment_130622);
+ after(grammarAccess.getBindingEndPointAccess().getPortPortIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BindingEndPoint__PortAssignment_1
+
+
+ // $ANTLR start rule__LayerConnection__FromAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15224:1: rule__LayerConnection__FromAssignment_1 : ( ruleSAPoint ) ;
+ public final void rule__LayerConnection__FromAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15228:1: ( ( ruleSAPoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15229:1: ( ruleSAPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15229:1: ( ruleSAPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15230:1: ruleSAPoint
+ {
+ before(grammarAccess.getLayerConnectionAccess().getFromSAPointParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleSAPoint_in_rule__LayerConnection__FromAssignment_130657);
+ ruleSAPoint();
+ _fsp--;
+
+ after(grammarAccess.getLayerConnectionAccess().getFromSAPointParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__FromAssignment_1
+
+
+ // $ANTLR start rule__LayerConnection__ToAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15239:1: rule__LayerConnection__ToAssignment_3 : ( ruleSPPoint ) ;
+ public final void rule__LayerConnection__ToAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15243:1: ( ( ruleSPPoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15244:1: ( ruleSPPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15244:1: ( ruleSPPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15245:1: ruleSPPoint
+ {
+ before(grammarAccess.getLayerConnectionAccess().getToSPPointParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleSPPoint_in_rule__LayerConnection__ToAssignment_330688);
+ ruleSPPoint();
+ _fsp--;
+
+ after(grammarAccess.getLayerConnectionAccess().getToSPPointParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__LayerConnection__ToAssignment_3
+
+
+ // $ANTLR start rule__RefSAPoint__RefAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15254:1: rule__RefSAPoint__RefAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__RefSAPoint__RefAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15258:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15259:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15259:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15260:1: ( RULE_ID )
+ {
+ before(grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15261:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15262:1: RULE_ID
+ {
+ before(grammarAccess.getRefSAPointAccess().getRefActorContainerRefIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__RefSAPoint__RefAssignment_130723);
+ after(grammarAccess.getRefSAPointAccess().getRefActorContainerRefIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefSAPoint__RefAssignment_1
+
+
+ // $ANTLR start rule__RelaySAPoint__RelayAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15273:1: rule__RelaySAPoint__RelayAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__RelaySAPoint__RelayAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15277:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15278:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15278:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15279:1: ( RULE_ID )
+ {
+ before(grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15280:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15281:1: RULE_ID
+ {
+ before(grammarAccess.getRelaySAPointAccess().getRelaySPPRefIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__RelaySAPoint__RelayAssignment_130762);
+ after(grammarAccess.getRelaySAPointAccess().getRelaySPPRefIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RelaySAPoint__RelayAssignment_1
+
+
+ // $ANTLR start rule__SPPoint__RefAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15292:1: rule__SPPoint__RefAssignment_0 : ( ( RULE_ID ) ) ;
+ public final void rule__SPPoint__RefAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15296:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15297:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15297:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15298:1: ( RULE_ID )
+ {
+ before(grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15299:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15300:1: RULE_ID
+ {
+ before(grammarAccess.getSPPointAccess().getRefActorContainerRefIDTerminalRuleCall_0_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SPPoint__RefAssignment_030801);
+ after(grammarAccess.getSPPointAccess().getRefActorContainerRefIDTerminalRuleCall_0_0_1());
+
+ }
+
+ after(grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__RefAssignment_0
+
+
+ // $ANTLR start rule__SPPoint__ServiceAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15311:1: rule__SPPoint__ServiceAssignment_2 : ( ( RULE_ID ) ) ;
+ public final void rule__SPPoint__ServiceAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15315:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15316:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15316:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15317:1: ( RULE_ID )
+ {
+ before(grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15318:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15319:1: RULE_ID
+ {
+ before(grammarAccess.getSPPointAccess().getServiceSPPRefIDTerminalRuleCall_2_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SPPoint__ServiceAssignment_230840);
+ after(grammarAccess.getSPPointAccess().getServiceSPPRefIDTerminalRuleCall_2_0_1());
+
+ }
+
+ after(grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SPPoint__ServiceAssignment_2
+
+
+ // $ANTLR start rule__ActorRef__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15330:1: rule__ActorRef__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__ActorRef__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15334:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15335:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15335:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15336:1: RULE_ID
+ {
+ before(grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ActorRef__NameAssignment_130875);
+ after(grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__NameAssignment_1
+
+
+ // $ANTLR start rule__ActorRef__TypeAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15345:1: rule__ActorRef__TypeAssignment_3 : ( ( ruleFQN ) ) ;
+ public final void rule__ActorRef__TypeAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15349:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15350:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15350:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15351:1: ( ruleFQN )
+ {
+ before(grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15352:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15353:1: ruleFQN
+ {
+ before(grammarAccess.getActorRefAccess().getTypeActorClassFQNParserRuleCall_3_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__ActorRef__TypeAssignment_330910);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getActorRefAccess().getTypeActorClassFQNParserRuleCall_3_0_1());
+
+ }
+
+ after(grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ActorRef__TypeAssignment_3
+
+
+ // $ANTLR start rule__StateGraph__StatesAssignment_1_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15364:1: rule__StateGraph__StatesAssignment_1_0 : ( ruleState ) ;
+ public final void rule__StateGraph__StatesAssignment_1_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15368:1: ( ( ruleState ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15369:1: ( ruleState )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15369:1: ( ruleState )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15370:1: ruleState
+ {
+ before(grammarAccess.getStateGraphAccess().getStatesStateParserRuleCall_1_0_0());
+ pushFollow(FOLLOW_ruleState_in_rule__StateGraph__StatesAssignment_1_030945);
+ ruleState();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphAccess().getStatesStateParserRuleCall_1_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__StatesAssignment_1_0
+
+
+ // $ANTLR start rule__StateGraph__TrPointsAssignment_1_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15379:1: rule__StateGraph__TrPointsAssignment_1_1 : ( ruleTrPoint ) ;
+ public final void rule__StateGraph__TrPointsAssignment_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15383:1: ( ( ruleTrPoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15384:1: ( ruleTrPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15384:1: ( ruleTrPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15385:1: ruleTrPoint
+ {
+ before(grammarAccess.getStateGraphAccess().getTrPointsTrPointParserRuleCall_1_1_0());
+ pushFollow(FOLLOW_ruleTrPoint_in_rule__StateGraph__TrPointsAssignment_1_130976);
+ ruleTrPoint();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphAccess().getTrPointsTrPointParserRuleCall_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__TrPointsAssignment_1_1
+
+
+ // $ANTLR start rule__StateGraph__ChPointsAssignment_1_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15394:1: rule__StateGraph__ChPointsAssignment_1_2 : ( ruleChoicePoint ) ;
+ public final void rule__StateGraph__ChPointsAssignment_1_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15398:1: ( ( ruleChoicePoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15399:1: ( ruleChoicePoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15399:1: ( ruleChoicePoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15400:1: ruleChoicePoint
+ {
+ before(grammarAccess.getStateGraphAccess().getChPointsChoicePointParserRuleCall_1_2_0());
+ pushFollow(FOLLOW_ruleChoicePoint_in_rule__StateGraph__ChPointsAssignment_1_231007);
+ ruleChoicePoint();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphAccess().getChPointsChoicePointParserRuleCall_1_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__ChPointsAssignment_1_2
+
+
+ // $ANTLR start rule__StateGraph__TransitionsAssignment_1_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15409:1: rule__StateGraph__TransitionsAssignment_1_3 : ( ruleTransition ) ;
+ public final void rule__StateGraph__TransitionsAssignment_1_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15413:1: ( ( ruleTransition ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15414:1: ( ruleTransition )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15414:1: ( ruleTransition )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15415:1: ruleTransition
+ {
+ before(grammarAccess.getStateGraphAccess().getTransitionsTransitionParserRuleCall_1_3_0());
+ pushFollow(FOLLOW_ruleTransition_in_rule__StateGraph__TransitionsAssignment_1_331038);
+ ruleTransition();
+ _fsp--;
+
+ after(grammarAccess.getStateGraphAccess().getTransitionsTransitionParserRuleCall_1_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateGraph__TransitionsAssignment_1_3
+
+
+ // $ANTLR start rule__StateMachine__StatesAssignment_2_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15424:1: rule__StateMachine__StatesAssignment_2_0 : ( ruleState ) ;
+ public final void rule__StateMachine__StatesAssignment_2_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15428:1: ( ( ruleState ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15429:1: ( ruleState )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15429:1: ( ruleState )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15430:1: ruleState
+ {
+ before(grammarAccess.getStateMachineAccess().getStatesStateParserRuleCall_2_0_0());
+ pushFollow(FOLLOW_ruleState_in_rule__StateMachine__StatesAssignment_2_031069);
+ ruleState();
+ _fsp--;
+
+ after(grammarAccess.getStateMachineAccess().getStatesStateParserRuleCall_2_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__StatesAssignment_2_0
+
+
+ // $ANTLR start rule__StateMachine__TrPointsAssignment_2_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15439:1: rule__StateMachine__TrPointsAssignment_2_1 : ( ruleTrPoint ) ;
+ public final void rule__StateMachine__TrPointsAssignment_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15443:1: ( ( ruleTrPoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15444:1: ( ruleTrPoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15444:1: ( ruleTrPoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15445:1: ruleTrPoint
+ {
+ before(grammarAccess.getStateMachineAccess().getTrPointsTrPointParserRuleCall_2_1_0());
+ pushFollow(FOLLOW_ruleTrPoint_in_rule__StateMachine__TrPointsAssignment_2_131100);
+ ruleTrPoint();
+ _fsp--;
+
+ after(grammarAccess.getStateMachineAccess().getTrPointsTrPointParserRuleCall_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__TrPointsAssignment_2_1
+
+
+ // $ANTLR start rule__StateMachine__ChPointsAssignment_2_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15454:1: rule__StateMachine__ChPointsAssignment_2_2 : ( ruleChoicePoint ) ;
+ public final void rule__StateMachine__ChPointsAssignment_2_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15458:1: ( ( ruleChoicePoint ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15459:1: ( ruleChoicePoint )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15459:1: ( ruleChoicePoint )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15460:1: ruleChoicePoint
+ {
+ before(grammarAccess.getStateMachineAccess().getChPointsChoicePointParserRuleCall_2_2_0());
+ pushFollow(FOLLOW_ruleChoicePoint_in_rule__StateMachine__ChPointsAssignment_2_231131);
+ ruleChoicePoint();
+ _fsp--;
+
+ after(grammarAccess.getStateMachineAccess().getChPointsChoicePointParserRuleCall_2_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__ChPointsAssignment_2_2
+
+
+ // $ANTLR start rule__StateMachine__TransitionsAssignment_2_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15469:1: rule__StateMachine__TransitionsAssignment_2_3 : ( ruleTransition ) ;
+ public final void rule__StateMachine__TransitionsAssignment_2_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15473:1: ( ( ruleTransition ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15474:1: ( ruleTransition )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15474:1: ( ruleTransition )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15475:1: ruleTransition
+ {
+ before(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_2_3_0());
+ pushFollow(FOLLOW_ruleTransition_in_rule__StateMachine__TransitionsAssignment_2_331162);
+ ruleTransition();
+ _fsp--;
+
+ after(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_2_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateMachine__TransitionsAssignment_2_3
+
+
+ // $ANTLR start rule__BaseState__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15484:1: rule__BaseState__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__BaseState__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15488:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15489:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15489:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15490:1: RULE_ID
+ {
+ before(grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__BaseState__NameAssignment_131193);
+ after(grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__NameAssignment_1
+
+
+ // $ANTLR start rule__BaseState__EntryCodeAssignment_3_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15499:1: rule__BaseState__EntryCodeAssignment_3_1 : ( ruleDetailCode ) ;
+ public final void rule__BaseState__EntryCodeAssignment_3_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15503:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15504:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15504:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15505:1: ruleDetailCode
+ {
+ before(grammarAccess.getBaseStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__BaseState__EntryCodeAssignment_3_131224);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getBaseStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__EntryCodeAssignment_3_1
+
+
+ // $ANTLR start rule__BaseState__ExitCodeAssignment_4_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15514:1: rule__BaseState__ExitCodeAssignment_4_1 : ( ruleDetailCode ) ;
+ public final void rule__BaseState__ExitCodeAssignment_4_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15518:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15519:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15519:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15520:1: ruleDetailCode
+ {
+ before(grammarAccess.getBaseStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__BaseState__ExitCodeAssignment_4_131255);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getBaseStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__ExitCodeAssignment_4_1
+
+
+ // $ANTLR start rule__BaseState__SubgraphAssignment_5_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15529:1: rule__BaseState__SubgraphAssignment_5_1 : ( ruleStateGraph ) ;
+ public final void rule__BaseState__SubgraphAssignment_5_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15533:1: ( ( ruleStateGraph ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15534:1: ( ruleStateGraph )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15534:1: ( ruleStateGraph )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15535:1: ruleStateGraph
+ {
+ before(grammarAccess.getBaseStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0());
+ pushFollow(FOLLOW_ruleStateGraph_in_rule__BaseState__SubgraphAssignment_5_131286);
+ ruleStateGraph();
+ _fsp--;
+
+ after(grammarAccess.getBaseStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__BaseState__SubgraphAssignment_5_1
+
+
+ // $ANTLR start rule__RefinedState__BaseAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15544:1: rule__RefinedState__BaseAssignment_1 : ( ( ruleFQN ) ) ;
+ public final void rule__RefinedState__BaseAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15548:1: ( ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15549:1: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15549:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15550:1: ( ruleFQN )
+ {
+ before(grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15551:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15552:1: ruleFQN
+ {
+ before(grammarAccess.getRefinedStateAccess().getBaseBaseStateFQNParserRuleCall_1_0_1());
+ pushFollow(FOLLOW_ruleFQN_in_rule__RefinedState__BaseAssignment_131321);
+ ruleFQN();
+ _fsp--;
+
+ after(grammarAccess.getRefinedStateAccess().getBaseBaseStateFQNParserRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__BaseAssignment_1
+
+
+ // $ANTLR start rule__RefinedState__EntryCodeAssignment_3_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15563:1: rule__RefinedState__EntryCodeAssignment_3_1 : ( ruleDetailCode ) ;
+ public final void rule__RefinedState__EntryCodeAssignment_3_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15567:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15568:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15568:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15569:1: ruleDetailCode
+ {
+ before(grammarAccess.getRefinedStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__RefinedState__EntryCodeAssignment_3_131356);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getRefinedStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__EntryCodeAssignment_3_1
+
+
+ // $ANTLR start rule__RefinedState__ExitCodeAssignment_4_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15578:1: rule__RefinedState__ExitCodeAssignment_4_1 : ( ruleDetailCode ) ;
+ public final void rule__RefinedState__ExitCodeAssignment_4_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15582:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15583:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15583:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15584:1: ruleDetailCode
+ {
+ before(grammarAccess.getRefinedStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__RefinedState__ExitCodeAssignment_4_131387);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getRefinedStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__ExitCodeAssignment_4_1
+
+
+ // $ANTLR start rule__RefinedState__SubgraphAssignment_5_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15593:1: rule__RefinedState__SubgraphAssignment_5_1 : ( ruleStateGraph ) ;
+ public final void rule__RefinedState__SubgraphAssignment_5_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15597:1: ( ( ruleStateGraph ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15598:1: ( ruleStateGraph )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15598:1: ( ruleStateGraph )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15599:1: ruleStateGraph
+ {
+ before(grammarAccess.getRefinedStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0());
+ pushFollow(FOLLOW_ruleStateGraph_in_rule__RefinedState__SubgraphAssignment_5_131418);
+ ruleStateGraph();
+ _fsp--;
+
+ after(grammarAccess.getRefinedStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__RefinedState__SubgraphAssignment_5_1
+
+
+ // $ANTLR start rule__DetailCode__CommandsAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15608:1: rule__DetailCode__CommandsAssignment_1 : ( RULE_STRING ) ;
+ public final void rule__DetailCode__CommandsAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15612:1: ( ( RULE_STRING ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15613:1: ( RULE_STRING )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15613:1: ( RULE_STRING )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15614:1: RULE_STRING
+ {
+ before(grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0());
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__DetailCode__CommandsAssignment_131449);
+ after(grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__DetailCode__CommandsAssignment_1
+
+
+ // $ANTLR start rule__TransitionPoint__HandlerAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15623:1: rule__TransitionPoint__HandlerAssignment_0 : ( ( 'handler' ) ) ;
+ public final void rule__TransitionPoint__HandlerAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15627:1: ( ( ( 'handler' ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15628:1: ( ( 'handler' ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15628:1: ( ( 'handler' ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15629:1: ( 'handler' )
+ {
+ before(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15630:1: ( 'handler' )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15631:1: 'handler'
+ {
+ before(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0());
+ match(input,99,FOLLOW_99_in_rule__TransitionPoint__HandlerAssignment_031485);
+ after(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0());
+
+ }
+
+ after(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__HandlerAssignment_0
+
+
+ // $ANTLR start rule__TransitionPoint__NameAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15646:1: rule__TransitionPoint__NameAssignment_2 : ( RULE_ID ) ;
+ public final void rule__TransitionPoint__NameAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15650:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15651:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15651:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15652:1: RULE_ID
+ {
+ before(grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__TransitionPoint__NameAssignment_231524);
+ after(grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TransitionPoint__NameAssignment_2
+
+
+ // $ANTLR start rule__EntryPoint__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15661:1: rule__EntryPoint__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__EntryPoint__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15665:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15666:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15666:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15667:1: RULE_ID
+ {
+ before(grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__EntryPoint__NameAssignment_131555);
+ after(grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__EntryPoint__NameAssignment_1
+
+
+ // $ANTLR start rule__ExitPoint__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15676:1: rule__ExitPoint__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__ExitPoint__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15680:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15681:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15681:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15682:1: RULE_ID
+ {
+ before(grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ExitPoint__NameAssignment_131586);
+ after(grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ExitPoint__NameAssignment_1
+
+
+ // $ANTLR start rule__ChoicePoint__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15691:1: rule__ChoicePoint__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__ChoicePoint__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15695:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15696:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15696:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15697:1: RULE_ID
+ {
+ before(grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ChoicePoint__NameAssignment_131617);
+ after(grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicePoint__NameAssignment_1
+
+
+ // $ANTLR start rule__InitialTransition__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15706:1: rule__InitialTransition__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__InitialTransition__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15710:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15711:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15711:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15712:1: RULE_ID
+ {
+ before(grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__InitialTransition__NameAssignment_131648);
+ after(grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__NameAssignment_1
+
+
+ // $ANTLR start rule__InitialTransition__ToAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15721:1: rule__InitialTransition__ToAssignment_5 : ( ruleTransitionTerminal ) ;
+ public final void rule__InitialTransition__ToAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15725:1: ( ( ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15726:1: ( ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15726:1: ( ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15727:1: ruleTransitionTerminal
+ {
+ before(grammarAccess.getInitialTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_rule__InitialTransition__ToAssignment_531679);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getInitialTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__ToAssignment_5
+
+
+ // $ANTLR start rule__InitialTransition__ActionAssignment_7_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15736:1: rule__InitialTransition__ActionAssignment_7_1 : ( ruleDetailCode ) ;
+ public final void rule__InitialTransition__ActionAssignment_7_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15740:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15741:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15741:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15742:1: ruleDetailCode
+ {
+ before(grammarAccess.getInitialTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__InitialTransition__ActionAssignment_7_131710);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getInitialTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__InitialTransition__ActionAssignment_7_1
+
+
+ // $ANTLR start rule__ContinuationTransition__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15751:1: rule__ContinuationTransition__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__ContinuationTransition__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15755:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15756:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15756:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15757:1: RULE_ID
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ContinuationTransition__NameAssignment_131741);
+ after(grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__NameAssignment_1
+
+
+ // $ANTLR start rule__ContinuationTransition__FromAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15766:1: rule__ContinuationTransition__FromAssignment_3 : ( ruleTransitionTerminal ) ;
+ public final void rule__ContinuationTransition__FromAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15770:1: ( ( ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15771:1: ( ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15771:1: ( ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15772:1: ruleTransitionTerminal
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_rule__ContinuationTransition__FromAssignment_331772);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getContinuationTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__FromAssignment_3
+
+
+ // $ANTLR start rule__ContinuationTransition__ToAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15781:1: rule__ContinuationTransition__ToAssignment_5 : ( ruleTransitionTerminal ) ;
+ public final void rule__ContinuationTransition__ToAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15785:1: ( ( ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15786:1: ( ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15786:1: ( ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15787:1: ruleTransitionTerminal
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_rule__ContinuationTransition__ToAssignment_531803);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getContinuationTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__ToAssignment_5
+
+
+ // $ANTLR start rule__ContinuationTransition__ActionAssignment_7_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15796:1: rule__ContinuationTransition__ActionAssignment_7_1 : ( ruleDetailCode ) ;
+ public final void rule__ContinuationTransition__ActionAssignment_7_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15800:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15801:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15801:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15802:1: ruleDetailCode
+ {
+ before(grammarAccess.getContinuationTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__ContinuationTransition__ActionAssignment_7_131834);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getContinuationTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ContinuationTransition__ActionAssignment_7_1
+
+
+ // $ANTLR start rule__TriggeredTransition__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15811:1: rule__TriggeredTransition__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__TriggeredTransition__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15815:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15816:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15816:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15817:1: RULE_ID
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__TriggeredTransition__NameAssignment_131865);
+ after(grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__NameAssignment_1
+
+
+ // $ANTLR start rule__TriggeredTransition__FromAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15826:1: rule__TriggeredTransition__FromAssignment_3 : ( ruleTransitionTerminal ) ;
+ public final void rule__TriggeredTransition__FromAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15830:1: ( ( ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15831:1: ( ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15831:1: ( ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15832:1: ruleTransitionTerminal
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_rule__TriggeredTransition__FromAssignment_331896);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTriggeredTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__FromAssignment_3
+
+
+ // $ANTLR start rule__TriggeredTransition__ToAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15841:1: rule__TriggeredTransition__ToAssignment_5 : ( ruleTransitionTerminal ) ;
+ public final void rule__TriggeredTransition__ToAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15845:1: ( ( ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15846:1: ( ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15846:1: ( ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15847:1: ruleTransitionTerminal
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_rule__TriggeredTransition__ToAssignment_531927);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getTriggeredTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__ToAssignment_5
+
+
+ // $ANTLR start rule__TriggeredTransition__TriggersAssignment_9
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15856:1: rule__TriggeredTransition__TriggersAssignment_9 : ( ruleTrigger ) ;
+ public final void rule__TriggeredTransition__TriggersAssignment_9() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15860:1: ( ( ruleTrigger ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15861:1: ( ruleTrigger )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15861:1: ( ruleTrigger )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15862:1: ruleTrigger
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_9_0());
+ pushFollow(FOLLOW_ruleTrigger_in_rule__TriggeredTransition__TriggersAssignment_931958);
+ ruleTrigger();
+ _fsp--;
+
+ after(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_9_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__TriggersAssignment_9
+
+
+ // $ANTLR start rule__TriggeredTransition__TriggersAssignment_10_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15871:1: rule__TriggeredTransition__TriggersAssignment_10_1 : ( ruleTrigger ) ;
+ public final void rule__TriggeredTransition__TriggersAssignment_10_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15875:1: ( ( ruleTrigger ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15876:1: ( ruleTrigger )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15876:1: ( ruleTrigger )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15877:1: ruleTrigger
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_10_1_0());
+ pushFollow(FOLLOW_ruleTrigger_in_rule__TriggeredTransition__TriggersAssignment_10_131989);
+ ruleTrigger();
+ _fsp--;
+
+ after(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_10_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__TriggersAssignment_10_1
+
+
+ // $ANTLR start rule__TriggeredTransition__ActionAssignment_12_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15886:1: rule__TriggeredTransition__ActionAssignment_12_1 : ( ruleDetailCode ) ;
+ public final void rule__TriggeredTransition__ActionAssignment_12_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15890:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15891:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15891:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15892:1: ruleDetailCode
+ {
+ before(grammarAccess.getTriggeredTransitionAccess().getActionDetailCodeParserRuleCall_12_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__TriggeredTransition__ActionAssignment_12_132020);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getTriggeredTransitionAccess().getActionDetailCodeParserRuleCall_12_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TriggeredTransition__ActionAssignment_12_1
+
+
+ // $ANTLR start rule__CPBranchTransition__NameAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15901:1: rule__CPBranchTransition__NameAssignment_1 : ( RULE_ID ) ;
+ public final void rule__CPBranchTransition__NameAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15905:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15906:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15906:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15907:1: RULE_ID
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__CPBranchTransition__NameAssignment_132051);
+ after(grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__NameAssignment_1
+
+
+ // $ANTLR start rule__CPBranchTransition__FromAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15916:1: rule__CPBranchTransition__FromAssignment_3 : ( ruleTransitionTerminal ) ;
+ public final void rule__CPBranchTransition__FromAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15920:1: ( ( ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15921:1: ( ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15921:1: ( ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15922:1: ruleTransitionTerminal
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_rule__CPBranchTransition__FromAssignment_332082);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getCPBranchTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__FromAssignment_3
+
+
+ // $ANTLR start rule__CPBranchTransition__ToAssignment_5
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15931:1: rule__CPBranchTransition__ToAssignment_5 : ( ruleTransitionTerminal ) ;
+ public final void rule__CPBranchTransition__ToAssignment_5() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15935:1: ( ( ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15936:1: ( ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15936:1: ( ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15937:1: ruleTransitionTerminal
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_rule__CPBranchTransition__ToAssignment_532113);
+ ruleTransitionTerminal();
+ _fsp--;
+
+ after(grammarAccess.getCPBranchTransitionAccess().getToTransitionTerminalParserRuleCall_5_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__ToAssignment_5
+
+
+ // $ANTLR start rule__CPBranchTransition__ConditionAssignment_8
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15946:1: rule__CPBranchTransition__ConditionAssignment_8 : ( ruleDetailCode ) ;
+ public final void rule__CPBranchTransition__ConditionAssignment_8() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15950:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15951:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15951:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15952:1: ruleDetailCode
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getConditionDetailCodeParserRuleCall_8_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__CPBranchTransition__ConditionAssignment_832144);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getCPBranchTransitionAccess().getConditionDetailCodeParserRuleCall_8_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__ConditionAssignment_8
+
+
+ // $ANTLR start rule__CPBranchTransition__ActionAssignment_9_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15961:1: rule__CPBranchTransition__ActionAssignment_9_1 : ( ruleDetailCode ) ;
+ public final void rule__CPBranchTransition__ActionAssignment_9_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15965:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15966:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15966:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15967:1: ruleDetailCode
+ {
+ before(grammarAccess.getCPBranchTransitionAccess().getActionDetailCodeParserRuleCall_9_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__CPBranchTransition__ActionAssignment_9_132175);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getCPBranchTransitionAccess().getActionDetailCodeParserRuleCall_9_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__CPBranchTransition__ActionAssignment_9_1
+
+
+ // $ANTLR start rule__StateTerminal__StateAssignment
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15976:1: rule__StateTerminal__StateAssignment : ( ( RULE_ID ) ) ;
+ public final void rule__StateTerminal__StateAssignment() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15980:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15981:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15981:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15982:1: ( RULE_ID )
+ {
+ before(grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15983:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15984:1: RULE_ID
+ {
+ before(grammarAccess.getStateTerminalAccess().getStateBaseStateIDTerminalRuleCall_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__StateTerminal__StateAssignment32210);
+ after(grammarAccess.getStateTerminalAccess().getStateBaseStateIDTerminalRuleCall_0_1());
+
+ }
+
+ after(grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__StateTerminal__StateAssignment
+
+
+ // $ANTLR start rule__TrPointTerminal__TrPointAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15995:1: rule__TrPointTerminal__TrPointAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__TrPointTerminal__TrPointAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:15999:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16000:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16000:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16001:1: ( RULE_ID )
+ {
+ before(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16002:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16003:1: RULE_ID
+ {
+ before(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__TrPointTerminal__TrPointAssignment_132249);
+ after(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__TrPointTerminal__TrPointAssignment_1
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__TrPointAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16014:1: rule__SubStateTrPointTerminal__TrPointAssignment_0 : ( ( RULE_ID ) ) ;
+ public final void rule__SubStateTrPointTerminal__TrPointAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16018:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16019:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16019:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16020:1: ( RULE_ID )
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16021:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16022:1: RULE_ID
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_0_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SubStateTrPointTerminal__TrPointAssignment_032288);
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointIDTerminalRuleCall_0_0_1());
+
+ }
+
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__TrPointAssignment_0
+
+
+ // $ANTLR start rule__SubStateTrPointTerminal__StateAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16033:1: rule__SubStateTrPointTerminal__StateAssignment_2 : ( ( RULE_ID ) ) ;
+ public final void rule__SubStateTrPointTerminal__StateAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16037:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16038:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16038:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16039:1: ( RULE_ID )
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16040:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16041:1: RULE_ID
+ {
+ before(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateIDTerminalRuleCall_2_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SubStateTrPointTerminal__StateAssignment_232327);
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateIDTerminalRuleCall_2_0_1());
+
+ }
+
+ after(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__SubStateTrPointTerminal__StateAssignment_2
+
+
+ // $ANTLR start rule__ChoicepointTerminal__CpAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16052:1: rule__ChoicepointTerminal__CpAssignment_1 : ( ( RULE_ID ) ) ;
+ public final void rule__ChoicepointTerminal__CpAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16056:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16057:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16057:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16058:1: ( RULE_ID )
+ {
+ before(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16059:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16060:1: RULE_ID
+ {
+ before(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointIDTerminalRuleCall_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ChoicepointTerminal__CpAssignment_132366);
+ after(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointIDTerminalRuleCall_1_0_1());
+
+ }
+
+ after(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__ChoicepointTerminal__CpAssignment_1
+
+
+ // $ANTLR start rule__Trigger__MsgFromIfPairsAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16071:1: rule__Trigger__MsgFromIfPairsAssignment_1 : ( ruleMessageFromIf ) ;
+ public final void rule__Trigger__MsgFromIfPairsAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16075:1: ( ( ruleMessageFromIf ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16076:1: ( ruleMessageFromIf )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16076:1: ( ruleMessageFromIf )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16077:1: ruleMessageFromIf
+ {
+ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleMessageFromIf_in_rule__Trigger__MsgFromIfPairsAssignment_132401);
+ ruleMessageFromIf();
+ _fsp--;
+
+ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__MsgFromIfPairsAssignment_1
+
+
+ // $ANTLR start rule__Trigger__MsgFromIfPairsAssignment_2_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16086:1: rule__Trigger__MsgFromIfPairsAssignment_2_1 : ( ruleMessageFromIf ) ;
+ public final void rule__Trigger__MsgFromIfPairsAssignment_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16090:1: ( ( ruleMessageFromIf ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16091:1: ( ruleMessageFromIf )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16091:1: ( ruleMessageFromIf )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16092:1: ruleMessageFromIf
+ {
+ before(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0());
+ pushFollow(FOLLOW_ruleMessageFromIf_in_rule__Trigger__MsgFromIfPairsAssignment_2_132432);
+ ruleMessageFromIf();
+ _fsp--;
+
+ after(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__MsgFromIfPairsAssignment_2_1
+
+
+ // $ANTLR start rule__Trigger__GuardAssignment_3
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16101:1: rule__Trigger__GuardAssignment_3 : ( ruleGuard ) ;
+ public final void rule__Trigger__GuardAssignment_3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16105:1: ( ( ruleGuard ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16106:1: ( ruleGuard )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16106:1: ( ruleGuard )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16107:1: ruleGuard
+ {
+ before(grammarAccess.getTriggerAccess().getGuardGuardParserRuleCall_3_0());
+ pushFollow(FOLLOW_ruleGuard_in_rule__Trigger__GuardAssignment_332463);
+ ruleGuard();
+ _fsp--;
+
+ after(grammarAccess.getTriggerAccess().getGuardGuardParserRuleCall_3_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Trigger__GuardAssignment_3
+
+
+ // $ANTLR start rule__MessageFromIf__MessageAssignment_0
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16116:1: rule__MessageFromIf__MessageAssignment_0 : ( ( RULE_ID ) ) ;
+ public final void rule__MessageFromIf__MessageAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16120:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16121:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16121:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16122:1: ( RULE_ID )
+ {
+ before(grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16123:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16124:1: RULE_ID
+ {
+ before(grammarAccess.getMessageFromIfAccess().getMessageMessageIDTerminalRuleCall_0_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__MessageFromIf__MessageAssignment_032498);
+ after(grammarAccess.getMessageFromIfAccess().getMessageMessageIDTerminalRuleCall_0_0_1());
+
+ }
+
+ after(grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__MessageAssignment_0
+
+
+ // $ANTLR start rule__MessageFromIf__FromAssignment_2
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16135:1: rule__MessageFromIf__FromAssignment_2 : ( ( RULE_ID ) ) ;
+ public final void rule__MessageFromIf__FromAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16139:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16140:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16140:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16141:1: ( RULE_ID )
+ {
+ before(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0());
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16142:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16143:1: RULE_ID
+ {
+ before(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemIDTerminalRuleCall_2_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__MessageFromIf__FromAssignment_232537);
+ after(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemIDTerminalRuleCall_2_0_1());
+
+ }
+
+ after(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__MessageFromIf__FromAssignment_2
+
+
+ // $ANTLR start rule__Guard__GuardAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16154:1: rule__Guard__GuardAssignment_1 : ( ruleDetailCode ) ;
+ public final void rule__Guard__GuardAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16158:1: ( ( ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16159:1: ( ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16159:1: ( ruleDetailCode )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16160:1: ruleDetailCode
+ {
+ before(grammarAccess.getGuardAccess().getGuardDetailCodeParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleDetailCode_in_rule__Guard__GuardAssignment_132572);
+ ruleDetailCode();
+ _fsp--;
+
+ after(grammarAccess.getGuardAccess().getGuardDetailCodeParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Guard__GuardAssignment_1
+
+
+ // $ANTLR start rule__Import__ImportedNamespaceAssignment_1
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16169:1: rule__Import__ImportedNamespaceAssignment_1 : ( ruleImportedFQN ) ;
+ public final void rule__Import__ImportedNamespaceAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16173:1: ( ( ruleImportedFQN ) )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16174:1: ( ruleImportedFQN )
+ {
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16174:1: ( ruleImportedFQN )
+ // ../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g:16175:1: ruleImportedFQN
+ {
+ before(grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleImportedFQN_in_rule__Import__ImportedNamespaceAssignment_132603);
+ ruleImportedFQN();
+ _fsp--;
+
+ after(grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end rule__Import__ImportedNamespaceAssignment_1
+
+
+
+
+ public static final BitSet FOLLOW_ruleRoomModel_in_entryRuleRoomModel61 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRoomModel68 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__0_in_ruleRoomModel94 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStructureClass_in_entryRuleStructureClass123 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStructureClass130 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StructureClass__Alternatives_in_ruleStructureClass156 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorContainerClass_in_entryRuleActorContainerClass183 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorContainerClass190 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorContainerClass__Alternatives_in_ruleActorContainerClass216 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTypedID_in_entryRuleTypedID243 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTypedID250 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TypedID__Group__0_in_ruleTypedID276 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeTypedID_in_entryRuleFreeTypedID303 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFreeTypedID310 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__Group__0_in_ruleFreeTypedID336 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleType_in_entryRuleType363 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleType370 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Type__Alternatives_in_ruleType396 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeType_in_entryRuleFreeType423 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFreeType430 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeType__Alternatives_in_ruleFreeType456 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDataClass_in_entryRuleDataClass483 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDataClass490 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__0_in_ruleDataClass516 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute543 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleAttribute550 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__0_in_ruleAttribute576 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleOperation_in_entryRuleOperation603 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleOperation610 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__0_in_ruleOperation636 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleProtocolClass_in_entryRuleProtocolClass663 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleProtocolClass670 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__0_in_ruleProtocolClass696 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessage_in_entryRuleMessage723 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMessage730 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group__0_in_ruleMessage756 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePortClass_in_entryRulePortClass783 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePortClass790 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__0_in_rulePortClass816 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessageHandler_in_entryRuleMessageHandler843 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMessageHandler850 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageHandler__Group__0_in_ruleMessageHandler876 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleProtocolSemantics_in_entryRuleProtocolSemantics903 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleProtocolSemantics910 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__0_in_ruleProtocolSemantics936 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_entryRuleSemanticsRule963 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSemanticsRule970 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsRule__Alternatives_in_ruleSemanticsRule996 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsInRule_in_entryRuleSemanticsInRule1023 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSemanticsInRule1030 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__0_in_ruleSemanticsInRule1056 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsOutRule_in_entryRuleSemanticsOutRule1083 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSemanticsOutRule1090 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__0_in_ruleSemanticsOutRule1116 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorClass_in_entryRuleActorClass1143 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorClass1150 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__0_in_ruleActorClass1176 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePort_in_entryRulePort1205 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePort1212 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group__0_in_rulePort1238 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExternalPort_in_entryRuleExternalPort1265 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleExternalPort1272 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExternalPort__Group__0_in_ruleExternalPort1298 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSAPRef_in_entryRuleSAPRef1325 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSAPRef1332 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__0_in_ruleSAPRef1358 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSPPRef_in_entryRuleSPPRef1385 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSPPRef1392 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__0_in_ruleSPPRef1418 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleServiceImplementation_in_entryRuleServiceImplementation1445 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleServiceImplementation1452 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ServiceImplementation__Group__0_in_ruleServiceImplementation1478 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalSystem_in_entryRuleLogicalSystem1505 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleLogicalSystem1512 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__0_in_ruleLogicalSystem1538 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemRef_in_entryRuleSubSystemRef1567 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSubSystemRef1574 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__0_in_ruleSubSystemRef1600 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemClass_in_entryRuleSubSystemClass1627 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSubSystemClass1634 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__0_in_ruleSubSystemClass1660 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalThread_in_entryRuleLogicalThread1687 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleLogicalThread1694 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__0_in_ruleLogicalThread1720 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorInstancePath_in_entryRuleActorInstancePath1747 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorInstancePath1754 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group__0_in_ruleActorInstancePath1780 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBinding_in_entryRuleBinding1807 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBinding1814 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Binding__Group__0_in_ruleBinding1840 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBindingEndPoint_in_entryRuleBindingEndPoint1867 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBindingEndPoint1874 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group__0_in_ruleBindingEndPoint1900 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_entryRuleLayerConnection1927 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleLayerConnection1934 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__0_in_ruleLayerConnection1960 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSAPoint_in_entryRuleSAPoint1987 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSAPoint1994 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPoint__Alternatives_in_ruleSAPoint2020 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefSAPoint_in_entryRuleRefSAPoint2047 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRefSAPoint2054 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefSAPoint__Group__0_in_ruleRefSAPoint2080 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRelaySAPoint_in_entryRuleRelaySAPoint2107 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRelaySAPoint2114 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RelaySAPoint__Group__0_in_ruleRelaySAPoint2140 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSPPoint_in_entryRuleSPPoint2167 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSPPoint2174 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPoint__Group__0_in_ruleSPPoint2200 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorRef_in_entryRuleActorRef2227 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorRef2234 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__0_in_ruleActorRef2260 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateGraphNode_in_entryRuleStateGraphNode2287 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateGraphNode2294 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraphNode__Alternatives_in_ruleStateGraphNode2320 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleState_in_entryRuleState2349 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleState2356 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__State__Alternatives_in_ruleState2382 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateGraph_in_entryRuleStateGraph2409 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateGraph2416 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__Group__0_in_ruleStateGraph2442 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateMachine_in_entryRuleStateMachine2469 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateMachine2476 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__0_in_ruleStateMachine2502 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBaseState_in_entryRuleBaseState2529 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBaseState2536 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__0_in_ruleBaseState2562 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefinedState_in_entryRuleRefinedState2589 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRefinedState2596 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__0_in_ruleRefinedState2622 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_entryRuleDetailCode2649 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDetailCode2656 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DetailCode__Group__0_in_ruleDetailCode2682 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_entryRuleTrPoint2709 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTrPoint2716 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TrPoint__Alternatives_in_ruleTrPoint2742 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionPoint_in_entryRuleTransitionPoint2769 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransitionPoint2776 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__Group__0_in_ruleTransitionPoint2802 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEntryPoint_in_entryRuleEntryPoint2829 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleEntryPoint2836 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__EntryPoint__Group__0_in_ruleEntryPoint2862 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExitPoint_in_entryRuleExitPoint2889 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleExitPoint2896 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExitPoint__Group__0_in_ruleExitPoint2922 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_entryRuleChoicePoint2949 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleChoicePoint2956 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicePoint__Group__0_in_ruleChoicePoint2982 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransition_in_entryRuleTransition3009 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransition3016 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Transition__Alternatives_in_ruleTransition3042 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNonInitialTransition_in_entryRuleNonInitialTransition3069 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleNonInitialTransition3076 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__NonInitialTransition__Alternatives_in_ruleNonInitialTransition3102 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInitialTransition_in_entryRuleInitialTransition3129 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleInitialTransition3136 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__0_in_ruleInitialTransition3162 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleContinuationTransition_in_entryRuleContinuationTransition3189 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleContinuationTransition3196 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__0_in_ruleContinuationTransition3222 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTriggeredTransition_in_entryRuleTriggeredTransition3249 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTriggeredTransition3256 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__0_in_ruleTriggeredTransition3282 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleCPBranchTransition_in_entryRuleCPBranchTransition3309 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleCPBranchTransition3316 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__0_in_ruleCPBranchTransition3342 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_entryRuleTransitionTerminal3369 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransitionTerminal3376 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionTerminal__Alternatives_in_ruleTransitionTerminal3402 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateTerminal_in_entryRuleStateTerminal3429 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateTerminal3436 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateTerminal__StateAssignment_in_ruleStateTerminal3462 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPointTerminal_in_entryRuleTrPointTerminal3489 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTrPointTerminal3496 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TrPointTerminal__Group__0_in_ruleTrPointTerminal3522 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubStateTrPointTerminal_in_entryRuleSubStateTrPointTerminal3549 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSubStateTrPointTerminal3556 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__Group__0_in_ruleSubStateTrPointTerminal3582 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicepointTerminal_in_entryRuleChoicepointTerminal3609 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleChoicepointTerminal3616 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicepointTerminal__Group__0_in_ruleChoicepointTerminal3642 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrigger_in_entryRuleTrigger3669 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTrigger3676 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__0_in_ruleTrigger3702 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessageFromIf_in_entryRuleMessageFromIf3729 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMessageFromIf3736 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__Group__0_in_ruleMessageFromIf3762 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleGuard_in_entryRuleGuard3789 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleGuard3796 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Guard__Group__0_in_ruleGuard3822 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImport_in_entryRuleImport3849 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleImport3856 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Import__Group__0_in_ruleImport3882 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImportedFQN_in_entryRuleImportedFQN3909 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleImportedFQN3916 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group__0_in_ruleImportedFQN3942 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_entryRuleFQN3969 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFQN3976 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FQN__Group__0_in_ruleFQN4002 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimitiveType__Alternatives_in_rulePrimitiveType4039 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__DataClassesAssignment_4_0_in_rule__RoomModel__Alternatives_44074 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__ProtocolClassesAssignment_4_1_in_rule__RoomModel__Alternatives_44092 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__ActorClassesAssignment_4_2_in_rule__RoomModel__Alternatives_44110 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__SubSystemClassesAssignment_4_3_in_rule__RoomModel__Alternatives_44128 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__SystemsAssignment_4_4_in_rule__RoomModel__Alternatives_44146 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorContainerClass_in_rule__StructureClass__Alternatives4180 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalSystem_in_rule__StructureClass__Alternatives4197 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorClass_in_rule__ActorContainerClass__Alternatives4229 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemClass_in_rule__ActorContainerClass__Alternatives4246 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Type__PrimAssignment_0_in_rule__Type__Alternatives4278 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Type__TypeAssignment_1_in_rule__Type__Alternatives4296 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeType__PrimAssignment_0_in_rule__FreeType__Alternatives4329 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeType__TypeAssignment_1_in_rule__FreeType__Alternatives4347 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__AttributesAssignment_2_0_in_rule__PortClass__Alternatives_24380 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__OperationsAssignment_2_1_in_rule__PortClass__Alternatives_24398 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__MsgHandlersAssignment_2_2_in_rule__PortClass__Alternatives_24416 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsInRule_in_rule__SemanticsRule__Alternatives4449 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsOutRule_in_rule__SemanticsRule__Alternatives4466 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__IntPortsAssignment_6_4_0_in_rule__ActorClass__Alternatives_6_44498 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__ExtPortsAssignment_6_4_1_in_rule__ActorClass__Alternatives_6_44516 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefSAPoint_in_rule__SAPoint__Alternatives4551 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRelaySAPoint_in_rule__SAPoint__Alternatives4568 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleState_in_rule__StateGraphNode__Alternatives4600 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_rule__StateGraphNode__Alternatives4617 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_rule__StateGraphNode__Alternatives4634 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBaseState_in_rule__State__Alternatives4667 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefinedState_in_rule__State__Alternatives4684 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__StatesAssignment_1_0_in_rule__StateGraph__Alternatives_14716 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__TrPointsAssignment_1_1_in_rule__StateGraph__Alternatives_14734 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__ChPointsAssignment_1_2_in_rule__StateGraph__Alternatives_14752 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__TransitionsAssignment_1_3_in_rule__StateGraph__Alternatives_14770 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__StatesAssignment_2_0_in_rule__StateMachine__Alternatives_24803 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__TrPointsAssignment_2_1_in_rule__StateMachine__Alternatives_24821 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__ChPointsAssignment_2_2_in_rule__StateMachine__Alternatives_24839 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__TransitionsAssignment_2_3_in_rule__StateMachine__Alternatives_24857 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionPoint_in_rule__TrPoint__Alternatives4890 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEntryPoint_in_rule__TrPoint__Alternatives4907 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExitPoint_in_rule__TrPoint__Alternatives4924 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInitialTransition_in_rule__Transition__Alternatives4956 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNonInitialTransition_in_rule__Transition__Alternatives4973 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTriggeredTransition_in_rule__NonInitialTransition__Alternatives5005 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleContinuationTransition_in_rule__NonInitialTransition__Alternatives5022 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleCPBranchTransition_in_rule__NonInitialTransition__Alternatives5039 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateTerminal_in_rule__TransitionTerminal__Alternatives5071 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPointTerminal_in_rule__TransitionTerminal__Alternatives5088 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubStateTrPointTerminal_in_rule__TransitionTerminal__Alternatives5105 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicepointTerminal_in_rule__TransitionTerminal__Alternatives5122 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_11_in_rule__PrimitiveType__Alternatives5155 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_12_in_rule__PrimitiveType__Alternatives5176 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_13_in_rule__PrimitiveType__Alternatives5197 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_14_in_rule__PrimitiveType__Alternatives5218 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_15_in_rule__PrimitiveType__Alternatives5239 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_16_in_rule__PrimitiveType__Alternatives5260 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_17_in_rule__PrimitiveType__Alternatives5281 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_18_in_rule__PrimitiveType__Alternatives5302 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_19_in_rule__PrimitiveType__Alternatives5323 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_20_in_rule__PrimitiveType__Alternatives5344 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_21_in_rule__PrimitiveType__Alternatives5365 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_22_in_rule__PrimitiveType__Alternatives5386 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__0__Impl_in_rule__RoomModel__Group__05419 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__1_in_rule__RoomModel__Group__05422 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_23_in_rule__RoomModel__Group__0__Impl5450 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__1__Impl_in_rule__RoomModel__Group__15481 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__2_in_rule__RoomModel__Group__15484 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__NameAssignment_1_in_rule__RoomModel__Group__1__Impl5511 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__2__Impl_in_rule__RoomModel__Group__25541 = new BitSet(new long[]{0xA008001008000000L,0x0000000280000000L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__3_in_rule__RoomModel__Group__25544 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__RoomModel__Group__2__Impl5572 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__3__Impl_in_rule__RoomModel__Group__35603 = new BitSet(new long[]{0xA008001008000000L,0x0000000200000000L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__4_in_rule__RoomModel__Group__35606 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__ImportsAssignment_3_in_rule__RoomModel__Group__3__Impl5633 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__4__Impl_in_rule__RoomModel__Group__45664 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__5_in_rule__RoomModel__Group__45667 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RoomModel__Alternatives_4_in_rule__RoomModel__Group__4__Impl5696 = new BitSet(new long[]{0xA008001008000002L,0x0000000200000000L});
+ public static final BitSet FOLLOW_rule__RoomModel__Alternatives_4_in_rule__RoomModel__Group__4__Impl5708 = new BitSet(new long[]{0xA008001008000002L,0x0000000200000000L});
+ public static final BitSet FOLLOW_rule__RoomModel__Group__5__Impl_in_rule__RoomModel__Group__55741 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__RoomModel__Group__5__Impl5769 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TypedID__Group__0__Impl_in_rule__TypedID__Group__05812 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__TypedID__Group__1_in_rule__TypedID__Group__05815 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TypedID__NameAssignment_0_in_rule__TypedID__Group__0__Impl5842 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TypedID__Group__1__Impl_in_rule__TypedID__Group__15872 = new BitSet(new long[]{0x00000000007FF810L});
+ public static final BitSet FOLLOW_rule__TypedID__Group__2_in_rule__TypedID__Group__15875 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__TypedID__Group__1__Impl5903 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TypedID__Group__2__Impl_in_rule__TypedID__Group__25934 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TypedID__TypeAssignment_2_in_rule__TypedID__Group__2__Impl5961 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__Group__0__Impl_in_rule__FreeTypedID__Group__05997 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__Group__1_in_rule__FreeTypedID__Group__06000 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__NameAssignment_0_in_rule__FreeTypedID__Group__0__Impl6027 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__Group__1__Impl_in_rule__FreeTypedID__Group__16057 = new BitSet(new long[]{0x00000000007FF810L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__Group__2_in_rule__FreeTypedID__Group__16060 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__FreeTypedID__Group__1__Impl6088 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__Group__2__Impl_in_rule__FreeTypedID__Group__26119 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FreeTypedID__TypeAssignment_2_in_rule__FreeTypedID__Group__2__Impl6146 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__0__Impl_in_rule__DataClass__Group__06182 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__1_in_rule__DataClass__Group__06185 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_27_in_rule__DataClass__Group__0__Impl6213 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__1__Impl_in_rule__DataClass__Group__16244 = new BitSet(new long[]{0x0000000011000000L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__2_in_rule__DataClass__Group__16247 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__NameAssignment_1_in_rule__DataClass__Group__1__Impl6274 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__2__Impl_in_rule__DataClass__Group__26304 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__3_in_rule__DataClass__Group__26307 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group_2__0_in_rule__DataClass__Group__2__Impl6334 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__3__Impl_in_rule__DataClass__Group__36365 = new BitSet(new long[]{0x0000000020000000L,0x0000000080000000L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__4_in_rule__DataClass__Group__36368 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__DataClass__Group__3__Impl6396 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__4__Impl_in_rule__DataClass__Group__46427 = new BitSet(new long[]{0x0000000020000000L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__5_in_rule__DataClass__Group__46430 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__ImportsAssignment_4_in_rule__DataClass__Group__4__Impl6457 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__5__Impl_in_rule__DataClass__Group__56488 = new BitSet(new long[]{0x0000000102000000L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__6_in_rule__DataClass__Group__56491 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__AttributesAssignment_5_in_rule__DataClass__Group__5__Impl6520 = new BitSet(new long[]{0x0000000020000002L});
+ public static final BitSet FOLLOW_rule__DataClass__AttributesAssignment_5_in_rule__DataClass__Group__5__Impl6532 = new BitSet(new long[]{0x0000000020000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__6__Impl_in_rule__DataClass__Group__66565 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__7_in_rule__DataClass__Group__66568 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__OperationsAssignment_6_in_rule__DataClass__Group__6__Impl6595 = new BitSet(new long[]{0x0000000100000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group__7__Impl_in_rule__DataClass__Group__76626 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__DataClass__Group__7__Impl6654 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group_2__0__Impl_in_rule__DataClass__Group_2__06701 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__DataClass__Group_2__1_in_rule__DataClass__Group_2__06704 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_28_in_rule__DataClass__Group_2__0__Impl6732 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__Group_2__1__Impl_in_rule__DataClass__Group_2__16763 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DataClass__BaseAssignment_2_1_in_rule__DataClass__Group_2__1__Impl6790 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__06824 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__06827 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_29_in_rule__Attribute__Group__0__Impl6855 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__16886 = new BitSet(new long[]{0x0000000044000000L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__16889 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__NameAssignment_1_in_rule__Attribute__Group__1__Impl6916 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__26946 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__3_in_rule__Attribute__Group__26949 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group_2__0_in_rule__Attribute__Group__2__Impl6976 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__3__Impl_in_rule__Attribute__Group__37007 = new BitSet(new long[]{0x00000000007FF810L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__4_in_rule__Attribute__Group__37010 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__Attribute__Group__3__Impl7038 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group__4__Impl_in_rule__Attribute__Group__47069 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__TypeAssignment_4_in_rule__Attribute__Group__4__Impl7096 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group_2__0__Impl_in_rule__Attribute__Group_2__07136 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_rule__Attribute__Group_2__1_in_rule__Attribute__Group_2__07139 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_30_in_rule__Attribute__Group_2__0__Impl7167 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group_2__1__Impl_in_rule__Attribute__Group_2__17198 = new BitSet(new long[]{0x0000000080000000L});
+ public static final BitSet FOLLOW_rule__Attribute__Group_2__2_in_rule__Attribute__Group_2__17201 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__SizeAssignment_2_1_in_rule__Attribute__Group_2__1__Impl7228 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Attribute__Group_2__2__Impl_in_rule__Attribute__Group_2__27258 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_31_in_rule__Attribute__Group_2__2__Impl7286 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__0__Impl_in_rule__Operation__Group__07323 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Operation__Group__1_in_rule__Operation__Group__07326 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_32_in_rule__Operation__Group__0__Impl7354 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__1__Impl_in_rule__Operation__Group__17385 = new BitSet(new long[]{0x0000000200000000L});
+ public static final BitSet FOLLOW_rule__Operation__Group__2_in_rule__Operation__Group__17388 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__NameAssignment_1_in_rule__Operation__Group__1__Impl7415 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__2__Impl_in_rule__Operation__Group__27445 = new BitSet(new long[]{0x0000000400000010L});
+ public static final BitSet FOLLOW_rule__Operation__Group__3_in_rule__Operation__Group__27448 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_33_in_rule__Operation__Group__2__Impl7476 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__3__Impl_in_rule__Operation__Group__37507 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_rule__Operation__Group__4_in_rule__Operation__Group__37510 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3__0_in_rule__Operation__Group__3__Impl7537 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__4__Impl_in_rule__Operation__Group__47568 = new BitSet(new long[]{0x0000000005000000L});
+ public static final BitSet FOLLOW_rule__Operation__Group__5_in_rule__Operation__Group__47571 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_34_in_rule__Operation__Group__4__Impl7599 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__5__Impl_in_rule__Operation__Group__57630 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__Operation__Group__6_in_rule__Operation__Group__57633 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_5__0_in_rule__Operation__Group__5__Impl7660 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group__6__Impl_in_rule__Operation__Group__67691 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__DetailCodeAssignment_6_in_rule__Operation__Group__6__Impl7718 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3__0__Impl_in_rule__Operation__Group_3__07762 = new BitSet(new long[]{0x0000000800000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3__1_in_rule__Operation__Group_3__07765 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__ArgumentsAssignment_3_0_in_rule__Operation__Group_3__0__Impl7792 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3__1__Impl_in_rule__Operation__Group_3__17822 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3_1__0_in_rule__Operation__Group_3__1__Impl7849 = new BitSet(new long[]{0x0000000800000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3_1__0__Impl_in_rule__Operation__Group_3_1__07884 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3_1__1_in_rule__Operation__Group_3_1__07887 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_35_in_rule__Operation__Group_3_1__0__Impl7915 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_3_1__1__Impl_in_rule__Operation__Group_3_1__17946 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__ArgumentsAssignment_3_1_1_in_rule__Operation__Group_3_1__1__Impl7973 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_5__0__Impl_in_rule__Operation__Group_5__08007 = new BitSet(new long[]{0x00000000007FF810L});
+ public static final BitSet FOLLOW_rule__Operation__Group_5__1_in_rule__Operation__Group_5__08010 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__Operation__Group_5__0__Impl8038 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__Group_5__1__Impl_in_rule__Operation__Group_5__18069 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Operation__ReturntypeAssignment_5_1_in_rule__Operation__Group_5__1__Impl8096 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__0__Impl_in_rule__ProtocolClass__Group__08130 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__1_in_rule__ProtocolClass__Group__08133 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_36_in_rule__ProtocolClass__Group__0__Impl8161 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__1__Impl_in_rule__ProtocolClass__Group__18192 = new BitSet(new long[]{0x0000000011000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__2_in_rule__ProtocolClass__Group__18195 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__NameAssignment_1_in_rule__ProtocolClass__Group__1__Impl8222 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__2__Impl_in_rule__ProtocolClass__Group__28252 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__3_in_rule__ProtocolClass__Group__28255 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_2__0_in_rule__ProtocolClass__Group__2__Impl8282 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__3__Impl_in_rule__ProtocolClass__Group__38313 = new BitSet(new long[]{0x000001A000000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__4_in_rule__ProtocolClass__Group__38316 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ProtocolClass__Group__3__Impl8344 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__4__Impl_in_rule__ProtocolClass__Group__48375 = new BitSet(new long[]{0x0000012000000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__5_in_rule__ProtocolClass__Group__48378 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_4__0_in_rule__ProtocolClass__Group__4__Impl8405 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__5__Impl_in_rule__ProtocolClass__Group__58436 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__6_in_rule__ProtocolClass__Group__58439 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_5__0_in_rule__ProtocolClass__Group__5__Impl8466 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__6__Impl_in_rule__ProtocolClass__Group__68497 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__7_in_rule__ProtocolClass__Group__68500 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_37_in_rule__ProtocolClass__Group__6__Impl8528 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__7__Impl_in_rule__ProtocolClass__Group__78559 = new BitSet(new long[]{0x0000100002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__8_in_rule__ProtocolClass__Group__78562 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ProtocolClass__Group__7__Impl8590 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__8__Impl_in_rule__ProtocolClass__Group__88621 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__9_in_rule__ProtocolClass__Group__88624 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__IncomingMessagesAssignment_8_in_rule__ProtocolClass__Group__8__Impl8651 = new BitSet(new long[]{0x0000100000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__9__Impl_in_rule__ProtocolClass__Group__98682 = new BitSet(new long[]{0x0000004000000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__10_in_rule__ProtocolClass__Group__98685 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ProtocolClass__Group__9__Impl8713 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__10__Impl_in_rule__ProtocolClass__Group__108744 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__11_in_rule__ProtocolClass__Group__108747 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_38_in_rule__ProtocolClass__Group__10__Impl8775 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__11__Impl_in_rule__ProtocolClass__Group__118806 = new BitSet(new long[]{0x0000100002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__12_in_rule__ProtocolClass__Group__118809 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ProtocolClass__Group__11__Impl8837 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__12__Impl_in_rule__ProtocolClass__Group__128868 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__13_in_rule__ProtocolClass__Group__128871 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__OutgoingMessagesAssignment_12_in_rule__ProtocolClass__Group__12__Impl8898 = new BitSet(new long[]{0x0000100000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__13__Impl_in_rule__ProtocolClass__Group__138929 = new BitSet(new long[]{0x00008A0002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__14_in_rule__ProtocolClass__Group__138932 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ProtocolClass__Group__13__Impl8960 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__14__Impl_in_rule__ProtocolClass__Group__148991 = new BitSet(new long[]{0x0000880002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__15_in_rule__ProtocolClass__Group__148994 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_14__0_in_rule__ProtocolClass__Group__14__Impl9021 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__15__Impl_in_rule__ProtocolClass__Group__159052 = new BitSet(new long[]{0x0000800002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__16_in_rule__ProtocolClass__Group__159055 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_15__0_in_rule__ProtocolClass__Group__15__Impl9082 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__16__Impl_in_rule__ProtocolClass__Group__169113 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__17_in_rule__ProtocolClass__Group__169116 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__SemanticsAssignment_16_in_rule__ProtocolClass__Group__16__Impl9143 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group__17__Impl_in_rule__ProtocolClass__Group__179174 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ProtocolClass__Group__17__Impl9202 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_2__0__Impl_in_rule__ProtocolClass__Group_2__09269 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_2__1_in_rule__ProtocolClass__Group_2__09272 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_28_in_rule__ProtocolClass__Group_2__0__Impl9300 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_2__1__Impl_in_rule__ProtocolClass__Group_2__19331 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__BaseAssignment_2_1_in_rule__ProtocolClass__Group_2__1__Impl9358 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_4__0__Impl_in_rule__ProtocolClass__Group_4__09392 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_4__1_in_rule__ProtocolClass__Group_4__09395 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_39_in_rule__ProtocolClass__Group_4__0__Impl9423 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_4__1__Impl_in_rule__ProtocolClass__Group_4__19454 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__UserCode1Assignment_4_1_in_rule__ProtocolClass__Group_4__1__Impl9481 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_5__0__Impl_in_rule__ProtocolClass__Group_5__09515 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_5__1_in_rule__ProtocolClass__Group_5__09518 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_40_in_rule__ProtocolClass__Group_5__0__Impl9546 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_5__1__Impl_in_rule__ProtocolClass__Group_5__19577 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__UserCode2Assignment_5_1_in_rule__ProtocolClass__Group_5__1__Impl9604 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_14__0__Impl_in_rule__ProtocolClass__Group_14__09638 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_14__1_in_rule__ProtocolClass__Group_14__09641 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_41_in_rule__ProtocolClass__Group_14__0__Impl9669 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_14__1__Impl_in_rule__ProtocolClass__Group_14__19700 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_14__2_in_rule__ProtocolClass__Group_14__19703 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_42_in_rule__ProtocolClass__Group_14__1__Impl9731 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_14__2__Impl_in_rule__ProtocolClass__Group_14__29762 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__RegularAssignment_14_2_in_rule__ProtocolClass__Group_14__2__Impl9789 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_15__0__Impl_in_rule__ProtocolClass__Group_15__09825 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_15__1_in_rule__ProtocolClass__Group_15__09828 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_rule__ProtocolClass__Group_15__0__Impl9856 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_15__1__Impl_in_rule__ProtocolClass__Group_15__19887 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_15__2_in_rule__ProtocolClass__Group_15__19890 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_42_in_rule__ProtocolClass__Group_15__1__Impl9918 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__Group_15__2__Impl_in_rule__ProtocolClass__Group_15__29949 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolClass__ConjugateAssignment_15_2_in_rule__ProtocolClass__Group_15__2__Impl9976 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group__0__Impl_in_rule__Message__Group__010012 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Message__Group__1_in_rule__Message__Group__010015 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_44_in_rule__Message__Group__0__Impl10043 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group__1__Impl_in_rule__Message__Group__110074 = new BitSet(new long[]{0x0000000200000000L});
+ public static final BitSet FOLLOW_rule__Message__Group__2_in_rule__Message__Group__110077 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__NameAssignment_1_in_rule__Message__Group__1__Impl10104 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group__2__Impl_in_rule__Message__Group__210134 = new BitSet(new long[]{0x0000000400000010L});
+ public static final BitSet FOLLOW_rule__Message__Group__3_in_rule__Message__Group__210137 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_33_in_rule__Message__Group__2__Impl10165 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group__3__Impl_in_rule__Message__Group__310196 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_rule__Message__Group__4_in_rule__Message__Group__310199 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group_3__0_in_rule__Message__Group__3__Impl10226 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group__4__Impl_in_rule__Message__Group__410257 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_34_in_rule__Message__Group__4__Impl10285 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group_3__0__Impl_in_rule__Message__Group_3__010326 = new BitSet(new long[]{0x0000000800000002L});
+ public static final BitSet FOLLOW_rule__Message__Group_3__1_in_rule__Message__Group_3__010329 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__ArgumentsAssignment_3_0_in_rule__Message__Group_3__0__Impl10356 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group_3__1__Impl_in_rule__Message__Group_3__110386 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group_3_1__0_in_rule__Message__Group_3__1__Impl10413 = new BitSet(new long[]{0x0000000800000002L});
+ public static final BitSet FOLLOW_rule__Message__Group_3_1__0__Impl_in_rule__Message__Group_3_1__010448 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Message__Group_3_1__1_in_rule__Message__Group_3_1__010451 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_35_in_rule__Message__Group_3_1__0__Impl10479 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__Group_3_1__1__Impl_in_rule__Message__Group_3_1__110510 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Message__ArgumentsAssignment_3_1_1_in_rule__Message__Group_3_1__1__Impl10537 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__0__Impl_in_rule__PortClass__Group__010571 = new BitSet(new long[]{0x0000600120000000L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__1_in_rule__PortClass__Group__010574 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__PortClass__Group__0__Impl10602 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__1__Impl_in_rule__PortClass__Group__110633 = new BitSet(new long[]{0x0000400120000000L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__2_in_rule__PortClass__Group__110636 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group_1__0_in_rule__PortClass__Group__1__Impl10663 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__2__Impl_in_rule__PortClass__Group__210694 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__3_in_rule__PortClass__Group__210697 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Alternatives_2_in_rule__PortClass__Group__2__Impl10726 = new BitSet(new long[]{0x0000400120000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Alternatives_2_in_rule__PortClass__Group__2__Impl10738 = new BitSet(new long[]{0x0000400120000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group__3__Impl_in_rule__PortClass__Group__310771 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__PortClass__Group__3__Impl10799 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group_1__0__Impl_in_rule__PortClass__Group_1__010838 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__PortClass__Group_1__1_in_rule__PortClass__Group_1__010841 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_45_in_rule__PortClass__Group_1__0__Impl10869 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__Group_1__1__Impl_in_rule__PortClass__Group_1__110900 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PortClass__UserCodeAssignment_1_1_in_rule__PortClass__Group_1__1__Impl10927 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageHandler__Group__0__Impl_in_rule__MessageHandler__Group__010961 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__MessageHandler__Group__1_in_rule__MessageHandler__Group__010964 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_rule__MessageHandler__Group__0__Impl10992 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageHandler__Group__1__Impl_in_rule__MessageHandler__Group__111023 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__MessageHandler__Group__2_in_rule__MessageHandler__Group__111026 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageHandler__MsgAssignment_1_in_rule__MessageHandler__Group__1__Impl11053 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageHandler__Group__2__Impl_in_rule__MessageHandler__Group__211083 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageHandler__DetailCodeAssignment_2_in_rule__MessageHandler__Group__2__Impl11110 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__0__Impl_in_rule__ProtocolSemantics__Group__011146 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__1_in_rule__ProtocolSemantics__Group__011149 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_47_in_rule__ProtocolSemantics__Group__0__Impl11177 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__1__Impl_in_rule__ProtocolSemantics__Group__111208 = new BitSet(new long[]{0x0005000000000000L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__2_in_rule__ProtocolSemantics__Group__111211 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ProtocolSemantics__Group__1__Impl11239 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__2__Impl_in_rule__ProtocolSemantics__Group__211270 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__3_in_rule__ProtocolSemantics__Group__211273 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__RulesAssignment_2_in_rule__ProtocolSemantics__Group__2__Impl11302 = new BitSet(new long[]{0x0005000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__RulesAssignment_2_in_rule__ProtocolSemantics__Group__2__Impl11314 = new BitSet(new long[]{0x0005000000000002L});
+ public static final BitSet FOLLOW_rule__ProtocolSemantics__Group__3__Impl_in_rule__ProtocolSemantics__Group__311347 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ProtocolSemantics__Group__3__Impl11375 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__0__Impl_in_rule__SemanticsInRule__Group__011414 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__1_in_rule__SemanticsInRule__Group__011417 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_48_in_rule__SemanticsInRule__Group__0__Impl11445 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__1__Impl_in_rule__SemanticsInRule__Group__111476 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__2_in_rule__SemanticsInRule__Group__111479 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__MsgAssignment_1_in_rule__SemanticsInRule__Group__1__Impl11506 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__2__Impl_in_rule__SemanticsInRule__Group__211536 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__3_in_rule__SemanticsInRule__Group__211539 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_rule__SemanticsInRule__Group__2__Impl11567 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__3__Impl_in_rule__SemanticsInRule__Group__311598 = new BitSet(new long[]{0x0005000002000000L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__4_in_rule__SemanticsInRule__Group__311601 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__SemanticsInRule__Group__3__Impl11629 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__4__Impl_in_rule__SemanticsInRule__Group__411660 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__5_in_rule__SemanticsInRule__Group__411663 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__FollowUpsAssignment_4_in_rule__SemanticsInRule__Group__4__Impl11690 = new BitSet(new long[]{0x0005000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsInRule__Group__5__Impl_in_rule__SemanticsInRule__Group__511721 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__SemanticsInRule__Group__5__Impl11749 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__0__Impl_in_rule__SemanticsOutRule__Group__011792 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__1_in_rule__SemanticsOutRule__Group__011795 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_50_in_rule__SemanticsOutRule__Group__0__Impl11823 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__1__Impl_in_rule__SemanticsOutRule__Group__111854 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__2_in_rule__SemanticsOutRule__Group__111857 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__MsgAssignment_1_in_rule__SemanticsOutRule__Group__1__Impl11884 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__2__Impl_in_rule__SemanticsOutRule__Group__211914 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__3_in_rule__SemanticsOutRule__Group__211917 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_rule__SemanticsOutRule__Group__2__Impl11945 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__3__Impl_in_rule__SemanticsOutRule__Group__311976 = new BitSet(new long[]{0x0005000002000000L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__4_in_rule__SemanticsOutRule__Group__311979 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__SemanticsOutRule__Group__3__Impl12007 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__4__Impl_in_rule__SemanticsOutRule__Group__412038 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__5_in_rule__SemanticsOutRule__Group__412041 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__FollowUpsAssignment_4_in_rule__SemanticsOutRule__Group__4__Impl12068 = new BitSet(new long[]{0x0005000000000002L});
+ public static final BitSet FOLLOW_rule__SemanticsOutRule__Group__5__Impl_in_rule__SemanticsOutRule__Group__512099 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__SemanticsOutRule__Group__5__Impl12127 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__0__Impl_in_rule__ActorClass__Group__012170 = new BitSet(new long[]{0x0008000000000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__1_in_rule__ActorClass__Group__012173 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__AbstractAssignment_0_in_rule__ActorClass__Group__0__Impl12200 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__1__Impl_in_rule__ActorClass__Group__112231 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__2_in_rule__ActorClass__Group__112234 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_51_in_rule__ActorClass__Group__1__Impl12262 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__2__Impl_in_rule__ActorClass__Group__212293 = new BitSet(new long[]{0x0000000011000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__3_in_rule__ActorClass__Group__212296 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__NameAssignment_2_in_rule__ActorClass__Group__2__Impl12323 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__3__Impl_in_rule__ActorClass__Group__312353 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__4_in_rule__ActorClass__Group__312356 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_3__0_in_rule__ActorClass__Group__3__Impl12383 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__4__Impl_in_rule__ActorClass__Group__412414 = new BitSet(new long[]{0x0070000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__5_in_rule__ActorClass__Group__412417 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ActorClass__Group__4__Impl12445 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__5__Impl_in_rule__ActorClass__Group__512476 = new BitSet(new long[]{0x0060000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__6_in_rule__ActorClass__Group__512479 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__0_in_rule__ActorClass__Group__5__Impl12506 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__6__Impl_in_rule__ActorClass__Group__612537 = new BitSet(new long[]{0x0040000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__7_in_rule__ActorClass__Group__612540 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__0_in_rule__ActorClass__Group__6__Impl12567 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__7__Impl_in_rule__ActorClass__Group__712598 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__8_in_rule__ActorClass__Group__712601 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__0_in_rule__ActorClass__Group__7__Impl12628 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group__8__Impl_in_rule__ActorClass__Group__812659 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ActorClass__Group__8__Impl12687 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_3__0__Impl_in_rule__ActorClass__Group_3__012736 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_3__1_in_rule__ActorClass__Group_3__012739 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_28_in_rule__ActorClass__Group_3__0__Impl12767 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_3__1__Impl_in_rule__ActorClass__Group_3__112798 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__BaseAssignment_3_1_in_rule__ActorClass__Group_3__1__Impl12825 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__0__Impl_in_rule__ActorClass__Group_5__012859 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__1_in_rule__ActorClass__Group_5__012862 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_52_in_rule__ActorClass__Group_5__0__Impl12890 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__1__Impl_in_rule__ActorClass__Group_5__112921 = new BitSet(new long[]{0x0480000002000000L,0x0000000400000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__2_in_rule__ActorClass__Group_5__112924 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ActorClass__Group_5__1__Impl12952 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__2__Impl_in_rule__ActorClass__Group_5__212983 = new BitSet(new long[]{0x0400000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__3_in_rule__ActorClass__Group_5__212986 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__IfPortsAssignment_5_2_in_rule__ActorClass__Group_5__2__Impl13013 = new BitSet(new long[]{0x0080000000000002L,0x0000000400000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__3__Impl_in_rule__ActorClass__Group_5__313044 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__4_in_rule__ActorClass__Group_5__313047 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__IfSPPsAssignment_5_3_in_rule__ActorClass__Group_5__3__Impl13074 = new BitSet(new long[]{0x0400000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_5__4__Impl_in_rule__ActorClass__Group_5__413105 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ActorClass__Group_5__4__Impl13133 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__0__Impl_in_rule__ActorClass__Group_6__013174 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__1_in_rule__ActorClass__Group_6__013177 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_53_in_rule__ActorClass__Group_6__0__Impl13205 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__1__Impl_in_rule__ActorClass__Group_6__113236 = new BitSet(new long[]{0x0B80018022000000L,0x0000000400000114L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__2_in_rule__ActorClass__Group_6__113239 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ActorClass__Group_6__1__Impl13267 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__2__Impl_in_rule__ActorClass__Group_6__213298 = new BitSet(new long[]{0x0B80010022000000L,0x0000000400000114L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__3_in_rule__ActorClass__Group_6__213301 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_2__0_in_rule__ActorClass__Group_6__2__Impl13328 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__3__Impl_in_rule__ActorClass__Group_6__313359 = new BitSet(new long[]{0x0B80000022000000L,0x0000000400000114L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__4_in_rule__ActorClass__Group_6__313362 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_3__0_in_rule__ActorClass__Group_6__3__Impl13389 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__4__Impl_in_rule__ActorClass__Group_6__413420 = new BitSet(new long[]{0x0A00000022000000L,0x0000000000000114L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__5_in_rule__ActorClass__Group_6__413423 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Alternatives_6_4_in_rule__ActorClass__Group_6__4__Impl13450 = new BitSet(new long[]{0x0180000000000002L,0x0000000400000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__5__Impl_in_rule__ActorClass__Group_6__513481 = new BitSet(new long[]{0x0200000022000000L,0x0000000000000114L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__6_in_rule__ActorClass__Group_6__513484 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__ServiceImplementationsAssignment_6_5_in_rule__ActorClass__Group_6__5__Impl13511 = new BitSet(new long[]{0x0800000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__6__Impl_in_rule__ActorClass__Group_6__613542 = new BitSet(new long[]{0x0000000022000000L,0x0000000000000114L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__7_in_rule__ActorClass__Group_6__613545 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__StrSAPsAssignment_6_6_in_rule__ActorClass__Group_6__6__Impl13572 = new BitSet(new long[]{0x0200000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__7__Impl_in_rule__ActorClass__Group_6__713603 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000114L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__8_in_rule__ActorClass__Group_6__713606 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__AttributesAssignment_6_7_in_rule__ActorClass__Group_6__7__Impl13633 = new BitSet(new long[]{0x0000000020000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__8__Impl_in_rule__ActorClass__Group_6__813664 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000014L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__9_in_rule__ActorClass__Group_6__813667 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__ActorRefsAssignment_6_8_in_rule__ActorClass__Group_6__8__Impl13694 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__9__Impl_in_rule__ActorClass__Group_6__913725 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__10_in_rule__ActorClass__Group_6__913728 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__BindingsAssignment_6_9_in_rule__ActorClass__Group_6__9__Impl13755 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__10__Impl_in_rule__ActorClass__Group_6__1013786 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__11_in_rule__ActorClass__Group_6__1013789 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__ConnectionsAssignment_6_10_in_rule__ActorClass__Group_6__10__Impl13816 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6__11__Impl_in_rule__ActorClass__Group_6__1113847 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ActorClass__Group_6__11__Impl13875 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_2__0__Impl_in_rule__ActorClass__Group_6_2__013930 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_2__1_in_rule__ActorClass__Group_6_2__013933 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_39_in_rule__ActorClass__Group_6_2__0__Impl13961 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_2__1__Impl_in_rule__ActorClass__Group_6_2__113992 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__UserCode1Assignment_6_2_1_in_rule__ActorClass__Group_6_2__1__Impl14019 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_3__0__Impl_in_rule__ActorClass__Group_6_3__014053 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_3__1_in_rule__ActorClass__Group_6_3__014056 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_40_in_rule__ActorClass__Group_6_3__0__Impl14084 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_6_3__1__Impl_in_rule__ActorClass__Group_6_3__114115 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__UserCode2Assignment_6_3_1_in_rule__ActorClass__Group_6_3__1__Impl14142 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__0__Impl_in_rule__ActorClass__Group_7__014176 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__1_in_rule__ActorClass__Group_7__014179 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_54_in_rule__ActorClass__Group_7__0__Impl14207 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__1__Impl_in_rule__ActorClass__Group_7__114238 = new BitSet(new long[]{0x0000000102000000L,0x0000000000000200L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__2_in_rule__ActorClass__Group_7__114241 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ActorClass__Group_7__1__Impl14269 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__2__Impl_in_rule__ActorClass__Group_7__214300 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000200L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__3_in_rule__ActorClass__Group_7__214303 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__OperationsAssignment_7_2_in_rule__ActorClass__Group_7__2__Impl14330 = new BitSet(new long[]{0x0000000100000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__3__Impl_in_rule__ActorClass__Group_7__314361 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__4_in_rule__ActorClass__Group_7__314364 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__StateMachineAssignment_7_3_in_rule__ActorClass__Group_7__3__Impl14391 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorClass__Group_7__4__Impl_in_rule__ActorClass__Group_7__414422 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ActorClass__Group_7__4__Impl14450 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group__0__Impl_in_rule__Port__Group__014491 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_rule__Port__Group__1_in_rule__Port__Group__014494 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__ConjugatedAssignment_0_in_rule__Port__Group__0__Impl14521 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group__1__Impl_in_rule__Port__Group__114552 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Port__Group__2_in_rule__Port__Group__114555 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_55_in_rule__Port__Group__1__Impl14583 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group__2__Impl_in_rule__Port__Group__214614 = new BitSet(new long[]{0x0000000044000000L});
+ public static final BitSet FOLLOW_rule__Port__Group__3_in_rule__Port__Group__214617 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__NameAssignment_2_in_rule__Port__Group__2__Impl14644 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group__3__Impl_in_rule__Port__Group__314674 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__Port__Group__4_in_rule__Port__Group__314677 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group_3__0_in_rule__Port__Group__3__Impl14704 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group__4__Impl_in_rule__Port__Group__414735 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Port__Group__5_in_rule__Port__Group__414738 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__Port__Group__4__Impl14766 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group__5__Impl_in_rule__Port__Group__514797 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__ProtocolAssignment_5_in_rule__Port__Group__5__Impl14824 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group_3__0__Impl_in_rule__Port__Group_3__014866 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_rule__Port__Group_3__1_in_rule__Port__Group_3__014869 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_30_in_rule__Port__Group_3__0__Impl14897 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group_3__1__Impl_in_rule__Port__Group_3__114928 = new BitSet(new long[]{0x0000000080000000L});
+ public static final BitSet FOLLOW_rule__Port__Group_3__2_in_rule__Port__Group_3__114931 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__MultiplicityAssignment_3_1_in_rule__Port__Group_3__1__Impl14958 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Port__Group_3__2__Impl_in_rule__Port__Group_3__214988 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_31_in_rule__Port__Group_3__2__Impl15016 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExternalPort__Group__0__Impl_in_rule__ExternalPort__Group__015053 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_rule__ExternalPort__Group__1_in_rule__ExternalPort__Group__015056 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_56_in_rule__ExternalPort__Group__0__Impl15084 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExternalPort__Group__1__Impl_in_rule__ExternalPort__Group__115115 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ExternalPort__Group__2_in_rule__ExternalPort__Group__115118 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_55_in_rule__ExternalPort__Group__1__Impl15146 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExternalPort__Group__2__Impl_in_rule__ExternalPort__Group__215177 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExternalPort__IfportAssignment_2_in_rule__ExternalPort__Group__2__Impl15204 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__0__Impl_in_rule__SAPRef__Group__015240 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__1_in_rule__SAPRef__Group__015243 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_57_in_rule__SAPRef__Group__0__Impl15271 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__1__Impl_in_rule__SAPRef__Group__115302 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__2_in_rule__SAPRef__Group__115305 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPRef__NameAssignment_1_in_rule__SAPRef__Group__1__Impl15332 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__2__Impl_in_rule__SAPRef__Group__215362 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__3_in_rule__SAPRef__Group__215365 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__SAPRef__Group__2__Impl15393 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPRef__Group__3__Impl_in_rule__SAPRef__Group__315424 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SAPRef__ProtocolAssignment_3_in_rule__SAPRef__Group__3__Impl15451 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__0__Impl_in_rule__SPPRef__Group__015489 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__1_in_rule__SPPRef__Group__015492 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_58_in_rule__SPPRef__Group__0__Impl15520 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__1__Impl_in_rule__SPPRef__Group__115551 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__2_in_rule__SPPRef__Group__115554 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPRef__NameAssignment_1_in_rule__SPPRef__Group__1__Impl15581 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__2__Impl_in_rule__SPPRef__Group__215611 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__3_in_rule__SPPRef__Group__215614 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__SPPRef__Group__2__Impl15642 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPRef__Group__3__Impl_in_rule__SPPRef__Group__315673 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPRef__ProtocolAssignment_3_in_rule__SPPRef__Group__3__Impl15700 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ServiceImplementation__Group__0__Impl_in_rule__ServiceImplementation__Group__015738 = new BitSet(new long[]{0x1000000000000000L});
+ public static final BitSet FOLLOW_rule__ServiceImplementation__Group__1_in_rule__ServiceImplementation__Group__015741 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_59_in_rule__ServiceImplementation__Group__0__Impl15769 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ServiceImplementation__Group__1__Impl_in_rule__ServiceImplementation__Group__115800 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ServiceImplementation__Group__2_in_rule__ServiceImplementation__Group__115803 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_60_in_rule__ServiceImplementation__Group__1__Impl15831 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ServiceImplementation__Group__2__Impl_in_rule__ServiceImplementation__Group__215862 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ServiceImplementation__SppAssignment_2_in_rule__ServiceImplementation__Group__2__Impl15889 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__0__Impl_in_rule__LogicalSystem__Group__015925 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__1_in_rule__LogicalSystem__Group__015928 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_61_in_rule__LogicalSystem__Group__0__Impl15956 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__1__Impl_in_rule__LogicalSystem__Group__115987 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__2_in_rule__LogicalSystem__Group__115990 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__NameAssignment_1_in_rule__LogicalSystem__Group__1__Impl16017 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__2__Impl_in_rule__LogicalSystem__Group__216047 = new BitSet(new long[]{0x4000000000000000L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__3_in_rule__LogicalSystem__Group__216050 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__LogicalSystem__Group__2__Impl16078 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__3__Impl_in_rule__LogicalSystem__Group__316109 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000014L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__4_in_rule__LogicalSystem__Group__316112 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__SubSystemsAssignment_3_in_rule__LogicalSystem__Group__3__Impl16141 = new BitSet(new long[]{0x4000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__SubSystemsAssignment_3_in_rule__LogicalSystem__Group__3__Impl16153 = new BitSet(new long[]{0x4000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__4__Impl_in_rule__LogicalSystem__Group__416186 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__5_in_rule__LogicalSystem__Group__416189 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__BindingsAssignment_4_in_rule__LogicalSystem__Group__4__Impl16216 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__5__Impl_in_rule__LogicalSystem__Group__516247 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__6_in_rule__LogicalSystem__Group__516250 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__ConnectionsAssignment_5_in_rule__LogicalSystem__Group__5__Impl16277 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__LogicalSystem__Group__6__Impl_in_rule__LogicalSystem__Group__616308 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__LogicalSystem__Group__6__Impl16336 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__0__Impl_in_rule__SubSystemRef__Group__016381 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__1_in_rule__SubSystemRef__Group__016384 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_62_in_rule__SubSystemRef__Group__0__Impl16412 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__1__Impl_in_rule__SubSystemRef__Group__116443 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__2_in_rule__SubSystemRef__Group__116446 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__NameAssignment_1_in_rule__SubSystemRef__Group__1__Impl16473 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__2__Impl_in_rule__SubSystemRef__Group__216503 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__3_in_rule__SubSystemRef__Group__216506 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__SubSystemRef__Group__2__Impl16534 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__Group__3__Impl_in_rule__SubSystemRef__Group__316565 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemRef__TypeAssignment_3_in_rule__SubSystemRef__Group__3__Impl16592 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__0__Impl_in_rule__SubSystemClass__Group__016630 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__1_in_rule__SubSystemClass__Group__016633 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_63_in_rule__SubSystemClass__Group__0__Impl16661 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__1__Impl_in_rule__SubSystemClass__Group__116692 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__2_in_rule__SubSystemClass__Group__116695 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__NameAssignment_1_in_rule__SubSystemClass__Group__1__Impl16722 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__2__Impl_in_rule__SubSystemClass__Group__216752 = new BitSet(new long[]{0x0480000000000000L,0x0000000400000100L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__3_in_rule__SubSystemClass__Group__216755 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__SubSystemClass__Group__2__Impl16783 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__3__Impl_in_rule__SubSystemClass__Group__316814 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000100L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__4_in_rule__SubSystemClass__Group__316817 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__RelayPortsAssignment_3_in_rule__SubSystemClass__Group__3__Impl16844 = new BitSet(new long[]{0x0080000000000002L,0x0000000400000000L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__4__Impl_in_rule__SubSystemClass__Group__416875 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__5_in_rule__SubSystemClass__Group__416878 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__IfSPPsAssignment_4_in_rule__SubSystemClass__Group__4__Impl16905 = new BitSet(new long[]{0x0400000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__5__Impl_in_rule__SubSystemClass__Group__516936 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000015L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__6_in_rule__SubSystemClass__Group__516939 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__ActorRefsAssignment_5_in_rule__SubSystemClass__Group__5__Impl16968 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__ActorRefsAssignment_5_in_rule__SubSystemClass__Group__5__Impl16980 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__6__Impl_in_rule__SubSystemClass__Group__617013 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000011L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__7_in_rule__SubSystemClass__Group__617016 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__BindingsAssignment_6_in_rule__SubSystemClass__Group__6__Impl17043 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__7__Impl_in_rule__SubSystemClass__Group__717074 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000001L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__8_in_rule__SubSystemClass__Group__717077 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__ConnectionsAssignment_7_in_rule__SubSystemClass__Group__7__Impl17104 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__8__Impl_in_rule__SubSystemClass__Group__817135 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__9_in_rule__SubSystemClass__Group__817138 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__ThreadsAssignment_8_in_rule__SubSystemClass__Group__8__Impl17165 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+ public static final BitSet FOLLOW_rule__SubSystemClass__Group__9__Impl_in_rule__SubSystemClass__Group__917196 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__SubSystemClass__Group__9__Impl17224 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__0__Impl_in_rule__LogicalThread__Group__017275 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__1_in_rule__LogicalThread__Group__017278 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_64_in_rule__LogicalThread__Group__0__Impl17306 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__1__Impl_in_rule__LogicalThread__Group__117337 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__2_in_rule__LogicalThread__Group__117340 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__NameAssignment_1_in_rule__LogicalThread__Group__1__Impl17367 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__2__Impl_in_rule__LogicalThread__Group__217397 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__3_in_rule__LogicalThread__Group__217400 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__LogicalThread__Group__2__Impl17428 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__3__Impl_in_rule__LogicalThread__Group__317459 = new BitSet(new long[]{0x0000000802000000L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__4_in_rule__LogicalThread__Group__317462 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__InstancesAssignment_3_in_rule__LogicalThread__Group__3__Impl17489 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__4__Impl_in_rule__LogicalThread__Group__417519 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__5_in_rule__LogicalThread__Group__417522 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group_4__0_in_rule__LogicalThread__Group__4__Impl17549 = new BitSet(new long[]{0x0000000800000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group__5__Impl_in_rule__LogicalThread__Group__517580 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__LogicalThread__Group__5__Impl17608 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group_4__0__Impl_in_rule__LogicalThread__Group_4__017651 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group_4__1_in_rule__LogicalThread__Group_4__017654 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_35_in_rule__LogicalThread__Group_4__0__Impl17682 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__Group_4__1__Impl_in_rule__LogicalThread__Group_4__117713 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LogicalThread__InstancesAssignment_4_1_in_rule__LogicalThread__Group_4__1__Impl17740 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group__0__Impl_in_rule__ActorInstancePath__Group__017774 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group__1_in_rule__ActorInstancePath__Group__017777 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__SegmentsAssignment_0_in_rule__ActorInstancePath__Group__0__Impl17804 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group__1__Impl_in_rule__ActorInstancePath__Group__117834 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group_1__0_in_rule__ActorInstancePath__Group__1__Impl17861 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group_1__0__Impl_in_rule__ActorInstancePath__Group_1__017896 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group_1__1_in_rule__ActorInstancePath__Group_1__017899 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_65_in_rule__ActorInstancePath__Group_1__0__Impl17927 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__Group_1__1__Impl_in_rule__ActorInstancePath__Group_1__117958 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorInstancePath__SegmentsAssignment_1_1_in_rule__ActorInstancePath__Group_1__1__Impl17985 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Binding__Group__0__Impl_in_rule__Binding__Group__018019 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Binding__Group__1_in_rule__Binding__Group__018022 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_66_in_rule__Binding__Group__0__Impl18050 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Binding__Group__1__Impl_in_rule__Binding__Group__118081 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+ public static final BitSet FOLLOW_rule__Binding__Group__2_in_rule__Binding__Group__118084 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Binding__Endpoint1Assignment_1_in_rule__Binding__Group__1__Impl18111 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Binding__Group__2__Impl_in_rule__Binding__Group__218141 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Binding__Group__3_in_rule__Binding__Group__218144 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_67_in_rule__Binding__Group__2__Impl18172 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Binding__Group__3__Impl_in_rule__Binding__Group__318203 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Binding__Endpoint2Assignment_3_in_rule__Binding__Group__3__Impl18230 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group__0__Impl_in_rule__BindingEndPoint__Group__018268 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group__1_in_rule__BindingEndPoint__Group__018271 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group_0__0_in_rule__BindingEndPoint__Group__0__Impl18298 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group__1__Impl_in_rule__BindingEndPoint__Group__118329 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__PortAssignment_1_in_rule__BindingEndPoint__Group__1__Impl18356 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group_0__0__Impl_in_rule__BindingEndPoint__Group_0__018390 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group_0__1_in_rule__BindingEndPoint__Group_0__018393 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__ActorRefAssignment_0_0_in_rule__BindingEndPoint__Group_0__0__Impl18420 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BindingEndPoint__Group_0__1__Impl_in_rule__BindingEndPoint__Group_0__118450 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_65_in_rule__BindingEndPoint__Group_0__1__Impl18478 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__0__Impl_in_rule__LayerConnection__Group__018513 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__1_in_rule__LayerConnection__Group__018516 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_68_in_rule__LayerConnection__Group__0__Impl18544 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__1__Impl_in_rule__LayerConnection__Group__118575 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__2_in_rule__LayerConnection__Group__118578 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LayerConnection__FromAssignment_1_in_rule__LayerConnection__Group__1__Impl18605 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__2__Impl_in_rule__LayerConnection__Group__218635 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__3_in_rule__LayerConnection__Group__218638 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_69_in_rule__LayerConnection__Group__2__Impl18666 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LayerConnection__Group__3__Impl_in_rule__LayerConnection__Group__318697 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__LayerConnection__ToAssignment_3_in_rule__LayerConnection__Group__3__Impl18724 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefSAPoint__Group__0__Impl_in_rule__RefSAPoint__Group__018762 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__RefSAPoint__Group__1_in_rule__RefSAPoint__Group__018765 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_70_in_rule__RefSAPoint__Group__0__Impl18793 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefSAPoint__Group__1__Impl_in_rule__RefSAPoint__Group__118824 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefSAPoint__RefAssignment_1_in_rule__RefSAPoint__Group__1__Impl18851 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RelaySAPoint__Group__0__Impl_in_rule__RelaySAPoint__Group__018885 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__RelaySAPoint__Group__1_in_rule__RelaySAPoint__Group__018888 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_71_in_rule__RelaySAPoint__Group__0__Impl18916 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RelaySAPoint__Group__1__Impl_in_rule__RelaySAPoint__Group__118947 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RelaySAPoint__RelayAssignment_1_in_rule__RelaySAPoint__Group__1__Impl18974 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPoint__Group__0__Impl_in_rule__SPPoint__Group__019008 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPoint__Group__1_in_rule__SPPoint__Group__019011 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPoint__RefAssignment_0_in_rule__SPPoint__Group__0__Impl19038 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPoint__Group__1__Impl_in_rule__SPPoint__Group__119068 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SPPoint__Group__2_in_rule__SPPoint__Group__119071 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_65_in_rule__SPPoint__Group__1__Impl19099 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPoint__Group__2__Impl_in_rule__SPPoint__Group__219130 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SPPoint__ServiceAssignment_2_in_rule__SPPoint__Group__2__Impl19157 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__0__Impl_in_rule__ActorRef__Group__019193 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__1_in_rule__ActorRef__Group__019196 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_72_in_rule__ActorRef__Group__0__Impl19224 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__1__Impl_in_rule__ActorRef__Group__119255 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__2_in_rule__ActorRef__Group__119258 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorRef__NameAssignment_1_in_rule__ActorRef__Group__1__Impl19285 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__2__Impl_in_rule__ActorRef__Group__219315 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__3_in_rule__ActorRef__Group__219318 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__ActorRef__Group__2__Impl19346 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorRef__Group__3__Impl_in_rule__ActorRef__Group__319377 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ActorRef__TypeAssignment_3_in_rule__ActorRef__Group__3__Impl19404 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__Group__0__Impl_in_rule__StateGraph__Group__019442 = new BitSet(new long[]{0x0000000000000000L,0x00000008000FC400L});
+ public static final BitSet FOLLOW_rule__StateGraph__Group__1_in_rule__StateGraph__Group__019445 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__StateGraph__Group__0__Impl19473 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__Group__1__Impl_in_rule__StateGraph__Group__119504 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__StateGraph__Group__2_in_rule__StateGraph__Group__119507 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateGraph__Alternatives_1_in_rule__StateGraph__Group__1__Impl19536 = new BitSet(new long[]{0x0000000000000002L,0x00000008000FC400L});
+ public static final BitSet FOLLOW_rule__StateGraph__Alternatives_1_in_rule__StateGraph__Group__1__Impl19548 = new BitSet(new long[]{0x0000000000000002L,0x00000008000FC400L});
+ public static final BitSet FOLLOW_rule__StateGraph__Group__2__Impl_in_rule__StateGraph__Group__219581 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__StateGraph__Group__2__Impl19609 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__0__Impl_in_rule__StateMachine__Group__019646 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__1_in_rule__StateMachine__Group__019649 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_73_in_rule__StateMachine__Group__0__Impl19677 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__1__Impl_in_rule__StateMachine__Group__119708 = new BitSet(new long[]{0x0000000000000000L,0x00000008000FC400L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__2_in_rule__StateMachine__Group__119711 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__StateMachine__Group__1__Impl19739 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__2__Impl_in_rule__StateMachine__Group__219770 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__3_in_rule__StateMachine__Group__219773 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__StateMachine__Alternatives_2_in_rule__StateMachine__Group__2__Impl19802 = new BitSet(new long[]{0x0000000000000002L,0x00000008000FC400L});
+ public static final BitSet FOLLOW_rule__StateMachine__Alternatives_2_in_rule__StateMachine__Group__2__Impl19814 = new BitSet(new long[]{0x0000000000000002L,0x00000008000FC400L});
+ public static final BitSet FOLLOW_rule__StateMachine__Group__3__Impl_in_rule__StateMachine__Group__319847 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__StateMachine__Group__3__Impl19875 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__0__Impl_in_rule__BaseState__Group__019914 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__1_in_rule__BaseState__Group__019917 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_74_in_rule__BaseState__Group__0__Impl19945 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__1__Impl_in_rule__BaseState__Group__119976 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__2_in_rule__BaseState__Group__119979 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__NameAssignment_1_in_rule__BaseState__Group__1__Impl20006 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__2__Impl_in_rule__BaseState__Group__220036 = new BitSet(new long[]{0x0000000002000000L,0x0000000000003800L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__3_in_rule__BaseState__Group__220039 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__BaseState__Group__2__Impl20067 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__3__Impl_in_rule__BaseState__Group__320098 = new BitSet(new long[]{0x0000000002000000L,0x0000000000003000L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__4_in_rule__BaseState__Group__320101 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_3__0_in_rule__BaseState__Group__3__Impl20128 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__4__Impl_in_rule__BaseState__Group__420159 = new BitSet(new long[]{0x0000000002000000L,0x0000000000002000L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__5_in_rule__BaseState__Group__420162 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_4__0_in_rule__BaseState__Group__4__Impl20189 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__5__Impl_in_rule__BaseState__Group__520220 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__6_in_rule__BaseState__Group__520223 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_5__0_in_rule__BaseState__Group__5__Impl20250 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group__6__Impl_in_rule__BaseState__Group__620281 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__BaseState__Group__6__Impl20309 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_3__0__Impl_in_rule__BaseState__Group_3__020354 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_3__1_in_rule__BaseState__Group_3__020357 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_75_in_rule__BaseState__Group_3__0__Impl20385 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_3__1__Impl_in_rule__BaseState__Group_3__120416 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__EntryCodeAssignment_3_1_in_rule__BaseState__Group_3__1__Impl20443 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_4__0__Impl_in_rule__BaseState__Group_4__020477 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_4__1_in_rule__BaseState__Group_4__020480 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_76_in_rule__BaseState__Group_4__0__Impl20508 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_4__1__Impl_in_rule__BaseState__Group_4__120539 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__ExitCodeAssignment_4_1_in_rule__BaseState__Group_4__1__Impl20566 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_5__0__Impl_in_rule__BaseState__Group_5__020600 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_5__1_in_rule__BaseState__Group_5__020603 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_77_in_rule__BaseState__Group_5__0__Impl20631 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__Group_5__1__Impl_in_rule__BaseState__Group_5__120662 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__BaseState__SubgraphAssignment_5_1_in_rule__BaseState__Group_5__1__Impl20689 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__0__Impl_in_rule__RefinedState__Group__020723 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__1_in_rule__RefinedState__Group__020726 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_78_in_rule__RefinedState__Group__0__Impl20754 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__1__Impl_in_rule__RefinedState__Group__120785 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__2_in_rule__RefinedState__Group__120788 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__BaseAssignment_1_in_rule__RefinedState__Group__1__Impl20815 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__2__Impl_in_rule__RefinedState__Group__220845 = new BitSet(new long[]{0x0000000002000000L,0x0000000000003800L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__3_in_rule__RefinedState__Group__220848 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__RefinedState__Group__2__Impl20876 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__3__Impl_in_rule__RefinedState__Group__320907 = new BitSet(new long[]{0x0000000002000000L,0x0000000000003000L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__4_in_rule__RefinedState__Group__320910 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_3__0_in_rule__RefinedState__Group__3__Impl20937 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__4__Impl_in_rule__RefinedState__Group__420968 = new BitSet(new long[]{0x0000000002000000L,0x0000000000002000L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__5_in_rule__RefinedState__Group__420971 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_4__0_in_rule__RefinedState__Group__4__Impl20998 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__5__Impl_in_rule__RefinedState__Group__521029 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__6_in_rule__RefinedState__Group__521032 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_5__0_in_rule__RefinedState__Group__5__Impl21059 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group__6__Impl_in_rule__RefinedState__Group__621090 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__RefinedState__Group__6__Impl21118 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_3__0__Impl_in_rule__RefinedState__Group_3__021163 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_3__1_in_rule__RefinedState__Group_3__021166 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_75_in_rule__RefinedState__Group_3__0__Impl21194 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_3__1__Impl_in_rule__RefinedState__Group_3__121225 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__EntryCodeAssignment_3_1_in_rule__RefinedState__Group_3__1__Impl21252 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_4__0__Impl_in_rule__RefinedState__Group_4__021286 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_4__1_in_rule__RefinedState__Group_4__021289 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_76_in_rule__RefinedState__Group_4__0__Impl21317 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_4__1__Impl_in_rule__RefinedState__Group_4__121348 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__ExitCodeAssignment_4_1_in_rule__RefinedState__Group_4__1__Impl21375 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_5__0__Impl_in_rule__RefinedState__Group_5__021409 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_5__1_in_rule__RefinedState__Group_5__021412 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_77_in_rule__RefinedState__Group_5__0__Impl21440 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__Group_5__1__Impl_in_rule__RefinedState__Group_5__121471 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__RefinedState__SubgraphAssignment_5_1_in_rule__RefinedState__Group_5__1__Impl21498 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DetailCode__Group__0__Impl_in_rule__DetailCode__Group__021532 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_rule__DetailCode__Group__1_in_rule__DetailCode__Group__021535 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__DetailCode__Group__0__Impl21563 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DetailCode__Group__1__Impl_in_rule__DetailCode__Group__121594 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__DetailCode__Group__2_in_rule__DetailCode__Group__121597 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DetailCode__CommandsAssignment_1_in_rule__DetailCode__Group__1__Impl21626 = new BitSet(new long[]{0x0000000000000042L});
+ public static final BitSet FOLLOW_rule__DetailCode__CommandsAssignment_1_in_rule__DetailCode__Group__1__Impl21638 = new BitSet(new long[]{0x0000000000000042L});
+ public static final BitSet FOLLOW_rule__DetailCode__Group__2__Impl_in_rule__DetailCode__Group__221671 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__DetailCode__Group__2__Impl21699 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__Group__0__Impl_in_rule__TransitionPoint__Group__021736 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__Group__1_in_rule__TransitionPoint__Group__021739 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__HandlerAssignment_0_in_rule__TransitionPoint__Group__0__Impl21766 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__Group__1__Impl_in_rule__TransitionPoint__Group__121797 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__Group__2_in_rule__TransitionPoint__Group__121800 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_79_in_rule__TransitionPoint__Group__1__Impl21828 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__Group__2__Impl_in_rule__TransitionPoint__Group__221859 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionPoint__NameAssignment_2_in_rule__TransitionPoint__Group__2__Impl21886 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__EntryPoint__Group__0__Impl_in_rule__EntryPoint__Group__021922 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__EntryPoint__Group__1_in_rule__EntryPoint__Group__021925 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_80_in_rule__EntryPoint__Group__0__Impl21953 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__EntryPoint__Group__1__Impl_in_rule__EntryPoint__Group__121984 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__EntryPoint__NameAssignment_1_in_rule__EntryPoint__Group__1__Impl22011 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExitPoint__Group__0__Impl_in_rule__ExitPoint__Group__022045 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ExitPoint__Group__1_in_rule__ExitPoint__Group__022048 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_81_in_rule__ExitPoint__Group__0__Impl22076 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExitPoint__Group__1__Impl_in_rule__ExitPoint__Group__122107 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ExitPoint__NameAssignment_1_in_rule__ExitPoint__Group__1__Impl22134 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicePoint__Group__0__Impl_in_rule__ChoicePoint__Group__022168 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ChoicePoint__Group__1_in_rule__ChoicePoint__Group__022171 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_82_in_rule__ChoicePoint__Group__0__Impl22199 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicePoint__Group__1__Impl_in_rule__ChoicePoint__Group__122230 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicePoint__NameAssignment_1_in_rule__ChoicePoint__Group__1__Impl22257 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__0__Impl_in_rule__InitialTransition__Group__022291 = new BitSet(new long[]{0x0000000004000010L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__1_in_rule__InitialTransition__Group__022294 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_83_in_rule__InitialTransition__Group__0__Impl22322 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__1__Impl_in_rule__InitialTransition__Group__122353 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__2_in_rule__InitialTransition__Group__122356 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__NameAssignment_1_in_rule__InitialTransition__Group__1__Impl22383 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__2__Impl_in_rule__InitialTransition__Group__222414 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__3_in_rule__InitialTransition__Group__222417 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__InitialTransition__Group__2__Impl22445 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__3__Impl_in_rule__InitialTransition__Group__322476 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__4_in_rule__InitialTransition__Group__322479 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_84_in_rule__InitialTransition__Group__3__Impl22507 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__4__Impl_in_rule__InitialTransition__Group__422538 = new BitSet(new long[]{0x0000000000000010L,0x0000000006000000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__5_in_rule__InitialTransition__Group__422541 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_rule__InitialTransition__Group__4__Impl22569 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__5__Impl_in_rule__InitialTransition__Group__522600 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__6_in_rule__InitialTransition__Group__522603 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__ToAssignment_5_in_rule__InitialTransition__Group__5__Impl22630 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__6__Impl_in_rule__InitialTransition__Group__622660 = new BitSet(new long[]{0x0000000002000000L,0x0000000000200000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__7_in_rule__InitialTransition__Group__622663 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__InitialTransition__Group__6__Impl22691 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__7__Impl_in_rule__InitialTransition__Group__722722 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__8_in_rule__InitialTransition__Group__722725 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group_7__0_in_rule__InitialTransition__Group__7__Impl22752 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group__8__Impl_in_rule__InitialTransition__Group__822783 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__InitialTransition__Group__8__Impl22811 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group_7__0__Impl_in_rule__InitialTransition__Group_7__022860 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group_7__1_in_rule__InitialTransition__Group_7__022863 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_85_in_rule__InitialTransition__Group_7__0__Impl22891 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__Group_7__1__Impl_in_rule__InitialTransition__Group_7__122922 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__InitialTransition__ActionAssignment_7_1_in_rule__InitialTransition__Group_7__1__Impl22949 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__0__Impl_in_rule__ContinuationTransition__Group__022983 = new BitSet(new long[]{0x0000000004000010L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__1_in_rule__ContinuationTransition__Group__022986 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_83_in_rule__ContinuationTransition__Group__0__Impl23014 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__1__Impl_in_rule__ContinuationTransition__Group__123045 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__2_in_rule__ContinuationTransition__Group__123048 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__NameAssignment_1_in_rule__ContinuationTransition__Group__1__Impl23075 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__2__Impl_in_rule__ContinuationTransition__Group__223106 = new BitSet(new long[]{0x0000000000000010L,0x0000000006000000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__3_in_rule__ContinuationTransition__Group__223109 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__ContinuationTransition__Group__2__Impl23137 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__3__Impl_in_rule__ContinuationTransition__Group__323168 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__4_in_rule__ContinuationTransition__Group__323171 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__FromAssignment_3_in_rule__ContinuationTransition__Group__3__Impl23198 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__4__Impl_in_rule__ContinuationTransition__Group__423228 = new BitSet(new long[]{0x0000000000000010L,0x0000000006000000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__5_in_rule__ContinuationTransition__Group__423231 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_rule__ContinuationTransition__Group__4__Impl23259 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__5__Impl_in_rule__ContinuationTransition__Group__523290 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__6_in_rule__ContinuationTransition__Group__523293 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__ToAssignment_5_in_rule__ContinuationTransition__Group__5__Impl23320 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__6__Impl_in_rule__ContinuationTransition__Group__623350 = new BitSet(new long[]{0x0000000002000000L,0x0000000000200000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__7_in_rule__ContinuationTransition__Group__623353 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__ContinuationTransition__Group__6__Impl23381 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__7__Impl_in_rule__ContinuationTransition__Group__723412 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__8_in_rule__ContinuationTransition__Group__723415 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group_7__0_in_rule__ContinuationTransition__Group__7__Impl23442 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group__8__Impl_in_rule__ContinuationTransition__Group__823473 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__ContinuationTransition__Group__8__Impl23501 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group_7__0__Impl_in_rule__ContinuationTransition__Group_7__023550 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group_7__1_in_rule__ContinuationTransition__Group_7__023553 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_85_in_rule__ContinuationTransition__Group_7__0__Impl23581 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__Group_7__1__Impl_in_rule__ContinuationTransition__Group_7__123612 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ContinuationTransition__ActionAssignment_7_1_in_rule__ContinuationTransition__Group_7__1__Impl23639 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__0__Impl_in_rule__TriggeredTransition__Group__023673 = new BitSet(new long[]{0x0000000004000010L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__1_in_rule__TriggeredTransition__Group__023676 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_83_in_rule__TriggeredTransition__Group__0__Impl23704 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__1__Impl_in_rule__TriggeredTransition__Group__123735 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__2_in_rule__TriggeredTransition__Group__123738 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__NameAssignment_1_in_rule__TriggeredTransition__Group__1__Impl23765 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__2__Impl_in_rule__TriggeredTransition__Group__223796 = new BitSet(new long[]{0x0000000000000010L,0x0000000006000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__3_in_rule__TriggeredTransition__Group__223799 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__TriggeredTransition__Group__2__Impl23827 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__3__Impl_in_rule__TriggeredTransition__Group__323858 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__4_in_rule__TriggeredTransition__Group__323861 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__FromAssignment_3_in_rule__TriggeredTransition__Group__3__Impl23888 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__4__Impl_in_rule__TriggeredTransition__Group__423918 = new BitSet(new long[]{0x0000000000000010L,0x0000000006000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__5_in_rule__TriggeredTransition__Group__423921 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_rule__TriggeredTransition__Group__4__Impl23949 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__5__Impl_in_rule__TriggeredTransition__Group__523980 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__6_in_rule__TriggeredTransition__Group__523983 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__ToAssignment_5_in_rule__TriggeredTransition__Group__5__Impl24010 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__6__Impl_in_rule__TriggeredTransition__Group__624040 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__7_in_rule__TriggeredTransition__Group__624043 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__TriggeredTransition__Group__6__Impl24071 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__7__Impl_in_rule__TriggeredTransition__Group__724102 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__8_in_rule__TriggeredTransition__Group__724105 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_86_in_rule__TriggeredTransition__Group__7__Impl24133 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__8__Impl_in_rule__TriggeredTransition__Group__824164 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__9_in_rule__TriggeredTransition__Group__824167 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__TriggeredTransition__Group__8__Impl24195 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__9__Impl_in_rule__TriggeredTransition__Group__924226 = new BitSet(new long[]{0x0000000002000000L,0x0000000000800000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__10_in_rule__TriggeredTransition__Group__924229 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__TriggersAssignment_9_in_rule__TriggeredTransition__Group__9__Impl24256 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__10__Impl_in_rule__TriggeredTransition__Group__1024286 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__11_in_rule__TriggeredTransition__Group__1024289 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_10__0_in_rule__TriggeredTransition__Group__10__Impl24316 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__11__Impl_in_rule__TriggeredTransition__Group__1124347 = new BitSet(new long[]{0x0000000002000000L,0x0000000000200000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__12_in_rule__TriggeredTransition__Group__1124350 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__TriggeredTransition__Group__11__Impl24378 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__12__Impl_in_rule__TriggeredTransition__Group__1224409 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__13_in_rule__TriggeredTransition__Group__1224412 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_12__0_in_rule__TriggeredTransition__Group__12__Impl24439 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group__13__Impl_in_rule__TriggeredTransition__Group__1324470 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__TriggeredTransition__Group__13__Impl24498 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_10__0__Impl_in_rule__TriggeredTransition__Group_10__024557 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_10__1_in_rule__TriggeredTransition__Group_10__024560 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_87_in_rule__TriggeredTransition__Group_10__0__Impl24588 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_10__1__Impl_in_rule__TriggeredTransition__Group_10__124619 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__TriggersAssignment_10_1_in_rule__TriggeredTransition__Group_10__1__Impl24646 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_12__0__Impl_in_rule__TriggeredTransition__Group_12__024680 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_12__1_in_rule__TriggeredTransition__Group_12__024683 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_85_in_rule__TriggeredTransition__Group_12__0__Impl24711 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__Group_12__1__Impl_in_rule__TriggeredTransition__Group_12__124742 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TriggeredTransition__ActionAssignment_12_1_in_rule__TriggeredTransition__Group_12__1__Impl24769 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__0__Impl_in_rule__CPBranchTransition__Group__024803 = new BitSet(new long[]{0x0000000004000010L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__1_in_rule__CPBranchTransition__Group__024806 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_83_in_rule__CPBranchTransition__Group__0__Impl24834 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__1__Impl_in_rule__CPBranchTransition__Group__124865 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__2_in_rule__CPBranchTransition__Group__124868 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__NameAssignment_1_in_rule__CPBranchTransition__Group__1__Impl24895 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__2__Impl_in_rule__CPBranchTransition__Group__224926 = new BitSet(new long[]{0x0000000000000010L,0x0000000006000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__3_in_rule__CPBranchTransition__Group__224929 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__CPBranchTransition__Group__2__Impl24957 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__3__Impl_in_rule__CPBranchTransition__Group__324988 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__4_in_rule__CPBranchTransition__Group__324991 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__FromAssignment_3_in_rule__CPBranchTransition__Group__3__Impl25018 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__4__Impl_in_rule__CPBranchTransition__Group__425048 = new BitSet(new long[]{0x0000000000000010L,0x0000000006000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__5_in_rule__CPBranchTransition__Group__425051 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_rule__CPBranchTransition__Group__4__Impl25079 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__5__Impl_in_rule__CPBranchTransition__Group__525110 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__6_in_rule__CPBranchTransition__Group__525113 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__ToAssignment_5_in_rule__CPBranchTransition__Group__5__Impl25140 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__6__Impl_in_rule__CPBranchTransition__Group__625170 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__7_in_rule__CPBranchTransition__Group__625173 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_rule__CPBranchTransition__Group__6__Impl25201 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__7__Impl_in_rule__CPBranchTransition__Group__725232 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__8_in_rule__CPBranchTransition__Group__725235 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_88_in_rule__CPBranchTransition__Group__7__Impl25263 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__8__Impl_in_rule__CPBranchTransition__Group__825294 = new BitSet(new long[]{0x0000000002000000L,0x0000000000200000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__9_in_rule__CPBranchTransition__Group__825297 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__ConditionAssignment_8_in_rule__CPBranchTransition__Group__8__Impl25324 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__9__Impl_in_rule__CPBranchTransition__Group__925354 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__10_in_rule__CPBranchTransition__Group__925357 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group_9__0_in_rule__CPBranchTransition__Group__9__Impl25384 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group__10__Impl_in_rule__CPBranchTransition__Group__1025415 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_rule__CPBranchTransition__Group__10__Impl25443 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group_9__0__Impl_in_rule__CPBranchTransition__Group_9__025496 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group_9__1_in_rule__CPBranchTransition__Group_9__025499 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_85_in_rule__CPBranchTransition__Group_9__0__Impl25527 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__Group_9__1__Impl_in_rule__CPBranchTransition__Group_9__125558 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CPBranchTransition__ActionAssignment_9_1_in_rule__CPBranchTransition__Group_9__1__Impl25585 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TrPointTerminal__Group__0__Impl_in_rule__TrPointTerminal__Group__025619 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__TrPointTerminal__Group__1_in_rule__TrPointTerminal__Group__025622 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_89_in_rule__TrPointTerminal__Group__0__Impl25650 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TrPointTerminal__Group__1__Impl_in_rule__TrPointTerminal__Group__125681 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TrPointTerminal__TrPointAssignment_1_in_rule__TrPointTerminal__Group__1__Impl25708 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__Group__0__Impl_in_rule__SubStateTrPointTerminal__Group__025742 = new BitSet(new long[]{0x1000000000000000L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__Group__1_in_rule__SubStateTrPointTerminal__Group__025745 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__TrPointAssignment_0_in_rule__SubStateTrPointTerminal__Group__0__Impl25772 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__Group__1__Impl_in_rule__SubStateTrPointTerminal__Group__125802 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__Group__2_in_rule__SubStateTrPointTerminal__Group__125805 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_60_in_rule__SubStateTrPointTerminal__Group__1__Impl25833 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__Group__2__Impl_in_rule__SubStateTrPointTerminal__Group__225864 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__SubStateTrPointTerminal__StateAssignment_2_in_rule__SubStateTrPointTerminal__Group__2__Impl25891 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicepointTerminal__Group__0__Impl_in_rule__ChoicepointTerminal__Group__025927 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__ChoicepointTerminal__Group__1_in_rule__ChoicepointTerminal__Group__025930 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_90_in_rule__ChoicepointTerminal__Group__0__Impl25958 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicepointTerminal__Group__1__Impl_in_rule__ChoicepointTerminal__Group__125989 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ChoicepointTerminal__CpAssignment_1_in_rule__ChoicepointTerminal__Group__1__Impl26016 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__0__Impl_in_rule__Trigger__Group__026050 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__1_in_rule__Trigger__Group__026053 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_91_in_rule__Trigger__Group__0__Impl26081 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__1__Impl_in_rule__Trigger__Group__126112 = new BitSet(new long[]{0x0000000000000000L,0x0000000070000000L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__2_in_rule__Trigger__Group__126115 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__MsgFromIfPairsAssignment_1_in_rule__Trigger__Group__1__Impl26142 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__2__Impl_in_rule__Trigger__Group__226172 = new BitSet(new long[]{0x0000000000000000L,0x0000000050000000L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__3_in_rule__Trigger__Group__226175 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group_2__0_in_rule__Trigger__Group__2__Impl26202 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__3__Impl_in_rule__Trigger__Group__326233 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__4_in_rule__Trigger__Group__326236 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__GuardAssignment_3_in_rule__Trigger__Group__3__Impl26263 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group__4__Impl_in_rule__Trigger__Group__426294 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_92_in_rule__Trigger__Group__4__Impl26322 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group_2__0__Impl_in_rule__Trigger__Group_2__026363 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Trigger__Group_2__1_in_rule__Trigger__Group_2__026366 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_93_in_rule__Trigger__Group_2__0__Impl26394 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__Group_2__1__Impl_in_rule__Trigger__Group_2__126425 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Trigger__MsgFromIfPairsAssignment_2_1_in_rule__Trigger__Group_2__1__Impl26452 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__Group__0__Impl_in_rule__MessageFromIf__Group__026486 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__Group__1_in_rule__MessageFromIf__Group__026489 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__MessageAssignment_0_in_rule__MessageFromIf__Group__0__Impl26516 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__Group__1__Impl_in_rule__MessageFromIf__Group__126546 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__Group__2_in_rule__MessageFromIf__Group__126549 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_rule__MessageFromIf__Group__1__Impl26577 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__Group__2__Impl_in_rule__MessageFromIf__Group__226608 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__MessageFromIf__FromAssignment_2_in_rule__MessageFromIf__Group__2__Impl26635 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Guard__Group__0__Impl_in_rule__Guard__Group__026671 = new BitSet(new long[]{0x0000000001000000L});
+ public static final BitSet FOLLOW_rule__Guard__Group__1_in_rule__Guard__Group__026674 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_94_in_rule__Guard__Group__0__Impl26702 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Guard__Group__1__Impl_in_rule__Guard__Group__126733 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Guard__GuardAssignment_1_in_rule__Guard__Group__1__Impl26760 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Import__Group__0__Impl_in_rule__Import__Group__026794 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__Import__Group__1_in_rule__Import__Group__026797 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_95_in_rule__Import__Group__0__Impl26825 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Import__Group__1__Impl_in_rule__Import__Group__126856 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Import__ImportedNamespaceAssignment_1_in_rule__Import__Group__1__Impl26883 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group__0__Impl_in_rule__ImportedFQN__Group__026917 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group__1_in_rule__ImportedFQN__Group__026920 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__ImportedFQN__Group__0__Impl26947 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group__1__Impl_in_rule__ImportedFQN__Group__126976 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group_1__0_in_rule__ImportedFQN__Group__1__Impl27003 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group_1__0__Impl_in_rule__ImportedFQN__Group_1__027038 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group_1__1_in_rule__ImportedFQN__Group_1__027041 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_65_in_rule__ImportedFQN__Group_1__0__Impl27069 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ImportedFQN__Group_1__1__Impl_in_rule__ImportedFQN__Group_1__127100 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_96_in_rule__ImportedFQN__Group_1__1__Impl27128 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FQN__Group__0__Impl_in_rule__FQN__Group__027163 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FQN__Group__1_in_rule__FQN__Group__027166 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__FQN__Group__0__Impl27193 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FQN__Group__1__Impl_in_rule__FQN__Group__127222 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FQN__Group_1__0_in_rule__FQN__Group__1__Impl27249 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FQN__Group_1__0__Impl_in_rule__FQN__Group_1__027284 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__FQN__Group_1__1_in_rule__FQN__Group_1__027287 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_65_in_rule__FQN__Group_1__0__Impl27315 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FQN__Group_1__1__Impl_in_rule__FQN__Group_1__127346 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__FQN__Group_1__1__Impl27373 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__RoomModel__NameAssignment_127411 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImport_in_rule__RoomModel__ImportsAssignment_327442 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDataClass_in_rule__RoomModel__DataClassesAssignment_4_027473 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleProtocolClass_in_rule__RoomModel__ProtocolClassesAssignment_4_127504 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorClass_in_rule__RoomModel__ActorClassesAssignment_4_227535 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemClass_in_rule__RoomModel__SubSystemClassesAssignment_4_327566 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalSystem_in_rule__RoomModel__SystemsAssignment_4_427597 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__TypedID__NameAssignment_027628 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleType_in_rule__TypedID__TypeAssignment_227659 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__FreeTypedID__NameAssignment_027690 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeType_in_rule__FreeTypedID__TypeAssignment_227721 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimitiveType_in_rule__Type__PrimAssignment_027752 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__Type__TypeAssignment_127787 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimitiveType_in_rule__FreeType__PrimAssignment_027822 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__FreeType__TypeAssignment_127853 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__DataClass__NameAssignment_127884 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__DataClass__BaseAssignment_2_127919 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImport_in_rule__DataClass__ImportsAssignment_427954 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAttribute_in_rule__DataClass__AttributesAssignment_527985 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleOperation_in_rule__DataClass__OperationsAssignment_628016 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_128047 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_INT_in_rule__Attribute__SizeAssignment_2_128078 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleType_in_rule__Attribute__TypeAssignment_428109 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__Operation__NameAssignment_128140 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeTypedID_in_rule__Operation__ArgumentsAssignment_3_028171 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeTypedID_in_rule__Operation__ArgumentsAssignment_3_1_128202 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeType_in_rule__Operation__ReturntypeAssignment_5_128233 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__Operation__DetailCodeAssignment_628264 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ProtocolClass__NameAssignment_128295 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__ProtocolClass__BaseAssignment_2_128330 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__ProtocolClass__UserCode1Assignment_4_128365 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__ProtocolClass__UserCode2Assignment_5_128396 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessage_in_rule__ProtocolClass__IncomingMessagesAssignment_828427 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessage_in_rule__ProtocolClass__OutgoingMessagesAssignment_1228458 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePortClass_in_rule__ProtocolClass__RegularAssignment_14_228489 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePortClass_in_rule__ProtocolClass__ConjugateAssignment_15_228520 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleProtocolSemantics_in_rule__ProtocolClass__SemanticsAssignment_1628551 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__Message__NameAssignment_128582 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTypedID_in_rule__Message__ArgumentsAssignment_3_028613 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTypedID_in_rule__Message__ArgumentsAssignment_3_1_128644 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__PortClass__UserCodeAssignment_1_128675 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAttribute_in_rule__PortClass__AttributesAssignment_2_028706 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleOperation_in_rule__PortClass__OperationsAssignment_2_128737 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessageHandler_in_rule__PortClass__MsgHandlersAssignment_2_228768 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__MessageHandler__MsgAssignment_128803 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__MessageHandler__DetailCodeAssignment_228838 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_rule__ProtocolSemantics__RulesAssignment_228869 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SemanticsInRule__MsgAssignment_128904 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_rule__SemanticsInRule__FollowUpsAssignment_428939 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SemanticsOutRule__MsgAssignment_128974 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_rule__SemanticsOutRule__FollowUpsAssignment_429009 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_97_in_rule__ActorClass__AbstractAssignment_029045 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ActorClass__NameAssignment_229084 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__ActorClass__BaseAssignment_3_129119 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePort_in_rule__ActorClass__IfPortsAssignment_5_229154 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSPPRef_in_rule__ActorClass__IfSPPsAssignment_5_329185 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__ActorClass__UserCode1Assignment_6_2_129216 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__ActorClass__UserCode2Assignment_6_3_129247 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePort_in_rule__ActorClass__IntPortsAssignment_6_4_029278 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExternalPort_in_rule__ActorClass__ExtPortsAssignment_6_4_129309 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleServiceImplementation_in_rule__ActorClass__ServiceImplementationsAssignment_6_529340 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSAPRef_in_rule__ActorClass__StrSAPsAssignment_6_629371 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAttribute_in_rule__ActorClass__AttributesAssignment_6_729402 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorRef_in_rule__ActorClass__ActorRefsAssignment_6_829433 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBinding_in_rule__ActorClass__BindingsAssignment_6_929464 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_rule__ActorClass__ConnectionsAssignment_6_1029495 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleOperation_in_rule__ActorClass__OperationsAssignment_7_229526 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateMachine_in_rule__ActorClass__StateMachineAssignment_7_329557 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_98_in_rule__Port__ConjugatedAssignment_029593 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__Port__NameAssignment_229632 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_INT_in_rule__Port__MultiplicityAssignment_3_129663 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__Port__ProtocolAssignment_529698 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ExternalPort__IfportAssignment_229737 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SAPRef__NameAssignment_129772 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__SAPRef__ProtocolAssignment_329807 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SPPRef__NameAssignment_129842 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__SPPRef__ProtocolAssignment_329877 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ServiceImplementation__SppAssignment_229916 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__LogicalSystem__NameAssignment_129951 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemRef_in_rule__LogicalSystem__SubSystemsAssignment_329982 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBinding_in_rule__LogicalSystem__BindingsAssignment_430013 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_rule__LogicalSystem__ConnectionsAssignment_530044 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SubSystemRef__NameAssignment_130075 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__SubSystemRef__TypeAssignment_330110 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SubSystemClass__NameAssignment_130145 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePort_in_rule__SubSystemClass__RelayPortsAssignment_330176 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSPPRef_in_rule__SubSystemClass__IfSPPsAssignment_430207 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorRef_in_rule__SubSystemClass__ActorRefsAssignment_530238 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBinding_in_rule__SubSystemClass__BindingsAssignment_630269 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_rule__SubSystemClass__ConnectionsAssignment_730300 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalThread_in_rule__SubSystemClass__ThreadsAssignment_830331 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__LogicalThread__NameAssignment_130362 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorInstancePath_in_rule__LogicalThread__InstancesAssignment_330393 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorInstancePath_in_rule__LogicalThread__InstancesAssignment_4_130424 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ActorInstancePath__SegmentsAssignment_030455 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ActorInstancePath__SegmentsAssignment_1_130486 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBindingEndPoint_in_rule__Binding__Endpoint1Assignment_130517 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBindingEndPoint_in_rule__Binding__Endpoint2Assignment_330548 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__BindingEndPoint__ActorRefAssignment_0_030583 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__BindingEndPoint__PortAssignment_130622 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSAPoint_in_rule__LayerConnection__FromAssignment_130657 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSPPoint_in_rule__LayerConnection__ToAssignment_330688 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__RefSAPoint__RefAssignment_130723 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__RelaySAPoint__RelayAssignment_130762 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SPPoint__RefAssignment_030801 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SPPoint__ServiceAssignment_230840 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ActorRef__NameAssignment_130875 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__ActorRef__TypeAssignment_330910 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleState_in_rule__StateGraph__StatesAssignment_1_030945 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_rule__StateGraph__TrPointsAssignment_1_130976 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_rule__StateGraph__ChPointsAssignment_1_231007 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransition_in_rule__StateGraph__TransitionsAssignment_1_331038 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleState_in_rule__StateMachine__StatesAssignment_2_031069 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_rule__StateMachine__TrPointsAssignment_2_131100 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_rule__StateMachine__ChPointsAssignment_2_231131 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransition_in_rule__StateMachine__TransitionsAssignment_2_331162 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__BaseState__NameAssignment_131193 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__BaseState__EntryCodeAssignment_3_131224 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__BaseState__ExitCodeAssignment_4_131255 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateGraph_in_rule__BaseState__SubgraphAssignment_5_131286 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_rule__RefinedState__BaseAssignment_131321 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__RefinedState__EntryCodeAssignment_3_131356 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__RefinedState__ExitCodeAssignment_4_131387 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateGraph_in_rule__RefinedState__SubgraphAssignment_5_131418 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_STRING_in_rule__DetailCode__CommandsAssignment_131449 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_99_in_rule__TransitionPoint__HandlerAssignment_031485 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__TransitionPoint__NameAssignment_231524 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__EntryPoint__NameAssignment_131555 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ExitPoint__NameAssignment_131586 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ChoicePoint__NameAssignment_131617 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__InitialTransition__NameAssignment_131648 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_rule__InitialTransition__ToAssignment_531679 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__InitialTransition__ActionAssignment_7_131710 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ContinuationTransition__NameAssignment_131741 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_rule__ContinuationTransition__FromAssignment_331772 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_rule__ContinuationTransition__ToAssignment_531803 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__ContinuationTransition__ActionAssignment_7_131834 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__TriggeredTransition__NameAssignment_131865 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_rule__TriggeredTransition__FromAssignment_331896 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_rule__TriggeredTransition__ToAssignment_531927 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrigger_in_rule__TriggeredTransition__TriggersAssignment_931958 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrigger_in_rule__TriggeredTransition__TriggersAssignment_10_131989 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__TriggeredTransition__ActionAssignment_12_132020 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__CPBranchTransition__NameAssignment_132051 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_rule__CPBranchTransition__FromAssignment_332082 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_rule__CPBranchTransition__ToAssignment_532113 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__CPBranchTransition__ConditionAssignment_832144 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__CPBranchTransition__ActionAssignment_9_132175 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__StateTerminal__StateAssignment32210 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__TrPointTerminal__TrPointAssignment_132249 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SubStateTrPointTerminal__TrPointAssignment_032288 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__SubStateTrPointTerminal__StateAssignment_232327 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__ChoicepointTerminal__CpAssignment_132366 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessageFromIf_in_rule__Trigger__MsgFromIfPairsAssignment_132401 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessageFromIf_in_rule__Trigger__MsgFromIfPairsAssignment_2_132432 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleGuard_in_rule__Trigger__GuardAssignment_332463 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__MessageFromIf__MessageAssignment_032498 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__MessageFromIf__FromAssignment_232537 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rule__Guard__GuardAssignment_132572 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImportedFQN_in_rule__Import__ImportedNamespaceAssignment_132603 = new BitSet(new long[]{0x0000000000000002L});
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom__.g b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom__.g
new file mode 100644
index 000000000..78dbd196e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom__.g
@@ -0,0 +1,121 @@
+lexer grammar InternalRoom;
+@header {
+package org.eclipse.etrice.core.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+T11 : 'void' ;
+T12 : 'int8' ;
+T13 : 'int16' ;
+T14 : 'int32' ;
+T15 : 'uint8' ;
+T16 : 'uint16' ;
+T17 : 'uint32' ;
+T18 : 'float32' ;
+T19 : 'float64' ;
+T20 : 'boolean' ;
+T21 : 'string' ;
+T22 : 'char' ;
+T23 : 'RoomModel' ;
+T24 : '{' ;
+T25 : '}' ;
+T26 : ':' ;
+T27 : 'DataClass' ;
+T28 : 'extends' ;
+T29 : 'Attribute' ;
+T30 : '[' ;
+T31 : ']' ;
+T32 : 'Operation' ;
+T33 : '(' ;
+T34 : ')' ;
+T35 : ',' ;
+T36 : 'ProtocolClass' ;
+T37 : 'incoming' ;
+T38 : 'outgoing' ;
+T39 : 'usercode1' ;
+T40 : 'usercode2' ;
+T41 : 'regular' ;
+T42 : 'PortClass' ;
+T43 : 'conjugate' ;
+T44 : 'Message' ;
+T45 : 'usercode' ;
+T46 : 'handle' ;
+T47 : 'semantics' ;
+T48 : 'in' ;
+T49 : '->' ;
+T50 : 'out' ;
+T51 : 'ActorClass' ;
+T52 : 'Interface' ;
+T53 : 'Structure' ;
+T54 : 'Behavior' ;
+T55 : 'Port' ;
+T56 : 'external' ;
+T57 : 'SAP' ;
+T58 : 'SPP' ;
+T59 : 'ServiceImplementation' ;
+T60 : 'of' ;
+T61 : 'LogicalSystem' ;
+T62 : 'SubSystemRef' ;
+T63 : 'SubSystemClass' ;
+T64 : 'LogicalThread' ;
+T65 : '.' ;
+T66 : 'Binding' ;
+T67 : 'and' ;
+T68 : 'LayerConnection' ;
+T69 : 'satisfied_by' ;
+T70 : 'ref' ;
+T71 : 'relay_sap' ;
+T72 : 'ActorRef' ;
+T73 : 'StateMachine' ;
+T74 : 'State' ;
+T75 : 'entry' ;
+T76 : 'exit' ;
+T77 : 'subgraph' ;
+T78 : 'RefinedState' ;
+T79 : 'TransitionPoint' ;
+T80 : 'EntryPoint' ;
+T81 : 'ExitPoint' ;
+T82 : 'ChoicePoint' ;
+T83 : 'Transition' ;
+T84 : 'initial' ;
+T85 : 'action' ;
+T86 : 'triggers' ;
+T87 : 'or' ;
+T88 : 'cond' ;
+T89 : 'my' ;
+T90 : 'cp' ;
+T91 : '<' ;
+T92 : '>' ;
+T93 : '|' ;
+T94 : 'guard' ;
+T95 : 'import' ;
+T96 : '*' ;
+T97 : 'abstract' ;
+T98 : 'conjugated' ;
+T99 : 'handler' ;
+
+// $ANTLR src "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g" 16185
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+// $ANTLR src "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g" 16187
+RULE_INT : ('0'..'9')+;
+
+// $ANTLR src "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g" 16189
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+// $ANTLR src "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g" 16191
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+// $ANTLR src "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g" 16193
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+// $ANTLR src "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g" 16195
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+// $ANTLR src "../org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoom.g" 16197
+RULE_ANY_OTHER : .;
+
+
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/internal/RoomActivator.java b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/internal/RoomActivator.java
new file mode 100644
index 000000000..f9dcccc9d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/internal/RoomActivator.java
@@ -0,0 +1,73 @@
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.etrice.core.ui.internal;
+
+import org.apache.log4j.Logger;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * Generated
+ */
+public class RoomActivator extends AbstractUIPlugin {
+
+ private Map<String,Injector> injectors = new HashMap<String,Injector>();
+ private static RoomActivator INSTANCE;
+
+ public Injector getInjector(String languageName) {
+ return injectors.get(languageName);
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ INSTANCE = this;
+ try {
+
+ injectors.put("org.eclipse.etrice.core.Room", Guice.createInjector(
+ Modules.override(Modules.override(getRuntimeModule("org.eclipse.etrice.core.Room")).with(getUiModule("org.eclipse.etrice.core.Room"))).with(getSharedStateModule())
+ ));
+
+ } catch (Exception e) {
+ Logger.getLogger(getClass()).error(e.getMessage(), e);
+ throw e;
+ }
+ }
+
+ public static RoomActivator getInstance() {
+ return INSTANCE;
+ }
+
+ protected Module getRuntimeModule(String grammar) {
+
+ if ("org.eclipse.etrice.core.Room".equals(grammar)) {
+ return new org.eclipse.etrice.core.RoomRuntimeModule();
+ }
+
+ throw new IllegalArgumentException(grammar);
+ }
+ protected Module getUiModule(String grammar) {
+
+ if ("org.eclipse.etrice.core.Room".equals(grammar)) {
+ return new org.eclipse.etrice.core.ui.RoomUiModule(this);
+ }
+
+ throw new IllegalArgumentException(grammar);
+ }
+
+ protected Module getSharedStateModule() {
+ return new org.eclipse.xtext.ui.shared.SharedStateModule();
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomModelValidator.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomModelValidator.java
new file mode 100644
index 000000000..f970cc601
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomModelValidator.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui;
+
+import java.util.LinkedList;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.validation.RoomJavaValidator;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.validation.CheckMode;
+
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.generator.builder.ILogger;
+import org.eclipse.etrice.generator.builder.InstanceModelBuilder;
+import org.eclipse.etrice.generator.etricegen.IDiagnostician;
+
+public class RoomModelValidator extends RoomJavaValidator implements ILogger {
+
+ private class Diag implements IDiagnostician {
+ private boolean failed = false;
+
+ @Override
+ public void warning(String msg, EObject source) {
+ warning(msg, source, -1);
+ }
+
+ @Override
+ public void warning(String msg, EObject source, int feature) {
+ issueWarning(msg, source, feature);
+ }
+
+ @Override
+ public void error(String msg, EObject source) {
+ error(msg, source, -1);
+ }
+
+ @Override
+ public void error(String msg, EObject source, int feature) {
+ failed = true;
+ issueError(msg, source, feature);
+ }
+
+ @Override
+ public boolean isFailed() {
+ return failed;
+ }
+ }
+
+ @Check
+ public void checkModel(RoomModel model) {
+ if (getCheckMode()==CheckMode.ALL) {
+ System.out.println("checking model "+model.getName());
+
+ Diag diagnostician = new Diag();
+ InstanceModelBuilder builder = new InstanceModelBuilder(this, diagnostician);
+
+ LinkedList<RoomModel> models = new LinkedList<RoomModel>();
+ models.add(model);
+ builder.createInstanceModel(models);
+
+ System.out.println("done checking model "+model.getName()+" with result: "+(diagnostician.isFailed()?"failed":"ok"));
+ }
+ }
+
+ public void issueError(String msg, EObject source, int feature) {
+ error(msg, source, feature);
+ }
+
+ public void issueWarning(String msg, EObject source, int feature) {
+ warning(msg, source, feature);
+ }
+
+ @Override
+ public void logInfo(String text) {
+ }
+
+ @Override
+ public void logError(String text, EObject obj) {
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomUiModule.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomUiModule.java
new file mode 100644
index 000000000..68da579fc
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/RoomUiModule.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class RoomUiModule extends org.eclipse.etrice.core.ui.AbstractRoomUiModule {
+ public RoomUiModule(AbstractUIPlugin plugin) {
+ super(plugin);
+ }
+
+ // contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
+ @org.eclipse.xtext.service.SingletonBinding(eager=true) public Class<? extends org.eclipse.etrice.core.validation.RoomJavaValidator> bindRoomJavaValidator() {
+ return org.eclipse.etrice.core.ui.RoomModelValidator.class;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/IProposalFilter.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/IProposalFilter.java
new file mode 100644
index 000000000..e5ce8c695
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/IProposalFilter.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.contentassist;
+
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+public interface IProposalFilter {
+
+ boolean accept(ContentAssistContext context, IEObjectDescription candidate);
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/RoomProposalProvider.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/RoomProposalProvider.java
new file mode 100644
index 000000000..1982c4b69
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/contentassist/RoomProposalProvider.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.ui.contentassist.AbstractRoomProposalProvider;
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+import com.google.common.base.Function;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.RoomPackage;
+/**
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant
+ */
+public class RoomProposalProvider extends AbstractRoomProposalProvider {
+
+ protected class FilteredProposalCreator implements Function<IEObjectDescription, ICompletionProposal> {
+ private IProposalFilter filter;
+ private final ContentAssistContext contentAssistContext;
+ private final String ruleName;
+
+ protected FilteredProposalCreator(IProposalFilter filter, ContentAssistContext contentAssistContext, String ruleName) {
+ this.filter = filter;
+ this.contentAssistContext = contentAssistContext;
+ this.ruleName = ruleName;
+ }
+
+ public ICompletionProposal apply(IEObjectDescription candidate) {
+ if (candidate == null)
+ return null;
+ ICompletionProposal result = null;
+ String proposal = candidate.getName();
+ if (ruleName != null)
+ proposal = getValueConverter().toString(proposal, ruleName);
+ EObject objectOrProxy = candidate.getEObjectOrProxy();
+
+ // three new lines in code taken from org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.DefaultProposalCreator
+ if (!objectOrProxy.eIsProxy() && filter!=null)
+ if (!filter.accept(contentAssistContext, candidate))
+ return null;
+
+ StyledString displayString = getStyledDisplayString(objectOrProxy, candidate.getQualifiedName(), candidate.getName());
+ Image image = getImage(objectOrProxy);
+ result = createCompletionProposal(proposal, displayString, image, contentAssistContext);
+ getPriorityHelper().adjustCrossReferencePriority(result, contentAssistContext.getPrefix());
+ return result;
+ }
+
+ }
+
+ protected class ActorRefFilter implements IProposalFilter {
+
+ @Override
+ public boolean accept(ContentAssistContext context, IEObjectDescription candidate) {
+ if (!(context.getCurrentModel() instanceof ActorRef))
+ // unexpected call??
+ return false;
+
+ ActorRef ar = (ActorRef) context.getCurrentModel();
+ if (!(ar.eContainer() instanceof ActorClass))
+ // can not filter due to lack of information
+ return true;
+
+ ActorClass ac = (ActorClass) ar.eContainer();
+
+ EObject objectOrProxy = candidate.getEObjectOrProxy();
+
+ if (objectOrProxy instanceof ActorClass) {
+ ActorClass referenced = (ActorClass) objectOrProxy;
+ return !ValidationUtil.isReferencing(referenced, ac);
+ }
+
+ return false;
+ }
+
+ }
+
+ protected Function<IEObjectDescription, ICompletionProposal> getProposalFactory(String ruleName, ContentAssistContext contentAssistContext) {
+ if (contentAssistContext!=null && contentAssistContext.getCurrentModel().eClass()==RoomPackage.eINSTANCE.getActorRef())
+ return new FilteredProposalCreator(new ActorRefFilter(), contentAssistContext, ruleName);
+
+ // delegate to default
+ return super.getProposalFactory(ruleName, contentAssistContext);
+ }
+
+// public void completeActorRef_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+// super.completeActorRef_Type(
+// model,
+// assignment,
+// context,
+// acceptor);
+// }
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomDescriptionLabelProvider.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomDescriptionLabelProvider.java
new file mode 100644
index 000000000..50479b063
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomDescriptionLabelProvider.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ *
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class RoomDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+
+/*
+ //Labels and icons can be computed like this:
+
+ String text(IEObjectDescription ele) {
+ return "my "+ele.getName();
+ }
+
+ String image(IEObjectDescription ele) {
+ return ele.getEClass().getName() + ".gif";
+ }
+*/
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomLabelProvider.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomLabelProvider.java
new file mode 100644
index 000000000..f36cc0add
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/labeling/RoomLabelProvider.java
@@ -0,0 +1,303 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.labeling;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider;
+
+import com.google.inject.Inject;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.Import;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+
+/**
+ * Provides labels for a EObjects.
+ *
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class RoomLabelProvider extends DefaultEObjectLabelProvider {
+
+ @Inject
+ public RoomLabelProvider(AdapterFactoryLabelProvider delegate) {
+ super(delegate);
+ }
+
+ // custom images for ROOM classes
+
+ String image(RoomModel rm) {
+ return "RoomModel.gif";
+ }
+
+ String image(Import im) {
+ return "RoomModelImport.gif";
+ }
+
+ String image(DataClass dc) {
+ return "DataClass.gif";
+ }
+
+ String image(ProtocolClass pc) {
+ return "ProtocolClass.gif";
+ }
+
+ String image(ActorClass ac) {
+ return "ActorClass.gif";
+ }
+
+ String image(SubSystemClass cc) {
+ return "SubSystemClass.gif";
+ }
+
+ String image(LogicalSystem sys) {
+ return "LogicalSystem.gif";
+ }
+
+ String image(SAPRef sap) {
+ return "SAP.gif";
+ }
+
+ String image(SPPRef spp) {
+ return "SPP.gif";
+ }
+
+ String image(ActorRef ar) {
+ return "ActorRef.gif";
+ }
+
+ String image(SubSystemRef ar) {
+ return "SubSystemRef.gif";
+ }
+
+ String image(BaseState state) {
+ return "State.gif";
+ }
+
+ String image(RefinedState state) {
+ return "RefinedState.gif";
+ }
+
+ String image(ServiceImplementation svc) {
+ return "ServiceImpl.gif";
+ }
+
+ String image(Message state) {
+ return "Message.gif";
+ }
+
+ String image(Operation op) {
+ return "Operation.gif";
+ }
+
+ String image(Port p) {
+ ActorClass ac = (ActorClass) p.eContainer();
+ boolean relay = true;
+ if (ac.getIntPorts().contains(p)) {
+ relay = false;
+ }
+ else {
+ for (ExternalPort ep : ac.getExtPorts()) {
+ if (ep.getIfport()==p) {
+ relay = false;
+ break;
+ }
+ }
+ }
+ if (relay)
+ if (p.isConjugated())
+ if (p.getMultiplicity()>1)
+ return "ConjReplRelayPort.gif";
+ else
+ return "ConjRelayPort.gif";
+ else
+ if (p.getMultiplicity()>1)
+ return "ReplRelayPort.gif";
+ else
+ return "RelayPort.gif";
+ else
+ if (p.isConjugated())
+ if (p.getMultiplicity()>1)
+ return "ConjReplPort.gif";
+ else
+ return "ConjPort.gif";
+ else
+ if (p.getMultiplicity()>1)
+ return "ReplPort.gif";
+ else
+ return "Port.gif";
+ }
+
+ // custom labels
+
+ String text(Import im) {
+ return "import "+im.getImportedNamespace();
+ }
+
+ String text(DataClass dc) {
+ String base = dc.getBase()!=null? " extends "+dc.getBase().getName():"";
+ return dc.getName()+base;
+ }
+
+ String text(ProtocolClass pc) {
+ String base = pc.getBase()!=null? " extends "+pc.getBase().getName():"";
+ return pc.getName()+base;
+ }
+
+ String text(ActorClass ac) {
+ String base = ac.getBase()!=null? " extends "+ac.getBase().getName():"";
+ return ac.getName()+base;
+ }
+
+ String text(Port p) {
+ String location = null;
+ ActorClass ac = (ActorClass) p.eContainer();
+ if (ac.getIntPorts().contains(p))
+ location = "internal";
+ else {
+ for (ExternalPort ep : ac.getExtPorts()) {
+ if (ep.getIfport()==p) {
+ location = "external";
+ break;
+ }
+ }
+ }
+ if (location==null)
+ location = "relay";
+ String conjugated = p.isConjugated()?"conjugated ":"";
+ String multiplicity = p.getMultiplicity()>1? ("["+p.getMultiplicity()+"]"):"";
+ String protocol = p.getProtocol()!=null? (" : "+p.getProtocol().getName()):"";
+ return conjugated+" "+location+" Port "+p.getName()+multiplicity+protocol;
+ }
+
+ String text(ExternalPort ep) {
+ return text(ep.getIfport());
+ }
+
+ String text(SAPRef sap) {
+ String protocol = sap.getProtocol()!=null? (" : "+sap.getProtocol().getName()):"";
+ return "SAP "+sap.getName()+protocol;
+ }
+
+ String text(SPPRef spp) {
+ String protocol = spp.getProtocol()!=null? (" : "+spp.getProtocol().getName()):"";
+ return "SPP "+spp.getName()+protocol;
+ }
+
+ String text(ServiceImplementation svc) {
+ if (svc.getSpp()==null)
+ return "Implementation";
+
+ String protocol = svc.getSpp().getProtocol()!=null? (" : "+svc.getSpp().getProtocol().getName()):"";
+ return "Implementation of "+svc.getSpp().getName()+protocol;
+ }
+
+ String text(ActorRef ref) {
+ String cls = ref.getType()!=null? (" : "+ref.getType().getName()):"";
+ return "ref "+ref.getName()+cls;
+ }
+
+ String text(SubSystemRef ref) {
+ String cls = ref.getType()!=null? (" : "+ref.getType().getName()):"";
+ return "ref "+ref.getName()+cls;
+ }
+
+ private String getName(Type tp) {
+ if (tp.getType()!=null)
+ return tp.getType().getName();
+ else if (tp.getPrim()!=null)
+ return tp.getPrim().getName();
+ else
+ return "?";
+ }
+
+ private String getName(FreeType tp) {
+ if (tp.getType()!=null)
+ return tp.getType();
+ else if (tp.getPrim()!=null)
+ return tp.getPrim().getName();
+ else
+ return "?";
+ }
+
+ String text(Attribute attr) {
+ String type = attr.getType()!=null? (" : "+getName(attr.getType())):"";
+ return "Attr "+attr.getName()+type;
+ }
+
+ String text(Operation op) {
+ String rt = op.getReturntype()!=null? ": "+getName(op.getReturntype()):"";
+ String signature = "";
+ for (FreeTypedID arg : op.getArguments()) {
+ if (signature.isEmpty())
+ signature = arg.getName()+": "+getName(arg.getType());
+ else
+ signature += ", "+arg.getName()+": "+getName(arg.getType());
+ }
+ signature = "("+signature+")";
+ return op.getName()+signature+rt;
+ }
+
+ String text(Message m) {
+ String signature = "";
+ for (TypedID arg : m.getArguments()) {
+ if (signature.isEmpty())
+ signature = arg.getName()+":"+getName(arg.getType());
+ else
+ signature += ","+arg.getName()+":"+getName(arg.getType());
+ }
+ signature = "("+signature+")";
+ return m.getName()+signature;
+ }
+
+ String text(BaseState s) {
+ return s.getName();
+ }
+
+ String text(RefinedState rs) {
+ if (rs.getBase()!=null)
+ return text(rs.getBase());
+
+ return "";
+ }
+/*
+ //Labels and icons can be computed like this:
+
+ String text(MyModel ele) {
+ return "my "+ele.getName();
+ }
+
+ String image(MyModel ele) {
+ return "MyModel.gif";
+ }
+*/
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStateMachineHandler.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStateMachineHandler.java
new file mode 100644
index 000000000..839bdc264
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStateMachineHandler.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.outline;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+public class EditStateMachineHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStructureHandler.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStructureHandler.java
new file mode 100644
index 000000000..1bbd35ba7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/EditStructureHandler.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.outline;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.XtextEditor;
+import org.eclipse.xtext.ui.editor.outline.ContentOutlineNode;
+import org.eclipse.xtext.ui.editor.utils.EditorUtils;
+import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.ui.structure.DiagramAccess;
+
+public class EditStructureHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = HandlerUtil.getCurrentSelection(event);
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection ss = (IStructuredSelection) selection;
+ Object sel = ss.getFirstElement();
+ if (sel instanceof ContentOutlineNode) {
+ final ContentOutlineNode node = (ContentOutlineNode) sel;
+ XtextEditor xtextEditor = EditorUtils.getActiveXtextEditor(event);
+ xtextEditor.getDocument().readOnly(new IUnitOfWork.Void<XtextResource>() {
+ @Override
+ public void process(XtextResource resource) throws Exception {
+ if (resource != null) {
+ EObject object = resource.getEObject(node.getURI().fragment());
+ if (object instanceof StructureClass)
+ DiagramAccess.openDiagramEditor((StructureClass) object);
+ }
+ }
+ });
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomOutlineNodeAdapterFactory.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomOutlineNodeAdapterFactory.java
new file mode 100644
index 000000000..807f0c17a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomOutlineNodeAdapterFactory.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.actions.DefaultContentOutlineNodeAdapterFactory;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.LogicalSystem;
+
+public class RoomOutlineNodeAdapterFactory extends DefaultContentOutlineNodeAdapterFactory {
+
+ private static final Class<?>[] types = {
+ // provide list of classes to adapt to, e.g.:
+ // Entity.class
+ // Service.class
+ ActorClass.class,
+ SubSystemClass.class,
+ LogicalSystem.class
+ };
+
+ @Override
+ public Class<?>[] getAdapterList() {
+ return types;
+ }
+
+}
+
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomTransformer.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomTransformer.java
new file mode 100644
index 000000000..bb301453d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/outline/RoomTransformer.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.outline;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.ui.editor.outline.ContentOutlineNode;
+import org.eclipse.xtext.ui.editor.outline.transformer.AbstractDeclarativeSemanticModelTransformer;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.State;
+
+/**
+ * customization of the default outline structure
+ *
+ */
+public class RoomTransformer extends AbstractDeclarativeSemanticModelTransformer {
+ // cf. org.eclipse.xtext.example.ui.outline.FowlerDslTransformer
+
+ // transform actor class
+
+ public boolean consumeNode(ActorClass ac) {
+ return true;
+ }
+
+ public ContentOutlineNode createNode(ActorClass ac, ContentOutlineNode outlineParentNode) {
+ ContentOutlineNode result = super.createNode(ac, outlineParentNode);
+ if (ac.getIfPorts().size()>0 || ac.getIfSPPs().size()>0) {
+ ContentOutlineNode iface = new ContentOutlineNode("Interface");
+ result.getChildren().add(iface);
+ for (Port port : ac.getIfPorts())
+ transformSemanticNode(port, iface);
+ for (SPPRef spp : ac.getIfSPPs())
+ transformSemanticNode(spp, iface);
+ }
+ if (ac.getIntPorts().size()>0 || ac.getServiceImplementations().size()>0 ||
+ ac.getStrSAPs().size()>0 || ac.getAttributes().size()>0 ||
+ ac.getActorRefs().size()>0) {
+ ContentOutlineNode structure = new ContentOutlineNode("Structure");
+ result.getChildren().add(structure);
+ for (Port port : ac.getIntPorts())
+ transformSemanticNode(port, structure);
+ for (ServiceImplementation svc : ac.getServiceImplementations())
+ transformSemanticNode(svc, structure);
+ for (SAPRef sap : ac.getStrSAPs())
+ transformSemanticNode(sap, structure);
+ for (Attribute attr : ac.getAttributes())
+ transformSemanticNode(attr, structure);
+ for (ActorRef ar : ac.getActorRefs())
+ transformSemanticNode(ar, structure);
+ }
+ if (ac.getOperations().size()>0 || ac.getStateMachine()!=null) {
+ ContentOutlineNode behavior = new ContentOutlineNode("Behavior");
+ result.getChildren().add(behavior);
+ for (Operation op : ac.getOperations())
+ transformSemanticNode(op, behavior);
+ if (ac.getStateMachine()!=null) {
+ ContentOutlineNode sm = new ContentOutlineNode("StateMachine");
+ behavior.getChildren().add(sm);
+ for (State s : ac.getStateMachine().getStates()) {
+ transformSemanticNode(s, sm);
+ }
+ }
+ }
+ return result;
+ }
+
+ public List<EObject> getChildren(ActorClass ac) {
+ return Collections.emptyList();
+ }
+
+ // transform state
+
+ public boolean consumeNode(State state) {
+ return true;
+ }
+
+ public ContentOutlineNode createNode(State state, ContentOutlineNode outlineParentNode) {
+ ContentOutlineNode result = super.createNode(state, outlineParentNode);
+
+ if (state.getSubgraph()!=null)
+ for (State s : state.getSubgraph().getStates()) {
+ transformSemanticNode(s, result);
+ }
+
+ return result;
+ }
+
+ public List<EObject> getChildren(State state) {
+ return Collections.emptyList();
+ }
+
+ // transform protocol
+
+ public boolean consumeNode(ProtocolClass pc) {
+ return true;
+ }
+
+ public ContentOutlineNode createNode(ProtocolClass pc, ContentOutlineNode outlineParentNode) {
+ ContentOutlineNode result = super.createNode(pc, outlineParentNode);
+
+ if (pc.getIncomingMessages().size()>0) {
+ ContentOutlineNode msgs = new ContentOutlineNode("incoming");
+ result.getChildren().add(msgs);
+ for (Message m : pc.getIncomingMessages())
+ transformSemanticNode(m, msgs);
+ }
+
+ if (pc.getOutgoingMessages().size()>0) {
+ ContentOutlineNode msgs = new ContentOutlineNode("outgoing");
+ result.getChildren().add(msgs);
+ for (Message m : pc.getOutgoingMessages())
+ transformSemanticNode(m, msgs);
+ }
+
+ return result;
+ }
+
+ public List<EObject> getChildren(ProtocolClass pc) {
+ return Collections.emptyList();
+ }
+
+ public boolean consumeNode(Message m) {
+ return true;
+ }
+
+ public List<EObject> getChildren(Message m) {
+ return Collections.emptyList();
+ }
+
+ public boolean consumeNode(Operation op) {
+ return true;
+ }
+
+ public List<EObject> getChildren(Operation op) {
+ return Collections.emptyList();
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/quickfix/RoomQuickfixProvider.java b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/quickfix/RoomQuickfixProvider.java
new file mode 100644
index 000000000..5cc555bbb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/src/org/eclipse/etrice/core/ui/quickfix/RoomQuickfixProvider.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.ui.quickfix;
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+
+public class RoomQuickfixProvider extends DefaultQuickfixProvider {
+
+// @Fix(MyJavaValidator.INVALID_TYPE_NAME)
+// public void capitalizeName(final Issue issue, IssueResolutionAcceptor acceptor) {
+// acceptor.accept(issue, "Capitalize name", "Capitalize name of type", "upcase.png", new IModification() {
+// public void apply(IModificationContext context) throws BadLocationException {
+// IXtextDocument xtextDocument = context.getXtextDocument();
+// String firstLetter = xtextDocument.get(issue.getOffset(), 1);
+// xtextDocument.replace(issue.getOffset(), 1, Strings.toFirstUpper(firstLetter));
+// }
+// });
+// }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room.ui/templates/readme.txt b/plugins/org.eclipse.etrice.core.room.ui/templates/readme.txt
new file mode 100644
index 000000000..b0bdf1cb7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/templates/readme.txt
@@ -0,0 +1 @@
+http://www.eclipse.org/Xtext/documentation/latest/xtext.html#templates \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room.ui/templates/templates.xml b/plugins/org.eclipse.etrice.core.room.ui/templates/templates.xml
new file mode 100644
index 000000000..2778d286e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room.ui/templates/templates.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<templates>
+ <template autoinsert="true" context="org.eclipse.etrice.core.Room.ActorClass"
+ id="actor_class"
+ deleted="false" description="actor class skeleton" enabled="true"
+ name="ActorClass">ActorClass ${cursor} {&#13;
+ Interface {&#13;
+ }&#13;
+ Structure {&#13;
+ }&#13;
+ Behavior {&#13;
+ }&#13;
+ }&#13;</template>
+ <template autoinsert="true" context="org.eclipse.etrice.core.Room.kw_State"
+ id="state"
+ deleted="false" description="State with entry code, exit code and sub graph"
+ enabled="true" name="complete State">State ${cursor} {&#13;
+ entry {&#13;
+ ""&#13;
+ }&#13;
+ exit {&#13;
+ ""&#13;
+ }&#13;
+ subgraph {&#13;
+ }</template>
+ <template autoinsert="true" context="org.eclipse.etrice.core.Room.kw_RefinedState"
+ id="refined_state"
+ deleted="false" description="RefinedState"
+ enabled="true" name="RefinedState">RefinedState ${base:CrossReference('RefinedState.base')} {&#13;
+ ${cursor}&#13;
+}</template>
+ <template autoinsert="true" context="org.eclipse.etrice.core.Room.DetailCode"
+ id="detail_code"
+ deleted="false" description="detail code" enabled="true" name="detail code">{&#13;
+ ""&#13;
+ }</template>
+ <template autoinsert="true" context="org.eclipse.etrice.core.Room.kw_Port"
+ id="port"
+ deleted="false" description="insert port" enabled="true" name="Port">Port ${cursor} : ${protocol:CrossReference('Port.protocol')}</template>
+ <template autoinsert="true" context="org.eclipse.etrice.core.Room.kw_SAP"
+ id="sap"
+ deleted="false" description="insert SAP" enabled="true" name="SAP">SAP ${cursor} : ${protocol:CrossReference('SAPRef.protocol')}</template>
+ <template autoinsert="true" context="org.eclipse.etrice.core.Room.kw_SPP"
+ id="spp"
+ deleted="false" description="insert SPP" enabled="true" name="SPP">SPP ${cursor} : ${protocol:CrossReference('SPPRef.protocol')}</template>
+</templates>
diff --git a/plugins/org.eclipse.etrice.core.room/.gitignore b/plugins/org.eclipse.etrice.core.room/.gitignore
new file mode 100644
index 000000000..ba077a403
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..6618130bf
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ROOM DSL
+Bundle-Vendor: eTrice (Incubation)
+Bundle-Version: 0.1.0
+Bundle-SymbolicName: org.eclipse.etrice.core.room;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;bundle-version="1.0.1",
+ org.eclipse.xtext.generator;bundle-version="1.0.1";resolution:=optional,
+ de.itemis.xtext.antlr;bundle-version="1.0.1";resolution:=optional,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;bundle-version="2.6.0";resolution:=optional,
+ org.eclipse.emf.mwe.utils;bundle-version="1.0.0";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="1.0.1";resolution:=optional,
+ com.ibm.icu;bundle-version="4.2.1";resolution:=optional,
+ org.eclipse.xtext.xtend;bundle-version="1.0.1";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="1.0.1",
+ org.eclipse.emf.ecore;bundle-version="2.6.0",
+ org.eclipse.emf.common;bundle-version="2.6.0",
+ org.antlr.runtime;bundle-version="3.0.0"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.etrice.core,
+ org.eclipse.etrice.core.naming,
+ org.eclipse.etrice.core.parseTreeConstruction,
+ org.eclipse.etrice.core.parser.antlr,
+ org.eclipse.etrice.core.parser.antlr.internal,
+ org.eclipse.etrice.core.room,
+ org.eclipse.etrice.core.room.impl,
+ org.eclipse.etrice.core.room.util,
+ org.eclipse.etrice.core.services,
+ org.eclipse.etrice.core.validation
diff --git a/plugins/org.eclipse.etrice.core.room/about.html b/plugins/org.eclipse.etrice.core.room/about.html
new file mode 100644
index 000000000..f47dbddbb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room/build.properties b/plugins/org.eclipse.etrice.core.room/build.properties
new file mode 100644
index 000000000..bed6e1e91
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/build.properties
@@ -0,0 +1,4 @@
+source.. = src/,src-gen/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room/gen_room.launch b/plugins/org.eclipse.etrice.core.room/gen_room.launch
new file mode 100644
index 000000000..041054485
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/gen_room.launch
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.emf.mwe2.launch.Mwe2LaunchConfigurationType">
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.etrice.core.room"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="src/org/eclipse/etrice/core/GenerateRoom.mwe2"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.core.room"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m -XX:MaxPermSize=256m"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.etrice.core.room/plugin.properties b/plugins/org.eclipse.etrice.core.room/plugin.properties
new file mode 100644
index 000000000..bc8c15e22
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/plugin.properties
@@ -0,0 +1,8 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+pluginName = Room Model
+providerName = www.example.org
diff --git a/plugins/org.eclipse.etrice.core.room/plugin.xml b/plugins/org.eclipse.etrice.core.room/plugin.xml
new file mode 100644
index 000000000..efcfcd738
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http://www.eclipse.org/etrice/Room"
+ class = "org.eclipse.etrice.core.room.RoomPackage"
+ genModel = "org/eclipse/etrice/core/Room.genmodel" />
+
+ </extension>
+
+
+
+
+
+</plugin>
diff --git a/plugins/org.eclipse.etrice.core.room/plugin.xml_gen b/plugins/org.eclipse.etrice.core.room/plugin.xml_gen
new file mode 100644
index 000000000..efcfcd738
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/plugin.xml_gen
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http://www.eclipse.org/etrice/Room"
+ class = "org.eclipse.etrice.core.room.RoomPackage"
+ genModel = "org/eclipse/etrice/core/Room.genmodel" />
+
+ </extension>
+
+
+
+
+
+</plugin>
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/AbstractRoomRuntimeModule.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/AbstractRoomRuntimeModule.java
new file mode 100644
index 000000000..74b6e3e74
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/AbstractRoomRuntimeModule.java
@@ -0,0 +1,132 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.etrice.core;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.eclipse.etrice.core.RoomRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractRoomRuntimeModule extends DefaultRuntimeModule {
+
+ protected Properties properties = null;
+
+ @Override
+ public void configure(Binder binder) {
+ properties = tryBindProperties(binder, "org/eclipse/etrice/core/Room.properties");
+ super.configure(binder);
+ }
+
+ public void configureLanguageName(Binder binder) {
+ binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.etrice.core.Room");
+ }
+
+ public void configureFileExtensions(Binder binder) {
+ if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+ binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("room");
+ }
+
+ // contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+ public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+ return org.eclipse.etrice.core.services.RoomGrammarAccess.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parseTreeConstructor.ParseTreeConstructorFragment
+ public Class<? extends org.eclipse.xtext.parsetree.reconstr.IParseTreeConstructor> bindIParseTreeConstructor() {
+ return org.eclipse.etrice.core.parseTreeConstruction.RoomParsetreeConstructor.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrParser> bindIAntlrParser() {
+ return org.eclipse.etrice.core.parser.antlr.RoomParser.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+ return org.eclipse.etrice.core.parser.antlr.RoomAntlrTokenFileProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+ return org.eclipse.etrice.core.parser.antlr.internal.InternalRoomLexer.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public com.google.inject.Provider<org.eclipse.etrice.core.parser.antlr.internal.InternalRoomLexer> provideInternalRoomLexer() {
+ return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.etrice.core.parser.antlr.internal.InternalRoomLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public void configureRuntimeLexer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.eclipse.etrice.core.parser.antlr.internal.InternalRoomLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
+ @org.eclipse.xtext.service.SingletonBinding(eager=true) public Class<? extends org.eclipse.etrice.core.validation.RoomJavaValidator> bindRoomJavaValidator() {
+ return org.eclipse.etrice.core.validation.RoomJavaValidator.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+ return org.eclipse.etrice.core.scoping.RoomScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate")).to(org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+ return org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+ public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+ return org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+ public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+ return org.eclipse.etrice.core.formatting.RoomFormatter.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+ return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+ return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractGlobalScopeProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore
new file mode 100644
index 000000000..7f6835698
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="room"
+ nsURI="http://www.eclipse.org/etrice/Room" nsPrefix="room">
+ <eClassifiers xsi:type="ecore:EClass" name="RoomModel">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
+ eType="#//Import" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="dataClasses" upperBound="-1"
+ eType="#//DataClass" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protocolClasses" upperBound="-1"
+ eType="#//ProtocolClass" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actorClasses" upperBound="-1"
+ eType="#//ActorClass" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subSystemClasses" upperBound="-1"
+ eType="#//SubSystemClass" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="systems" upperBound="-1"
+ eType="#//LogicalSystem" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RoomClass">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructureClass" eSuperTypes="#//RoomClass">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"
+ eType="#//Binding" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connections" upperBound="-1"
+ eType="#//LayerConnection" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActorContainerClass" eSuperTypes="#//StructureClass">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ifSPPs" upperBound="-1"
+ eType="#//SPPRef" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actorRefs" upperBound="-1"
+ eType="#//ActorRef" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PrimitiveType">
+ <eLiterals name="void" literal="void"/>
+ <eLiterals name="int8" value="1" literal="int8"/>
+ <eLiterals name="int16" value="2" literal="int16"/>
+ <eLiterals name="int32" value="3" literal="int32"/>
+ <eLiterals name="uint8" value="4" literal="uint8"/>
+ <eLiterals name="uint16" value="5" literal="uint16"/>
+ <eLiterals name="uint32" value="6" literal="uint32"/>
+ <eLiterals name="float32" value="7" literal="float32"/>
+ <eLiterals name="float64" value="8" literal="float64"/>
+ <eLiterals name="boolean" value="9" literal="boolean"/>
+ <eLiterals name="string" value="10" literal="string"/>
+ <eLiterals name="char" value="11" literal="char"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypedID">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Type" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FreeTypedID">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//FreeType"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Type">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="prim" eType="#//PrimitiveType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//DataClass"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FreeType">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="prim" eType="#//PrimitiveType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataClass" eSuperTypes="#//RoomClass">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base" eType="#//DataClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
+ eType="#//Import" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+ eType="#//Attribute" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operations" upperBound="-1"
+ eType="#//Operation" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Attribute">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Type" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Operation">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
+ eType="#//FreeTypedID" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returntype" eType="#//FreeType"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="detailCode" eType="#//DetailCode"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolClass" eSuperTypes="#//RoomClass">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base" eType="#//ProtocolClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="userCode1" eType="#//DetailCode"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="userCode2" eType="#//DetailCode"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incomingMessages" upperBound="-1"
+ eType="#//Message" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingMessages" upperBound="-1"
+ eType="#//Message" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="regular" eType="#//PortClass"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="conjugate" eType="#//PortClass"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="semantics" eType="#//ProtocolSemantics"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Message">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
+ eType="#//TypedID" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PortClass">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="userCode" eType="#//DetailCode"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+ eType="#//Attribute" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operations" upperBound="-1"
+ eType="#//Operation" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="msgHandlers" upperBound="-1"
+ eType="#//MessageHandler" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageHandler">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="msg" eType="#//Message"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="detailCode" eType="#//DetailCode"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolSemantics">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
+ eType="#//SemanticsRule" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SemanticsRule">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="msg" eType="#//Message"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="followUps" upperBound="-1"
+ eType="#//SemanticsRule" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SemanticsInRule" eSuperTypes="#//SemanticsRule"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SemanticsOutRule" eSuperTypes="#//SemanticsRule"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ActorClass" eSuperTypes="#//ActorContainerClass">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base" eType="#//ActorClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ifPorts" upperBound="-1"
+ eType="#//Port" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="userCode1" eType="#//DetailCode"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="userCode2" eType="#//DetailCode"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="intPorts" upperBound="-1"
+ eType="#//Port" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extPorts" upperBound="-1"
+ eType="#//ExternalPort" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="serviceImplementations"
+ upperBound="-1" eType="#//ServiceImplementation" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="strSAPs" upperBound="-1"
+ eType="#//SAPRef" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+ eType="#//Attribute" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operations" upperBound="-1"
+ eType="#//Operation" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" eType="#//StateGraph"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterfaceItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" eType="#//ProtocolClass"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//InterfaceItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="conjugated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExternalPort">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ifport" eType="#//Port"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SAPRef" eSuperTypes="#//InterfaceItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SPPRef" eSuperTypes="#//InterfaceItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ServiceImplementation">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="spp" eType="#//SPPRef"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LogicalSystem" eSuperTypes="#//StructureClass">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subSystems" upperBound="-1"
+ eType="#//SubSystemRef" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActorContainerRef">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SubSystemRef" eSuperTypes="#//ActorContainerRef">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//SubSystemClass"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SubSystemClass" eSuperTypes="#//ActorContainerClass">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="relayPorts" upperBound="-1"
+ eType="#//Port" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="threads" upperBound="-1"
+ eType="#//LogicalThread" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LogicalThread">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instances" upperBound="-1"
+ eType="#//ActorInstancePath" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActorInstancePath">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="segments" unique="false"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Binding">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="endpoint1" eType="#//BindingEndPoint"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="endpoint2" eType="#//BindingEndPoint"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BindingEndPoint">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actorRef" eType="#//ActorContainerRef"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="port" eType="#//Port"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerConnection">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="from" eType="#//SAPoint"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="to" eType="#//SPPoint"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SAPoint"/>
+ <eClassifiers xsi:type="ecore:EClass" name="RefSAPoint" eSuperTypes="#//SAPoint">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="#//ActorContainerRef"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RelaySAPoint" eSuperTypes="#//SAPoint">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="relay" eType="#//SPPRef"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SPPoint">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="#//ActorContainerRef"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="service" eType="#//SPPRef"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActorRef" eSuperTypes="#//ActorContainerRef">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//ActorClass"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StateGraphNode" eSuperTypes="#//StateGraphItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StateGraphItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//StateGraphNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entryCode" eType="#//DetailCode"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exitCode" eType="#//DetailCode"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subgraph" eType="#//StateGraph"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StateGraph">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="states" upperBound="-1"
+ eType="#//State" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="trPoints" upperBound="-1"
+ eType="#//TrPoint" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="chPoints" upperBound="-1"
+ eType="#//ChoicePoint" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transitions" upperBound="-1"
+ eType="#//Transition" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BaseState" eSuperTypes="#//State">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RefinedState" eSuperTypes="#//State">
+ <eOperations name="getName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return getBase()==null? &quot;&quot;:getBase().getName();"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base" eType="#//BaseState"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DetailCode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="commands" unique="false"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TrPoint" eSuperTypes="#//StateGraphNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TransitionPoint" eSuperTypes="#//TrPoint">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="handler" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EntryPoint" eSuperTypes="#//TrPoint"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ExitPoint" eSuperTypes="#//TrPoint"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ChoicePoint" eSuperTypes="#//StateGraphNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//StateGraphItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="to" eType="#//TransitionTerminal"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="action" eType="#//DetailCode"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NonInitialTransition" eSuperTypes="#//Transition">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="from" eType="#//TransitionTerminal"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InitialTransition" eSuperTypes="#//Transition"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ContinuationTransition" eSuperTypes="#//NonInitialTransition"/>
+ <eClassifiers xsi:type="ecore:EClass" name="TriggeredTransition" eSuperTypes="#//NonInitialTransition">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="triggers" upperBound="-1"
+ eType="#//Trigger" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CPBranchTransition" eSuperTypes="#//NonInitialTransition">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//DetailCode"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TransitionTerminal"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StateTerminal" eSuperTypes="#//TransitionTerminal">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" eType="#//BaseState"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TrPointTerminal" eSuperTypes="#//TransitionTerminal">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="trPoint" eType="#//TrPoint"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SubStateTrPointTerminal" eSuperTypes="#//TransitionTerminal">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="trPoint" eType="#//TrPoint"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" eType="#//BaseState"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ChoicepointTerminal" eSuperTypes="#//TransitionTerminal">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cp" eType="#//ChoicePoint"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Trigger">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="msgFromIfPairs" upperBound="-1"
+ eType="#//MessageFromIf" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//Guard"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageFromIf">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" eType="#//Message"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="from" eType="#//InterfaceItem"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Guard">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//DetailCode"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Import">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="importedNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.genmodel b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.genmodel
new file mode 100644
index 000000000..56492ace3
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.genmodel
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.etrice.core.room/src-gen"
+ editDirectory="/org.eclipse.etrice.core.room.edit/src" editorDirectory="/org.eclipse.etrice.core.room.editor/src"
+ modelPluginID="org.eclipse.etrice.core.room" forceOverwrite="true" modelName="Room"
+ updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ complianceLevel="5.0" copyrightFields="false" editPluginID="org.eclipse.etrice.core.room.edit"
+ editorPluginID="org.eclipse.etrice.core.room.editor">
+ <genPackages prefix="Room" basePackage="org.eclipse.etrice.core" disposableProviderFactory="true"
+ ecorePackage="Room.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="Room.ecore#//PrimitiveType">
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/void"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/int8"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/int16"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/int32"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/uint8"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/uint16"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/uint32"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/float32"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/float64"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/boolean"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/string"/>
+ <genEnumLiterals ecoreEnumLiteral="Room.ecore#//PrimitiveType/char"/>
+ </genEnums>
+ <genClasses ecoreClass="Room.ecore#//RoomModel">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//RoomModel/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//RoomModel/imports"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//RoomModel/dataClasses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//RoomModel/protocolClasses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//RoomModel/actorClasses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//RoomModel/subSystemClasses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//RoomModel/systems"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//RoomClass">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//RoomClass/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//StructureClass">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//StructureClass/bindings"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//StructureClass/connections"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ActorContainerClass">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorContainerClass/ifSPPs"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorContainerClass/actorRefs"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//TypedID">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//TypedID/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//TypedID/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//FreeTypedID">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//FreeTypedID/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//FreeTypedID/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Type">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Type/prim"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//Type/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//FreeType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//FreeType/prim"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//FreeType/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//DataClass">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//DataClass/base"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//DataClass/imports"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//DataClass/attributes"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//DataClass/operations"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Attribute">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Attribute/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Attribute/size"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Attribute/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Operation">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Operation/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Operation/arguments"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Operation/returntype"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Operation/detailCode"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ProtocolClass">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/base"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/userCode1"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/userCode2"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/incomingMessages"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/outgoingMessages"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/regular"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/conjugate"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolClass/semantics"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Message">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Message/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Message/arguments"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//PortClass">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//PortClass/userCode"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//PortClass/attributes"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//PortClass/operations"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//PortClass/msgHandlers"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//MessageHandler">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//MessageHandler/msg"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//MessageHandler/detailCode"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ProtocolSemantics">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ProtocolSemantics/rules"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SemanticsRule">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//SemanticsRule/msg"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//SemanticsRule/followUps"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SemanticsInRule"/>
+ <genClasses ecoreClass="Room.ecore#//SemanticsOutRule"/>
+ <genClasses ecoreClass="Room.ecore#//ActorClass">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//ActorClass/abstract"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/base"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/ifPorts"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/userCode1"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/userCode2"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/intPorts"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/extPorts"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/serviceImplementations"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/strSAPs"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/attributes"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/operations"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//ActorClass/stateMachine"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//InterfaceItem">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//InterfaceItem/name"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//InterfaceItem/protocol"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Port">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Port/conjugated"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Port/multiplicity"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ExternalPort">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//ExternalPort/ifport"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SAPRef"/>
+ <genClasses ecoreClass="Room.ecore#//SPPRef"/>
+ <genClasses ecoreClass="Room.ecore#//ServiceImplementation">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//ServiceImplementation/spp"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//LogicalSystem">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//LogicalSystem/subSystems"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ActorContainerRef">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//ActorContainerRef/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SubSystemRef">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//SubSystemRef/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SubSystemClass">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//SubSystemClass/relayPorts"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//SubSystemClass/threads"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//LogicalThread">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//LogicalThread/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//LogicalThread/instances"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ActorInstancePath">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//ActorInstancePath/segments"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Binding">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Binding/endpoint1"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Binding/endpoint2"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//BindingEndPoint">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//BindingEndPoint/actorRef"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//BindingEndPoint/port"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//LayerConnection">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//LayerConnection/from"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//LayerConnection/to"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SAPoint"/>
+ <genClasses ecoreClass="Room.ecore#//RefSAPoint">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//RefSAPoint/ref"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//RelaySAPoint">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//RelaySAPoint/relay"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SPPoint">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//SPPoint/ref"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//SPPoint/service"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ActorRef">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//ActorRef/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//StateGraphNode"/>
+ <genClasses ecoreClass="Room.ecore#//StateGraphItem"/>
+ <genClasses ecoreClass="Room.ecore#//State">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//State/entryCode"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//State/exitCode"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//State/subgraph"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//StateGraph">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//StateGraph/states"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//StateGraph/trPoints"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//StateGraph/chPoints"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//StateGraph/transitions"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//BaseState">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//BaseState/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//RefinedState">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//RefinedState/base"/>
+ <genOperations ecoreOperation="Room.ecore#//RefinedState/getName"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//DetailCode">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//DetailCode/commands"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//TrPoint">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//TrPoint/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//TransitionPoint">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//TransitionPoint/handler"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//EntryPoint"/>
+ <genClasses ecoreClass="Room.ecore#//ExitPoint"/>
+ <genClasses ecoreClass="Room.ecore#//ChoicePoint">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//ChoicePoint/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Transition">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Transition/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Transition/to"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Transition/action"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//NonInitialTransition">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//NonInitialTransition/from"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//InitialTransition"/>
+ <genClasses ecoreClass="Room.ecore#//ContinuationTransition"/>
+ <genClasses ecoreClass="Room.ecore#//TriggeredTransition">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//TriggeredTransition/triggers"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//CPBranchTransition">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//CPBranchTransition/condition"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//TransitionTerminal"/>
+ <genClasses ecoreClass="Room.ecore#//StateTerminal">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//StateTerminal/state"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//TrPointTerminal">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//TrPointTerminal/trPoint"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//SubStateTrPointTerminal">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//SubStateTrPointTerminal/trPoint"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//SubStateTrPointTerminal/state"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//ChoicepointTerminal">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//ChoicepointTerminal/cp"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Trigger">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Trigger/msgFromIfPairs"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Trigger/guard"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//MessageFromIf">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//MessageFromIf/message"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Room.ecore#//MessageFromIf/from"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Guard">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Room.ecore#//Guard/guard"/>
+ </genClasses>
+ <genClasses ecoreClass="Room.ecore#//Import">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Room.ecore#//Import/importedNamespace"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.xmi b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.xmi
new file mode 100644
index 000000000..bc863ca9a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.xmi
@@ -0,0 +1,1612 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+ <xtext:Grammar name="org.eclipse.etrice.core.Room" usedGrammars="/1">
+ <metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="room">
+ <ePackage href="http://www.eclipse.org/etrice/Room#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:ParserRule" name="RoomModel">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RoomModel"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="RoomModel"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="imports" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Assignment" feature="dataClasses" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="protocolClasses" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="actorClasses" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="subSystemClasses" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="systems" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="RoomClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RoomClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StructureClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StructureClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ActorContainerClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:EnumRule" name="PrimitiveType">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/etrice/Room#//PrimitiveType"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/void"/>
+ <literal value="void"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/int8"/>
+ <literal value="int8"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/int16"/>
+ <literal value="int16"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/int32"/>
+ <literal value="int32"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/uint8"/>
+ <literal value="uint8"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/uint16"/>
+ <literal value="uint16"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/uint32"/>
+ <literal value="uint32"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/float32"/>
+ <literal value="float32"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/float64"/>
+ <literal value="float64"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/boolean"/>
+ <literal value="boolean"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/string"/>
+ <literal value="string"/>
+ </elements>
+ <elements xsi:type="xtext:EnumLiteralDeclaration">
+ <enumLiteral href="http://www.eclipse.org/etrice/Room#//PrimitiveType/char"/>
+ <literal value="char"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TypedID">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TypedID"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="FreeTypedID">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//FreeTypedID"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Type">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Type"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="prim" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DataClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="FreeType">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//FreeType"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="prim" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DataClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DataClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="DataClass"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="extends"/>
+ <elements xsi:type="xtext:Assignment" feature="base" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DataClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="imports" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="+" feature="attributes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="operations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Attribute">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Attribute"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Attribute"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="["/>
+ <elements xsi:type="xtext:Assignment" feature="size" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="]"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Operation">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Operation"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Operation"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="returntype" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="detailCode" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ProtocolClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="ProtocolClass"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="extends"/>
+ <elements xsi:type="xtext:Assignment" feature="base" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="usercode1"/>
+ <elements xsi:type="xtext:Assignment" feature="userCode1" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="usercode2"/>
+ <elements xsi:type="xtext:Assignment" feature="userCode2" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="incoming"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="incomingMessages" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ <elements xsi:type="xtext:Keyword" value="outgoing"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="outgoingMessages" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="regular"/>
+ <elements xsi:type="xtext:Keyword" value="PortClass"/>
+ <elements xsi:type="xtext:Assignment" feature="regular" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="conjugate"/>
+ <elements xsi:type="xtext:Keyword" value="PortClass"/>
+ <elements xsi:type="xtext:Assignment" feature="conjugate" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="semantics" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Message">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Message"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="PortClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//PortClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="usercode"/>
+ <elements xsi:type="xtext:Assignment" feature="userCode" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Assignment" feature="attributes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="operations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="msgHandlers" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="MessageHandler">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//MessageHandler"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="handle"/>
+ <elements xsi:type="xtext:Assignment" feature="msg" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="detailCode" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ProtocolSemantics">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolSemantics"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="semantics"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="+" feature="rules" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SemanticsRule">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SemanticsRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SemanticsInRule">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SemanticsInRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="in"/>
+ <elements xsi:type="xtext:Assignment" feature="msg" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="followUps" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SemanticsOutRule">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SemanticsOutRule"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="out"/>
+ <elements xsi:type="xtext:Assignment" feature="msg" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="followUps" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ActorClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="abstract" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="abstract"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="ActorClass"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="extends"/>
+ <elements xsi:type="xtext:Assignment" feature="base" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="Interface"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="ifPorts" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="ifSPPs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="Structure"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="usercode1"/>
+ <elements xsi:type="xtext:Assignment" feature="userCode1" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="usercode2"/>
+ <elements xsi:type="xtext:Assignment" feature="userCode2" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="intPorts" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="extPorts" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="serviceImplementations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="strSAPs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="attributes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="actorRefs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="bindings" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="connections" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="Behavior"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="operations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="stateMachine" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="InterfaceItem">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InterfaceItem"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Port">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Port"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="conjugated" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="conjugated"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="Port"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="["/>
+ <elements xsi:type="xtext:Assignment" feature="multiplicity" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="]"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="protocol" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ExternalPort">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ExternalPort"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="external"/>
+ <elements xsi:type="xtext:Keyword" value="Port"/>
+ <elements xsi:type="xtext:Assignment" feature="ifport" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Port"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SAPRef">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SAPRef"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="SAP"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="protocol" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SPPRef">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="SPP"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="protocol" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ServiceImplementation">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ServiceImplementation"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="ServiceImplementation"/>
+ <elements xsi:type="xtext:Keyword" value="of"/>
+ <elements xsi:type="xtext:Assignment" feature="spp" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="LogicalSystem">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//LogicalSystem"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="LogicalSystem"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="+" feature="subSystems" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="bindings" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="connections" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ActorContainerRef">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SubSystemRef">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubSystemRef"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="SubSystemRef"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubSystemClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SubSystemClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubSystemClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="SubSystemClass"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="relayPorts" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="ifSPPs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="+" feature="actorRefs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="bindings" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="connections" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="threads" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="LogicalThread">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//LogicalThread"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="LogicalThread"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" feature="instances" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="instances" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ActorInstancePath">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorInstancePath"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="segments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Assignment" feature="segments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Binding">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Binding"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Binding"/>
+ <elements xsi:type="xtext:Assignment" feature="endpoint1" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="and"/>
+ <elements xsi:type="xtext:Assignment" feature="endpoint2" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="BindingEndPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//BindingEndPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="actorRef" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="."/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="port" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Port"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="LayerConnection">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//LayerConnection"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="LayerConnection"/>
+ <elements xsi:type="xtext:Assignment" feature="from" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="satisfied_by"/>
+ <elements xsi:type="xtext:Assignment" feature="to" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SAPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SAPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="RefSAPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RefSAPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="ref"/>
+ <elements xsi:type="xtext:Assignment" feature="ref" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="RelaySAPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RelaySAPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="relay_sap"/>
+ <elements xsi:type="xtext:Assignment" feature="relay" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SPPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="ref" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Assignment" feature="service" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ActorRef">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorRef"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="ActorRef"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorClass"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StateGraphNode">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraphNode"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StateGraphItem">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraphItem"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="State">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//State"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StateGraph">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraph"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Assignment" feature="states" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="trPoints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="chPoints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="transitions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StateMachine">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraph"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="StateMachine"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Assignment" feature="states" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="trPoints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="chPoints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="transitions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="BaseState">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//BaseState"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="State"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="entry"/>
+ <elements xsi:type="xtext:Assignment" feature="entryCode" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="exit"/>
+ <elements xsi:type="xtext:Assignment" feature="exitCode" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="subgraph"/>
+ <elements xsi:type="xtext:Assignment" feature="subgraph" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="RefinedState">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RefinedState"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="RefinedState"/>
+ <elements xsi:type="xtext:Assignment" feature="base" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//BaseState"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="entry"/>
+ <elements xsi:type="xtext:Assignment" feature="entryCode" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="exit"/>
+ <elements xsi:type="xtext:Assignment" feature="exitCode" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="subgraph"/>
+ <elements xsi:type="xtext:Assignment" feature="subgraph" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DetailCode">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DetailCode"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="+" feature="commands" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TrPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TransitionPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TransitionPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="handler" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="handler"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="TransitionPoint"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EntryPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//EntryPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="EntryPoint"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ExitPoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ExitPoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="ExitPoint"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ChoicePoint">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ChoicePoint"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="ChoicePoint"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Transition">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Transition"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="NonInitialTransition">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//NonInitialTransition"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="InitialTransition">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InitialTransition"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Transition"/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Keyword" value="initial"/>
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Assignment" feature="to" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="action"/>
+ <elements xsi:type="xtext:Assignment" feature="action" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ContinuationTransition">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ContinuationTransition"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Transition"/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="from" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Assignment" feature="to" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="action"/>
+ <elements xsi:type="xtext:Assignment" feature="action" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TriggeredTransition">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TriggeredTransition"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Transition"/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="from" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Assignment" feature="to" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Keyword" value="triggers"/>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value="or"/>
+ <elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="action"/>
+ <elements xsi:type="xtext:Assignment" feature="action" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="CPBranchTransition">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//CPBranchTransition"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="Transition"/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="from" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Assignment" feature="to" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Keyword" value="cond"/>
+ <elements xsi:type="xtext:Assignment" feature="condition" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="action"/>
+ <elements xsi:type="xtext:Assignment" feature="action" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TransitionTerminal">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TransitionTerminal"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StateTerminal">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateTerminal"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="state" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//BaseState"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TrPointTerminal">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPointTerminal"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="my"/>
+ <elements xsi:type="xtext:Assignment" feature="trPoint" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPoint"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SubStateTrPointTerminal">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubStateTrPointTerminal"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="trPoint" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPoint"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="of"/>
+ <elements xsi:type="xtext:Assignment" feature="state" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//BaseState"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ChoicepointTerminal">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ChoicepointTerminal"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="cp"/>
+ <elements xsi:type="xtext:Assignment" feature="cp" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ChoicePoint"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Trigger">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Trigger"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="msgFromIfPairs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value="|"/>
+ <elements xsi:type="xtext:Assignment" feature="msgFromIfPairs" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="guard" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.67"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="MessageFromIf">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//MessageFromIf"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="message" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="from" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InterfaceItem"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Guard">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Guard"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="guard"/>
+ <elements xsi:type="xtext:Assignment" feature="guard" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Import">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Import"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="import"/>
+ <elements xsi:type="xtext:Assignment" feature="importedNamespace" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ImportedFQN">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Keyword" value="*"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="FQN">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ </xtext:Grammar>
+ <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:TerminalRule" name="ID">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="INT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </type>
+ <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="STRING">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="/*"/>
+ <elements xsi:type="xtext:UntilToken">
+ <terminal xsi:type="xtext:Keyword" value="*/"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="//"/>
+ <elements xsi:type="xtext:NegatedToken" cardinality="*">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="WS">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Keyword" value=" "/>
+ <elements xsi:type="xtext:Keyword" value="&#x9;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Wildcard"/>
+ </rules>
+ </xtext:Grammar>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/RoomStandaloneSetupGenerated.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/RoomStandaloneSetupGenerated.java
new file mode 100644
index 000000000..d11b2c770
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/RoomStandaloneSetupGenerated.java
@@ -0,0 +1,44 @@
+
+package org.eclipse.etrice.core;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class RoomStandaloneSetupGenerated implements ISetup {
+
+ public Injector createInjectorAndDoEMFRegistration() {
+ org.eclipse.xtext.common.TerminalsStandaloneSetup.doSetup();
+
+ Injector injector = createInjector();
+ register(injector);
+ return injector;
+ }
+
+ public Injector createInjector() {
+ return Guice.createInjector(new org.eclipse.etrice.core.RoomRuntimeModule());
+ }
+
+ public void register(Injector injector) {
+ if (!EPackage.Registry.INSTANCE.containsKey("http://www.eclipse.org/etrice/Room")) {
+ EPackage.Registry.INSTANCE.put("http://www.eclipse.org/etrice/Room", org.eclipse.etrice.core.room.RoomPackage.eINSTANCE);
+ }
+
+ org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+ org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("room", resourceFactory);
+ org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("room", serviceProvider);
+
+
+
+
+
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parseTreeConstruction/RoomParsetreeConstructor.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parseTreeConstruction/RoomParsetreeConstructor.java
new file mode 100644
index 000000000..d7cba0dbf
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parseTreeConstruction/RoomParsetreeConstructor.java
@@ -0,0 +1,15545 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.etrice.core.parseTreeConstruction;
+
+import org.eclipse.emf.ecore.*;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parsetree.reconstr.IEObjectConsumer;
+import org.eclipse.xtext.parsetree.reconstr.impl.AbstractParseTreeConstructor;
+
+import org.eclipse.etrice.core.services.RoomGrammarAccess;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("all")
+public class RoomParsetreeConstructor extends AbstractParseTreeConstructor {
+
+ @Inject
+ private RoomGrammarAccess grammarAccess;
+
+ @Override
+ protected AbstractToken getRootToken(IEObjectConsumer inst) {
+ return new ThisRootNode(inst);
+ }
+
+protected class ThisRootNode extends RootToken {
+ public ThisRootNode(IEObjectConsumer inst) {
+ super(inst);
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RoomModel_Group(this, this, 0, inst);
+ case 1: return new RoomClass_Alternatives(this, this, 1, inst);
+ case 2: return new StructureClass_Alternatives(this, this, 2, inst);
+ case 3: return new ActorContainerClass_Alternatives(this, this, 3, inst);
+ case 4: return new TypedID_Group(this, this, 4, inst);
+ case 5: return new FreeTypedID_Group(this, this, 5, inst);
+ case 6: return new Type_Alternatives(this, this, 6, inst);
+ case 7: return new FreeType_Alternatives(this, this, 7, inst);
+ case 8: return new DataClass_Group(this, this, 8, inst);
+ case 9: return new Attribute_Group(this, this, 9, inst);
+ case 10: return new Operation_Group(this, this, 10, inst);
+ case 11: return new ProtocolClass_Group(this, this, 11, inst);
+ case 12: return new Message_Group(this, this, 12, inst);
+ case 13: return new PortClass_Group(this, this, 13, inst);
+ case 14: return new MessageHandler_Group(this, this, 14, inst);
+ case 15: return new ProtocolSemantics_Group(this, this, 15, inst);
+ case 16: return new SemanticsRule_Alternatives(this, this, 16, inst);
+ case 17: return new SemanticsInRule_Group(this, this, 17, inst);
+ case 18: return new SemanticsOutRule_Group(this, this, 18, inst);
+ case 19: return new ActorClass_Group(this, this, 19, inst);
+ case 20: return new InterfaceItem_Alternatives(this, this, 20, inst);
+ case 21: return new Port_Group(this, this, 21, inst);
+ case 22: return new ExternalPort_Group(this, this, 22, inst);
+ case 23: return new SAPRef_Group(this, this, 23, inst);
+ case 24: return new SPPRef_Group(this, this, 24, inst);
+ case 25: return new ServiceImplementation_Group(this, this, 25, inst);
+ case 26: return new LogicalSystem_Group(this, this, 26, inst);
+ case 27: return new ActorContainerRef_Alternatives(this, this, 27, inst);
+ case 28: return new SubSystemRef_Group(this, this, 28, inst);
+ case 29: return new SubSystemClass_Group(this, this, 29, inst);
+ case 30: return new LogicalThread_Group(this, this, 30, inst);
+ case 31: return new ActorInstancePath_Group(this, this, 31, inst);
+ case 32: return new Binding_Group(this, this, 32, inst);
+ case 33: return new BindingEndPoint_Group(this, this, 33, inst);
+ case 34: return new LayerConnection_Group(this, this, 34, inst);
+ case 35: return new SAPoint_Alternatives(this, this, 35, inst);
+ case 36: return new RefSAPoint_Group(this, this, 36, inst);
+ case 37: return new RelaySAPoint_Group(this, this, 37, inst);
+ case 38: return new SPPoint_Group(this, this, 38, inst);
+ case 39: return new ActorRef_Group(this, this, 39, inst);
+ case 40: return new StateGraphNode_Alternatives(this, this, 40, inst);
+ case 41: return new StateGraphItem_Alternatives(this, this, 41, inst);
+ case 42: return new State_Alternatives(this, this, 42, inst);
+ case 43: return new StateGraph_Group(this, this, 43, inst);
+ case 44: return new StateMachine_Group(this, this, 44, inst);
+ case 45: return new BaseState_Group(this, this, 45, inst);
+ case 46: return new RefinedState_Group(this, this, 46, inst);
+ case 47: return new DetailCode_Group(this, this, 47, inst);
+ case 48: return new TrPoint_Alternatives(this, this, 48, inst);
+ case 49: return new TransitionPoint_Group(this, this, 49, inst);
+ case 50: return new EntryPoint_Group(this, this, 50, inst);
+ case 51: return new ExitPoint_Group(this, this, 51, inst);
+ case 52: return new ChoicePoint_Group(this, this, 52, inst);
+ case 53: return new Transition_Alternatives(this, this, 53, inst);
+ case 54: return new NonInitialTransition_Alternatives(this, this, 54, inst);
+ case 55: return new InitialTransition_Group(this, this, 55, inst);
+ case 56: return new ContinuationTransition_Group(this, this, 56, inst);
+ case 57: return new TriggeredTransition_Group(this, this, 57, inst);
+ case 58: return new CPBranchTransition_Group(this, this, 58, inst);
+ case 59: return new TransitionTerminal_Alternatives(this, this, 59, inst);
+ case 60: return new StateTerminal_StateAssignment(this, this, 60, inst);
+ case 61: return new TrPointTerminal_Group(this, this, 61, inst);
+ case 62: return new SubStateTrPointTerminal_Group(this, this, 62, inst);
+ case 63: return new ChoicepointTerminal_Group(this, this, 63, inst);
+ case 64: return new Trigger_Group(this, this, 64, inst);
+ case 65: return new MessageFromIf_Group(this, this, 65, inst);
+ case 66: return new Guard_Group(this, this, 66, inst);
+ case 67: return new Import_Group(this, this, 67, inst);
+ default: return null;
+ }
+ }
+}
+
+
+/************ begin Rule RoomModel ****************
+ *
+ * RoomModel:
+ * "RoomModel" name=FQN "{" imports+=Import* (dataClasses+=DataClass | protocolClasses+=ProtocolClass |
+ * actorClasses+=ActorClass | subSystemClasses+=SubSystemClass | systems+=LogicalSystem)+ "}";
+ *
+ **/
+
+// "RoomModel" name=FQN "{" imports+=Import* (dataClasses+=DataClass | protocolClasses+=ProtocolClass |
+// actorClasses+=ActorClass | subSystemClasses+=SubSystemClass | systems+=LogicalSystem)+ "}"
+protected class RoomModel_Group extends GroupToken {
+
+ public RoomModel_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RoomModel_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRoomModelRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "RoomModel"
+protected class RoomModel_RoomModelKeyword_0 extends KeywordToken {
+
+ public RoomModel_RoomModelKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getRoomModelKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=FQN
+protected class RoomModel_NameAssignment_1 extends AssignmentToken {
+
+ public RoomModel_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RoomModel_RoomModelKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0(), value, null)) {
+ type = AssignmentType.DATATYPE_RULE_CALL;
+ element = grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "{"
+protected class RoomModel_LeftCurlyBracketKeyword_2 extends KeywordToken {
+
+ public RoomModel_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getLeftCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RoomModel_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// imports+=Import*
+protected class RoomModel_ImportsAssignment_3 extends AssignmentToken {
+
+ public RoomModel_ImportsAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getImportsAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Import_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("imports",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("imports");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getImportRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRoomModelAccess().getImportsImportParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RoomModel_ImportsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new RoomModel_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// (dataClasses+=DataClass | protocolClasses+=ProtocolClass | actorClasses+=ActorClass | subSystemClasses+=SubSystemClass |
+// systems+=LogicalSystem)+
+protected class RoomModel_Alternatives_4 extends AlternativesToken {
+
+ public RoomModel_Alternatives_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getAlternatives_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RoomModel_DataClassesAssignment_4_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new RoomModel_ProtocolClassesAssignment_4_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new RoomModel_ActorClassesAssignment_4_2(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new RoomModel_SubSystemClassesAssignment_4_3(lastRuleCallOrigin, this, 3, inst);
+ case 4: return new RoomModel_SystemsAssignment_4_4(lastRuleCallOrigin, this, 4, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// dataClasses+=DataClass
+protected class RoomModel_DataClassesAssignment_4_0 extends AssignmentToken {
+
+ public RoomModel_DataClassesAssignment_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getDataClassesAssignment_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("dataClasses",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("dataClasses");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDataClassRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRoomModelAccess().getDataClassesDataClassParserRuleCall_4_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RoomModel_Alternatives_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new RoomModel_ImportsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new RoomModel_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// protocolClasses+=ProtocolClass
+protected class RoomModel_ProtocolClassesAssignment_4_1 extends AssignmentToken {
+
+ public RoomModel_ProtocolClassesAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getProtocolClassesAssignment_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("protocolClasses",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("protocolClasses");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getProtocolClassRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRoomModelAccess().getProtocolClassesProtocolClassParserRuleCall_4_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RoomModel_Alternatives_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new RoomModel_ImportsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new RoomModel_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// actorClasses+=ActorClass
+protected class RoomModel_ActorClassesAssignment_4_2 extends AssignmentToken {
+
+ public RoomModel_ActorClassesAssignment_4_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getActorClassesAssignment_4_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("actorClasses",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actorClasses");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getActorClassRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRoomModelAccess().getActorClassesActorClassParserRuleCall_4_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RoomModel_Alternatives_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new RoomModel_ImportsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new RoomModel_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// subSystemClasses+=SubSystemClass
+protected class RoomModel_SubSystemClassesAssignment_4_3 extends AssignmentToken {
+
+ public RoomModel_SubSystemClassesAssignment_4_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getSubSystemClassesAssignment_4_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("subSystemClasses",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("subSystemClasses");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSubSystemClassRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRoomModelAccess().getSubSystemClassesSubSystemClassParserRuleCall_4_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RoomModel_Alternatives_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new RoomModel_ImportsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new RoomModel_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// systems+=LogicalSystem
+protected class RoomModel_SystemsAssignment_4_4 extends AssignmentToken {
+
+ public RoomModel_SystemsAssignment_4_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getSystemsAssignment_4_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalSystem_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("systems",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("systems");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getLogicalSystemRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRoomModelAccess().getSystemsLogicalSystemParserRuleCall_4_4_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RoomModel_Alternatives_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new RoomModel_ImportsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new RoomModel_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class RoomModel_RightCurlyBracketKeyword_5 extends KeywordToken {
+
+ public RoomModel_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRoomModelAccess().getRightCurlyBracketKeyword_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RoomModel_Alternatives_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule RoomModel ****************/
+
+
+/************ begin Rule RoomClass ****************
+ *
+ * RoomClass:
+ * DataClass | ProtocolClass | StructureClass;
+ *
+ **/
+
+// DataClass | ProtocolClass | StructureClass
+protected class RoomClass_Alternatives extends AlternativesToken {
+
+ public RoomClass_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getRoomClassAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RoomClass_DataClassParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new RoomClass_ProtocolClassParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new RoomClass_StructureClassParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorClassRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getDataClassRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getLogicalSystemRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getProtocolClassRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSubSystemClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// DataClass
+protected class RoomClass_DataClassParserRuleCall_0 extends RuleCallToken {
+
+ public RoomClass_DataClassParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getRoomClassAccess().getDataClassParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDataClassRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(DataClass_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// ProtocolClass
+protected class RoomClass_ProtocolClassParserRuleCall_1 extends RuleCallToken {
+
+ public RoomClass_ProtocolClassParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getRoomClassAccess().getProtocolClassParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getProtocolClassRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ProtocolClass_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// StructureClass
+protected class RoomClass_StructureClassParserRuleCall_2 extends RuleCallToken {
+
+ public RoomClass_StructureClassParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getRoomClassAccess().getStructureClassParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StructureClass_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorClassRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getLogicalSystemRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSubSystemClassRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(StructureClass_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule RoomClass ****************/
+
+
+/************ begin Rule StructureClass ****************
+ *
+ * StructureClass:
+ * ActorContainerClass | LogicalSystem;
+ *
+ **/
+
+// ActorContainerClass | LogicalSystem
+protected class StructureClass_Alternatives extends AlternativesToken {
+
+ public StructureClass_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getStructureClassAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StructureClass_ActorContainerClassParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new StructureClass_LogicalSystemParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorClassRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getLogicalSystemRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSubSystemClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// ActorContainerClass
+protected class StructureClass_ActorContainerClassParserRuleCall_0 extends RuleCallToken {
+
+ public StructureClass_ActorContainerClassParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStructureClassAccess().getActorContainerClassParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorContainerClass_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorClassRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSubSystemClassRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ActorContainerClass_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// LogicalSystem
+protected class StructureClass_LogicalSystemParserRuleCall_1 extends RuleCallToken {
+
+ public StructureClass_LogicalSystemParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStructureClassAccess().getLogicalSystemParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalSystem_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getLogicalSystemRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(LogicalSystem_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule StructureClass ****************/
+
+
+/************ begin Rule ActorContainerClass ****************
+ *
+ * ActorContainerClass:
+ * ActorClass | SubSystemClass;
+ *
+ **/
+
+// ActorClass | SubSystemClass
+protected class ActorContainerClass_Alternatives extends AlternativesToken {
+
+ public ActorContainerClass_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getActorContainerClassAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorContainerClass_ActorClassParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorContainerClass_SubSystemClassParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorClassRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSubSystemClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// ActorClass
+protected class ActorContainerClass_ActorClassParserRuleCall_0 extends RuleCallToken {
+
+ public ActorContainerClass_ActorClassParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getActorContainerClassAccess().getActorClassParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorClassRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ActorClass_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// SubSystemClass
+protected class ActorContainerClass_SubSystemClassParserRuleCall_1 extends RuleCallToken {
+
+ public ActorContainerClass_SubSystemClassParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getActorContainerClassAccess().getSubSystemClassParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSubSystemClassRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(SubSystemClass_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule ActorContainerClass ****************/
+
+
+/************ begin Rule TypedID ****************
+ *
+ * TypedID:
+ * name=ID ":" type=Type;
+ *
+ **/
+
+// name=ID ":" type=Type
+protected class TypedID_Group extends GroupToken {
+
+ public TypedID_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTypedIDAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TypedID_TypeAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTypedIDRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// name=ID
+protected class TypedID_NameAssignment_0 extends AssignmentToken {
+
+ public TypedID_NameAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTypedIDAccess().getNameAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class TypedID_ColonKeyword_1 extends KeywordToken {
+
+ public TypedID_ColonKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTypedIDAccess().getColonKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TypedID_NameAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// type=Type
+protected class TypedID_TypeAssignment_2 extends AssignmentToken {
+
+ public TypedID_TypeAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTypedIDAccess().getTypeAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Type_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTypeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTypedIDAccess().getTypeTypeParserRuleCall_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new TypedID_ColonKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule TypedID ****************/
+
+
+/************ begin Rule FreeTypedID ****************
+ *
+ * FreeTypedID:
+ * name=ID ":" type=FreeType;
+ *
+ **/
+
+// name=ID ":" type=FreeType
+protected class FreeTypedID_Group extends GroupToken {
+
+ public FreeTypedID_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getFreeTypedIDAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new FreeTypedID_TypeAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getFreeTypedIDRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// name=ID
+protected class FreeTypedID_NameAssignment_0 extends AssignmentToken {
+
+ public FreeTypedID_NameAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getFreeTypedIDAccess().getNameAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class FreeTypedID_ColonKeyword_1 extends KeywordToken {
+
+ public FreeTypedID_ColonKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getFreeTypedIDAccess().getColonKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new FreeTypedID_NameAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// type=FreeType
+protected class FreeTypedID_TypeAssignment_2 extends AssignmentToken {
+
+ public FreeTypedID_TypeAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getFreeTypedIDAccess().getTypeAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new FreeType_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getFreeTypeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getFreeTypedIDAccess().getTypeFreeTypeParserRuleCall_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new FreeTypedID_ColonKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule FreeTypedID ****************/
+
+
+/************ begin Rule Type ****************
+ *
+ * Type:
+ * prim=PrimitiveType | type=[DataClass|FQN];
+ *
+ **/
+
+// prim=PrimitiveType | type=[DataClass|FQN]
+protected class Type_Alternatives extends AlternativesToken {
+
+ public Type_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getTypeAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Type_PrimAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Type_TypeAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTypeRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// prim=PrimitiveType
+protected class Type_PrimAssignment_0 extends AssignmentToken {
+
+ public Type_PrimAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTypeAccess().getPrimAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("prim",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("prim");
+ if(enumLitSerializer.isValid(obj.getEObject(), grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0(), value, null)) {
+ type = AssignmentType.ENUM_RULE_CALL;
+ element = grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// type=[DataClass|FQN]
+protected class Type_TypeAssignment_1 extends AssignmentToken {
+
+ public Type_TypeAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTypeAccess().getTypeAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule Type ****************/
+
+
+/************ begin Rule FreeType ****************
+ *
+ * FreeType:
+ * prim=PrimitiveType | type=ID;
+ *
+ **/
+
+// prim=PrimitiveType | type=ID
+protected class FreeType_Alternatives extends AlternativesToken {
+
+ public FreeType_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getFreeTypeAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new FreeType_PrimAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new FreeType_TypeAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getFreeTypeRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// prim=PrimitiveType
+protected class FreeType_PrimAssignment_0 extends AssignmentToken {
+
+ public FreeType_PrimAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getFreeTypeAccess().getPrimAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("prim",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("prim");
+ if(enumLitSerializer.isValid(obj.getEObject(), grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0(), value, null)) {
+ type = AssignmentType.ENUM_RULE_CALL;
+ element = grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// type=ID
+protected class FreeType_TypeAssignment_1 extends AssignmentToken {
+
+ public FreeType_TypeAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getFreeTypeAccess().getTypeAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule FreeType ****************/
+
+
+/************ begin Rule DataClass ****************
+ *
+ * // TODOHRR: define detail level language?
+ * DataClass:
+ * "DataClass" name=ID ("extends" base=[DataClass|FQN])? "{" imports+=Import* attributes+=Attribute+
+ * operations+=Operation* "}";
+ *
+ **/
+
+// "DataClass" name=ID ("extends" base=[DataClass|FQN])? "{" imports+=Import* attributes+=Attribute+ operations+=Operation*
+// "}"
+protected class DataClass_Group extends GroupToken {
+
+ public DataClass_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDataClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "DataClass"
+protected class DataClass_DataClassKeyword_0 extends KeywordToken {
+
+ public DataClass_DataClassKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getDataClassKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class DataClass_NameAssignment_1 extends AssignmentToken {
+
+ public DataClass_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_DataClassKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ("extends" base=[DataClass|FQN])?
+protected class DataClass_Group_2 extends GroupToken {
+
+ public DataClass_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_BaseAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "extends"
+protected class DataClass_ExtendsKeyword_2_0 extends KeywordToken {
+
+ public DataClass_ExtendsKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getExtendsKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// base=[DataClass|FQN]
+protected class DataClass_BaseAssignment_2_1 extends AssignmentToken {
+
+ public DataClass_BaseAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getBaseAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_ExtendsKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("base",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("base");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+// "{"
+protected class DataClass_LeftCurlyBracketKeyword_3 extends KeywordToken {
+
+ public DataClass_LeftCurlyBracketKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getLeftCurlyBracketKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new DataClass_NameAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// imports+=Import*
+protected class DataClass_ImportsAssignment_4 extends AssignmentToken {
+
+ public DataClass_ImportsAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getImportsAssignment_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Import_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("imports",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("imports");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getImportRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDataClassAccess().getImportsImportParserRuleCall_4_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new DataClass_ImportsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new DataClass_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// attributes+=Attribute+
+protected class DataClass_AttributesAssignment_5 extends AssignmentToken {
+
+ public DataClass_AttributesAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getAttributesAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("attributes",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("attributes");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getAttributeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDataClassAccess().getAttributesAttributeParserRuleCall_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new DataClass_AttributesAssignment_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new DataClass_ImportsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new DataClass_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// operations+=Operation*
+protected class DataClass_OperationsAssignment_6 extends AssignmentToken {
+
+ public DataClass_OperationsAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getOperationsAssignment_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("operations",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operations");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getOperationRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getDataClassAccess().getOperationsOperationParserRuleCall_6_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new DataClass_OperationsAssignment_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new DataClass_AttributesAssignment_5(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class DataClass_RightCurlyBracketKeyword_7 extends KeywordToken {
+
+ public DataClass_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDataClassAccess().getRightCurlyBracketKeyword_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DataClass_OperationsAssignment_6(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new DataClass_AttributesAssignment_5(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule DataClass ****************/
+
+
+/************ begin Rule Attribute ****************
+ *
+ * Attribute:
+ * "Attribute" name=ID ("[" size=INT "]")? ":" type=Type;
+ *
+ **/
+
+// "Attribute" name=ID ("[" size=INT "]")? ":" type=Type
+protected class Attribute_Group extends GroupToken {
+
+ public Attribute_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_TypeAssignment_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getAttributeRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Attribute"
+protected class Attribute_AttributeKeyword_0 extends KeywordToken {
+
+ public Attribute_AttributeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getAttributeKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class Attribute_NameAssignment_1 extends AssignmentToken {
+
+ public Attribute_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_AttributeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ("[" size=INT "]")?
+protected class Attribute_Group_2 extends GroupToken {
+
+ public Attribute_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_RightSquareBracketKeyword_2_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "["
+protected class Attribute_LeftSquareBracketKeyword_2_0 extends KeywordToken {
+
+ public Attribute_LeftSquareBracketKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getLeftSquareBracketKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// size=INT
+protected class Attribute_SizeAssignment_2_1 extends AssignmentToken {
+
+ public Attribute_SizeAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getSizeAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_LeftSquareBracketKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("size",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("size");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "]"
+protected class Attribute_RightSquareBracketKeyword_2_2 extends KeywordToken {
+
+ public Attribute_RightSquareBracketKeyword_2_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getRightSquareBracketKeyword_2_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_SizeAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// ":"
+protected class Attribute_ColonKeyword_3 extends KeywordToken {
+
+ public Attribute_ColonKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getColonKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Attribute_NameAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// type=Type
+protected class Attribute_TypeAssignment_4 extends AssignmentToken {
+
+ public Attribute_TypeAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getAttributeAccess().getTypeAssignment_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Type_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTypeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getAttributeAccess().getTypeTypeParserRuleCall_4_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Attribute_ColonKeyword_3(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule Attribute ****************/
+
+
+/************ begin Rule Operation ****************
+ *
+ * // TODOHRR: pass arguments and return value by value/reference
+ * Operation:
+ * "Operation" name=ID "(" (arguments+=FreeTypedID ("," arguments+=FreeTypedID)*)? ")" (":" returntype=FreeType)?
+ * detailCode=DetailCode;
+ *
+ **/
+
+// "Operation" name=ID "(" (arguments+=FreeTypedID ("," arguments+=FreeTypedID)*)? ")" (":" returntype=FreeType)?
+// detailCode=DetailCode
+protected class Operation_Group extends GroupToken {
+
+ public Operation_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getOperationAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_DetailCodeAssignment_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getOperationRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Operation"
+protected class Operation_OperationKeyword_0 extends KeywordToken {
+
+ public Operation_OperationKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationAccess().getOperationKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class Operation_NameAssignment_1 extends AssignmentToken {
+
+ public Operation_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_OperationKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "("
+protected class Operation_LeftParenthesisKeyword_2 extends KeywordToken {
+
+ public Operation_LeftParenthesisKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// (arguments+=FreeTypedID ("," arguments+=FreeTypedID)*)?
+protected class Operation_Group_3 extends GroupToken {
+
+ public Operation_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getOperationAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_Group_3_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Operation_ArgumentsAssignment_3_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// arguments+=FreeTypedID
+protected class Operation_ArgumentsAssignment_3_0 extends AssignmentToken {
+
+ public Operation_ArgumentsAssignment_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationAccess().getArgumentsAssignment_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new FreeTypedID_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("arguments",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("arguments");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getFreeTypedIDRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Operation_LeftParenthesisKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("," arguments+=FreeTypedID)*
+protected class Operation_Group_3_1 extends GroupToken {
+
+ public Operation_Group_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getOperationAccess().getGroup_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_ArgumentsAssignment_3_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ","
+protected class Operation_CommaKeyword_3_1_0 extends KeywordToken {
+
+ public Operation_CommaKeyword_3_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationAccess().getCommaKeyword_3_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_Group_3_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Operation_ArgumentsAssignment_3_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// arguments+=FreeTypedID
+protected class Operation_ArgumentsAssignment_3_1_1 extends AssignmentToken {
+
+ public Operation_ArgumentsAssignment_3_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationAccess().getArgumentsAssignment_3_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new FreeTypedID_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("arguments",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("arguments");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getFreeTypedIDRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Operation_CommaKeyword_3_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+// ")"
+protected class Operation_RightParenthesisKeyword_4 extends KeywordToken {
+
+ public Operation_RightParenthesisKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationAccess().getRightParenthesisKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Operation_LeftParenthesisKeyword_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// (":" returntype=FreeType)?
+protected class Operation_Group_5 extends GroupToken {
+
+ public Operation_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getOperationAccess().getGroup_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_ReturntypeAssignment_5_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ":"
+protected class Operation_ColonKeyword_5_0 extends KeywordToken {
+
+ public Operation_ColonKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getOperationAccess().getColonKeyword_5_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_RightParenthesisKeyword_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// returntype=FreeType
+protected class Operation_ReturntypeAssignment_5_1 extends AssignmentToken {
+
+ public Operation_ReturntypeAssignment_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationAccess().getReturntypeAssignment_5_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new FreeType_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("returntype",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("returntype");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getFreeTypeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getOperationAccess().getReturntypeFreeTypeParserRuleCall_5_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Operation_ColonKeyword_5_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// detailCode=DetailCode
+protected class Operation_DetailCodeAssignment_6 extends AssignmentToken {
+
+ public Operation_DetailCodeAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getOperationAccess().getDetailCodeAssignment_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("detailCode",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("detailCode");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getOperationAccess().getDetailCodeDetailCodeParserRuleCall_6_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Operation_Group_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new Operation_RightParenthesisKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule Operation ****************/
+
+
+/************ begin Rule ProtocolClass ****************
+ *
+ * // **************************************************************
+ * // protocol class
+ * ProtocolClass:
+ * "ProtocolClass" name=ID ("extends" base=[ProtocolClass|FQN])? "{" ("usercode1" userCode1=DetailCode)? ("usercode2"
+ * userCode2=DetailCode)? "incoming" "{" incomingMessages+=Message* "}" "outgoing" "{" outgoingMessages+=Message* "}"
+ * ("regular" "PortClass" regular=PortClass)? ("conjugate" "PortClass" conjugate=PortClass)? semantics=ProtocolSemantics?
+ * "}";
+ *
+ **/
+
+// "ProtocolClass" name=ID ("extends" base=[ProtocolClass|FQN])? "{" ("usercode1" userCode1=DetailCode)? ("usercode2"
+// userCode2=DetailCode)? "incoming" "{" incomingMessages+=Message* "}" "outgoing" "{" outgoingMessages+=Message* "}"
+// ("regular" "PortClass" regular=PortClass)? ("conjugate" "PortClass" conjugate=PortClass)? semantics=ProtocolSemantics?
+// "}"
+protected class ProtocolClass_Group extends GroupToken {
+
+ public ProtocolClass_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_RightCurlyBracketKeyword_17(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getProtocolClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "ProtocolClass"
+protected class ProtocolClass_ProtocolClassKeyword_0 extends KeywordToken {
+
+ public ProtocolClass_ProtocolClassKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getProtocolClassKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class ProtocolClass_NameAssignment_1 extends AssignmentToken {
+
+ public ProtocolClass_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_ProtocolClassKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ("extends" base=[ProtocolClass|FQN])?
+protected class ProtocolClass_Group_2 extends GroupToken {
+
+ public ProtocolClass_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_BaseAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "extends"
+protected class ProtocolClass_ExtendsKeyword_2_0 extends KeywordToken {
+
+ public ProtocolClass_ExtendsKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getExtendsKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// base=[ProtocolClass|FQN]
+protected class ProtocolClass_BaseAssignment_2_1 extends AssignmentToken {
+
+ public ProtocolClass_BaseAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getBaseAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_ExtendsKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("base",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("base");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+// "{"
+protected class ProtocolClass_LeftCurlyBracketKeyword_3 extends KeywordToken {
+
+ public ProtocolClass_LeftCurlyBracketKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ProtocolClass_NameAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("usercode1" userCode1=DetailCode)?
+protected class ProtocolClass_Group_4 extends GroupToken {
+
+ public ProtocolClass_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getGroup_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_UserCode1Assignment_4_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "usercode1"
+protected class ProtocolClass_Usercode1Keyword_4_0 extends KeywordToken {
+
+ public ProtocolClass_Usercode1Keyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getUsercode1Keyword_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// userCode1=DetailCode
+protected class ProtocolClass_UserCode1Assignment_4_1 extends AssignmentToken {
+
+ public ProtocolClass_UserCode1Assignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getUserCode1Assignment_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("userCode1",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("userCode1");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getUserCode1DetailCodeParserRuleCall_4_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolClass_Usercode1Keyword_4_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ("usercode2" userCode2=DetailCode)?
+protected class ProtocolClass_Group_5 extends GroupToken {
+
+ public ProtocolClass_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getGroup_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_UserCode2Assignment_5_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "usercode2"
+protected class ProtocolClass_Usercode2Keyword_5_0 extends KeywordToken {
+
+ public ProtocolClass_Usercode2Keyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getUsercode2Keyword_5_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_Group_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ProtocolClass_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// userCode2=DetailCode
+protected class ProtocolClass_UserCode2Assignment_5_1 extends AssignmentToken {
+
+ public ProtocolClass_UserCode2Assignment_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getUserCode2Assignment_5_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("userCode2",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("userCode2");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getUserCode2DetailCodeParserRuleCall_5_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolClass_Usercode2Keyword_5_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "incoming"
+protected class ProtocolClass_IncomingKeyword_6 extends KeywordToken {
+
+ public ProtocolClass_IncomingKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getIncomingKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_Group_5(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ProtocolClass_Group_4(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new ProtocolClass_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class ProtocolClass_LeftCurlyBracketKeyword_7 extends KeywordToken {
+
+ public ProtocolClass_LeftCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_IncomingKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// incomingMessages+=Message*
+protected class ProtocolClass_IncomingMessagesAssignment_8 extends AssignmentToken {
+
+ public ProtocolClass_IncomingMessagesAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getIncomingMessagesAssignment_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("incomingMessages",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("incomingMessages");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getIncomingMessagesMessageParserRuleCall_8_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolClass_IncomingMessagesAssignment_8(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ProtocolClass_LeftCurlyBracketKeyword_7(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class ProtocolClass_RightCurlyBracketKeyword_9 extends KeywordToken {
+
+ public ProtocolClass_RightCurlyBracketKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_9();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_IncomingMessagesAssignment_8(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ProtocolClass_LeftCurlyBracketKeyword_7(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "outgoing"
+protected class ProtocolClass_OutgoingKeyword_10 extends KeywordToken {
+
+ public ProtocolClass_OutgoingKeyword_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getOutgoingKeyword_10();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_RightCurlyBracketKeyword_9(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class ProtocolClass_LeftCurlyBracketKeyword_11 extends KeywordToken {
+
+ public ProtocolClass_LeftCurlyBracketKeyword_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_11();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_OutgoingKeyword_10(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// outgoingMessages+=Message*
+protected class ProtocolClass_OutgoingMessagesAssignment_12 extends AssignmentToken {
+
+ public ProtocolClass_OutgoingMessagesAssignment_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getOutgoingMessagesAssignment_12();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("outgoingMessages",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("outgoingMessages");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getOutgoingMessagesMessageParserRuleCall_12_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolClass_OutgoingMessagesAssignment_12(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ProtocolClass_LeftCurlyBracketKeyword_11(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class ProtocolClass_RightCurlyBracketKeyword_13 extends KeywordToken {
+
+ public ProtocolClass_RightCurlyBracketKeyword_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_13();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_OutgoingMessagesAssignment_12(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ProtocolClass_LeftCurlyBracketKeyword_11(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("regular" "PortClass" regular=PortClass)?
+protected class ProtocolClass_Group_14 extends GroupToken {
+
+ public ProtocolClass_Group_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getGroup_14();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_RegularAssignment_14_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "regular"
+protected class ProtocolClass_RegularKeyword_14_0 extends KeywordToken {
+
+ public ProtocolClass_RegularKeyword_14_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getRegularKeyword_14_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_RightCurlyBracketKeyword_13(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "PortClass"
+protected class ProtocolClass_PortClassKeyword_14_1 extends KeywordToken {
+
+ public ProtocolClass_PortClassKeyword_14_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getPortClassKeyword_14_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_RegularKeyword_14_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// regular=PortClass
+protected class ProtocolClass_RegularAssignment_14_2 extends AssignmentToken {
+
+ public ProtocolClass_RegularAssignment_14_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getRegularAssignment_14_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PortClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("regular",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("regular");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPortClassRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getRegularPortClassParserRuleCall_14_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolClass_PortClassKeyword_14_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ("conjugate" "PortClass" conjugate=PortClass)?
+protected class ProtocolClass_Group_15 extends GroupToken {
+
+ public ProtocolClass_Group_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getGroup_15();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_ConjugateAssignment_15_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "conjugate"
+protected class ProtocolClass_ConjugateKeyword_15_0 extends KeywordToken {
+
+ public ProtocolClass_ConjugateKeyword_15_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getConjugateKeyword_15_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_Group_14(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ProtocolClass_RightCurlyBracketKeyword_13(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "PortClass"
+protected class ProtocolClass_PortClassKeyword_15_1 extends KeywordToken {
+
+ public ProtocolClass_PortClassKeyword_15_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getPortClassKeyword_15_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_ConjugateKeyword_15_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// conjugate=PortClass
+protected class ProtocolClass_ConjugateAssignment_15_2 extends AssignmentToken {
+
+ public ProtocolClass_ConjugateAssignment_15_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getConjugateAssignment_15_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PortClass_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("conjugate",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("conjugate");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPortClassRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getConjugatePortClassParserRuleCall_15_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolClass_PortClassKeyword_15_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// semantics=ProtocolSemantics?
+protected class ProtocolClass_SemanticsAssignment_16 extends AssignmentToken {
+
+ public ProtocolClass_SemanticsAssignment_16(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getSemanticsAssignment_16();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolSemantics_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("semantics",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("semantics");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getProtocolSemanticsRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolClassAccess().getSemanticsProtocolSemanticsParserRuleCall_16_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolClass_Group_15(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ProtocolClass_Group_14(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ProtocolClass_RightCurlyBracketKeyword_13(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class ProtocolClass_RightCurlyBracketKeyword_17 extends KeywordToken {
+
+ public ProtocolClass_RightCurlyBracketKeyword_17(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_17();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolClass_SemanticsAssignment_16(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ProtocolClass_Group_15(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new ProtocolClass_Group_14(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new ProtocolClass_RightCurlyBracketKeyword_13(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule ProtocolClass ****************/
+
+
+/************ begin Rule Message ****************
+ *
+ * Message:
+ * "Message" name=ID "(" (arguments+=TypedID ("," arguments+=TypedID)*)? ")";
+ *
+ **/
+
+// "Message" name=ID "(" (arguments+=TypedID ("," arguments+=TypedID)*)? ")"
+protected class Message_Group extends GroupToken {
+
+ public Message_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getMessageAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_RightParenthesisKeyword_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getMessageRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Message"
+protected class Message_MessageKeyword_0 extends KeywordToken {
+
+ public Message_MessageKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getMessageAccess().getMessageKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class Message_NameAssignment_1 extends AssignmentToken {
+
+ public Message_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMessageAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_MessageKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "("
+protected class Message_LeftParenthesisKeyword_2 extends KeywordToken {
+
+ public Message_LeftParenthesisKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getMessageAccess().getLeftParenthesisKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// (arguments+=TypedID ("," arguments+=TypedID)*)?
+protected class Message_Group_3 extends GroupToken {
+
+ public Message_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getMessageAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_Group_3_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Message_ArgumentsAssignment_3_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// arguments+=TypedID
+protected class Message_ArgumentsAssignment_3_0 extends AssignmentToken {
+
+ public Message_ArgumentsAssignment_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMessageAccess().getArgumentsAssignment_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TypedID_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("arguments",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("arguments");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTypedIDRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Message_LeftParenthesisKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("," arguments+=TypedID)*
+protected class Message_Group_3_1 extends GroupToken {
+
+ public Message_Group_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getMessageAccess().getGroup_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_ArgumentsAssignment_3_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ","
+protected class Message_CommaKeyword_3_1_0 extends KeywordToken {
+
+ public Message_CommaKeyword_3_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getMessageAccess().getCommaKeyword_3_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_Group_3_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Message_ArgumentsAssignment_3_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// arguments+=TypedID
+protected class Message_ArgumentsAssignment_3_1_1 extends AssignmentToken {
+
+ public Message_ArgumentsAssignment_3_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMessageAccess().getArgumentsAssignment_3_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TypedID_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("arguments",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("arguments");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTypedIDRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Message_CommaKeyword_3_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+
+// ")"
+protected class Message_RightParenthesisKeyword_4 extends KeywordToken {
+
+ public Message_RightParenthesisKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getMessageAccess().getRightParenthesisKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Message_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Message_LeftParenthesisKeyword_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule Message ****************/
+
+
+/************ begin Rule PortClass ****************
+ *
+ * PortClass:
+ * "{" ("usercode" userCode=DetailCode)? (attributes+=Attribute | operations+=Operation | msgHandlers+=MessageHandler)+
+ * "}";
+ *
+ **/
+
+// "{" ("usercode" userCode=DetailCode)? (attributes+=Attribute | operations+=Operation | msgHandlers+=MessageHandler)+ "}"
+protected class PortClass_Group extends GroupToken {
+
+ public PortClass_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PortClass_RightCurlyBracketKeyword_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getPortClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "{"
+protected class PortClass_LeftCurlyBracketKeyword_0 extends KeywordToken {
+
+ public PortClass_LeftCurlyBracketKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getLeftCurlyBracketKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// ("usercode" userCode=DetailCode)?
+protected class PortClass_Group_1 extends GroupToken {
+
+ public PortClass_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PortClass_UserCodeAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "usercode"
+protected class PortClass_UsercodeKeyword_1_0 extends KeywordToken {
+
+ public PortClass_UsercodeKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getUsercodeKeyword_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PortClass_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// userCode=DetailCode
+protected class PortClass_UserCodeAssignment_1_1 extends AssignmentToken {
+
+ public PortClass_UserCodeAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getUserCodeAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("userCode",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("userCode");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getPortClassAccess().getUserCodeDetailCodeParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new PortClass_UsercodeKeyword_1_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// (attributes+=Attribute | operations+=Operation | msgHandlers+=MessageHandler)+
+protected class PortClass_Alternatives_2 extends AlternativesToken {
+
+ public PortClass_Alternatives_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getAlternatives_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PortClass_AttributesAssignment_2_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new PortClass_OperationsAssignment_2_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new PortClass_MsgHandlersAssignment_2_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// attributes+=Attribute
+protected class PortClass_AttributesAssignment_2_0 extends AssignmentToken {
+
+ public PortClass_AttributesAssignment_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getAttributesAssignment_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("attributes",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("attributes");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getAttributeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getPortClassAccess().getAttributesAttributeParserRuleCall_2_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new PortClass_Alternatives_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new PortClass_Group_1(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new PortClass_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// operations+=Operation
+protected class PortClass_OperationsAssignment_2_1 extends AssignmentToken {
+
+ public PortClass_OperationsAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getOperationsAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("operations",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operations");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getOperationRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getPortClassAccess().getOperationsOperationParserRuleCall_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new PortClass_Alternatives_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new PortClass_Group_1(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new PortClass_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// msgHandlers+=MessageHandler
+protected class PortClass_MsgHandlersAssignment_2_2 extends AssignmentToken {
+
+ public PortClass_MsgHandlersAssignment_2_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getMsgHandlersAssignment_2_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageHandler_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("msgHandlers",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("msgHandlers");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageHandlerRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getPortClassAccess().getMsgHandlersMessageHandlerParserRuleCall_2_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new PortClass_Alternatives_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new PortClass_Group_1(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new PortClass_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class PortClass_RightCurlyBracketKeyword_3 extends KeywordToken {
+
+ public PortClass_RightCurlyBracketKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPortClassAccess().getRightCurlyBracketKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new PortClass_Alternatives_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule PortClass ****************/
+
+
+/************ begin Rule MessageHandler ****************
+ *
+ * MessageHandler:
+ * "handle" msg=[Message] detailCode=DetailCode;
+ *
+ **/
+
+// "handle" msg=[Message] detailCode=DetailCode
+protected class MessageHandler_Group extends GroupToken {
+
+ public MessageHandler_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getMessageHandlerAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageHandler_DetailCodeAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getMessageHandlerRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "handle"
+protected class MessageHandler_HandleKeyword_0 extends KeywordToken {
+
+ public MessageHandler_HandleKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getMessageHandlerAccess().getHandleKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// msg=[Message]
+protected class MessageHandler_MsgAssignment_1 extends AssignmentToken {
+
+ public MessageHandler_MsgAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMessageHandlerAccess().getMsgAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageHandler_HandleKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("msg",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("msg");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// detailCode=DetailCode
+protected class MessageHandler_DetailCodeAssignment_2 extends AssignmentToken {
+
+ public MessageHandler_DetailCodeAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMessageHandlerAccess().getDetailCodeAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("detailCode",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("detailCode");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getMessageHandlerAccess().getDetailCodeDetailCodeParserRuleCall_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new MessageHandler_MsgAssignment_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule MessageHandler ****************/
+
+
+/************ begin Rule ProtocolSemantics ****************
+ *
+ * ProtocolSemantics:
+ * "semantics" "{" rules+=SemanticsRule+ "}";
+ *
+ **/
+
+// "semantics" "{" rules+=SemanticsRule+ "}"
+protected class ProtocolSemantics_Group extends GroupToken {
+
+ public ProtocolSemantics_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getProtocolSemanticsAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolSemantics_RightCurlyBracketKeyword_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getProtocolSemanticsRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "semantics"
+protected class ProtocolSemantics_SemanticsKeyword_0 extends KeywordToken {
+
+ public ProtocolSemantics_SemanticsKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolSemanticsAccess().getSemanticsKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// "{"
+protected class ProtocolSemantics_LeftCurlyBracketKeyword_1 extends KeywordToken {
+
+ public ProtocolSemantics_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolSemanticsAccess().getLeftCurlyBracketKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolSemantics_SemanticsKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// rules+=SemanticsRule+
+protected class ProtocolSemantics_RulesAssignment_2 extends AssignmentToken {
+
+ public ProtocolSemantics_RulesAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getProtocolSemanticsAccess().getRulesAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsRule_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("rules",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("rules");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSemanticsRuleRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getProtocolSemanticsAccess().getRulesSemanticsRuleParserRuleCall_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ProtocolSemantics_RulesAssignment_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ProtocolSemantics_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class ProtocolSemantics_RightCurlyBracketKeyword_3 extends KeywordToken {
+
+ public ProtocolSemantics_RightCurlyBracketKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getProtocolSemanticsAccess().getRightCurlyBracketKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ProtocolSemantics_RulesAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule ProtocolSemantics ****************/
+
+
+/************ begin Rule SemanticsRule ****************
+ *
+ * SemanticsRule:
+ * SemanticsInRule | SemanticsOutRule;
+ *
+ **/
+
+// SemanticsInRule | SemanticsOutRule
+protected class SemanticsRule_Alternatives extends AlternativesToken {
+
+ public SemanticsRule_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getSemanticsRuleAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsRule_SemanticsInRuleParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new SemanticsRule_SemanticsOutRuleParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSemanticsInRuleRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSemanticsOutRuleRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// SemanticsInRule
+protected class SemanticsRule_SemanticsInRuleParserRuleCall_0 extends RuleCallToken {
+
+ public SemanticsRule_SemanticsInRuleParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getSemanticsRuleAccess().getSemanticsInRuleParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsInRule_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSemanticsInRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(SemanticsInRule_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// SemanticsOutRule
+protected class SemanticsRule_SemanticsOutRuleParserRuleCall_1 extends RuleCallToken {
+
+ public SemanticsRule_SemanticsOutRuleParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getSemanticsRuleAccess().getSemanticsOutRuleParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsOutRule_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSemanticsOutRuleRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(SemanticsOutRule_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule SemanticsRule ****************/
+
+
+/************ begin Rule SemanticsInRule ****************
+ *
+ * SemanticsInRule:
+ * "in" msg=[Message] "->" "{" followUps+=SemanticsRule* "}";
+ *
+ **/
+
+// "in" msg=[Message] "->" "{" followUps+=SemanticsRule* "}"
+protected class SemanticsInRule_Group extends GroupToken {
+
+ public SemanticsInRule_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSemanticsInRuleAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsInRule_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSemanticsInRuleRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "in"
+protected class SemanticsInRule_InKeyword_0 extends KeywordToken {
+
+ public SemanticsInRule_InKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsInRuleAccess().getInKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// msg=[Message]
+protected class SemanticsInRule_MsgAssignment_1 extends AssignmentToken {
+
+ public SemanticsInRule_MsgAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSemanticsInRuleAccess().getMsgAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsInRule_InKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("msg",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("msg");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "->"
+protected class SemanticsInRule_HyphenMinusGreaterThanSignKeyword_2 extends KeywordToken {
+
+ public SemanticsInRule_HyphenMinusGreaterThanSignKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsInRuleAccess().getHyphenMinusGreaterThanSignKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsInRule_MsgAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class SemanticsInRule_LeftCurlyBracketKeyword_3 extends KeywordToken {
+
+ public SemanticsInRule_LeftCurlyBracketKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsInRuleAccess().getLeftCurlyBracketKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsInRule_HyphenMinusGreaterThanSignKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// followUps+=SemanticsRule*
+protected class SemanticsInRule_FollowUpsAssignment_4 extends AssignmentToken {
+
+ public SemanticsInRule_FollowUpsAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSemanticsInRuleAccess().getFollowUpsAssignment_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsRule_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("followUps",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("followUps");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSemanticsRuleRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSemanticsInRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SemanticsInRule_FollowUpsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SemanticsInRule_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class SemanticsInRule_RightCurlyBracketKeyword_5 extends KeywordToken {
+
+ public SemanticsInRule_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsInRuleAccess().getRightCurlyBracketKeyword_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsInRule_FollowUpsAssignment_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new SemanticsInRule_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule SemanticsInRule ****************/
+
+
+/************ begin Rule SemanticsOutRule ****************
+ *
+ * SemanticsOutRule:
+ * "out" msg=[Message] "->" "{" followUps+=SemanticsRule* "}";
+ *
+ **/
+
+// "out" msg=[Message] "->" "{" followUps+=SemanticsRule* "}"
+protected class SemanticsOutRule_Group extends GroupToken {
+
+ public SemanticsOutRule_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSemanticsOutRuleAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsOutRule_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSemanticsOutRuleRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "out"
+protected class SemanticsOutRule_OutKeyword_0 extends KeywordToken {
+
+ public SemanticsOutRule_OutKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsOutRuleAccess().getOutKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// msg=[Message]
+protected class SemanticsOutRule_MsgAssignment_1 extends AssignmentToken {
+
+ public SemanticsOutRule_MsgAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSemanticsOutRuleAccess().getMsgAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsOutRule_OutKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("msg",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("msg");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "->"
+protected class SemanticsOutRule_HyphenMinusGreaterThanSignKeyword_2 extends KeywordToken {
+
+ public SemanticsOutRule_HyphenMinusGreaterThanSignKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsOutRuleAccess().getHyphenMinusGreaterThanSignKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsOutRule_MsgAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class SemanticsOutRule_LeftCurlyBracketKeyword_3 extends KeywordToken {
+
+ public SemanticsOutRule_LeftCurlyBracketKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsOutRuleAccess().getLeftCurlyBracketKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsOutRule_HyphenMinusGreaterThanSignKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// followUps+=SemanticsRule*
+protected class SemanticsOutRule_FollowUpsAssignment_4 extends AssignmentToken {
+
+ public SemanticsOutRule_FollowUpsAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSemanticsOutRuleAccess().getFollowUpsAssignment_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsRule_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("followUps",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("followUps");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSemanticsRuleRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSemanticsOutRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SemanticsOutRule_FollowUpsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SemanticsOutRule_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class SemanticsOutRule_RightCurlyBracketKeyword_5 extends KeywordToken {
+
+ public SemanticsOutRule_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSemanticsOutRuleAccess().getRightCurlyBracketKeyword_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SemanticsOutRule_FollowUpsAssignment_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new SemanticsOutRule_LeftCurlyBracketKeyword_3(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule SemanticsOutRule ****************/
+
+
+/************ begin Rule ActorClass ****************
+ *
+ * // **************************************************************
+ * // actor class
+ * // some notes on ports
+ * //
+ * // in ROOM ports can be contained in the structure and/or the interface
+ * // p in s ==> internal end port
+ * // p in i ==> relay port
+ * // p in i and p in s ==> external end port
+ * // since double containment is not supported we decided to define external ports as reference to interface ports
+ * ActorClass:
+ * abstract?="abstract"? "ActorClass" name=ID ("extends" base=[ActorClass|FQN])? "{" ("Interface" "{" ifPorts+=Port*
+ * ifSPPs+=SPPRef* "}")? ("Structure" "{" ("usercode1" userCode1=DetailCode)? ("usercode2" userCode2=DetailCode)?
+ * (intPorts+=Port | extPorts+=ExternalPort)* serviceImplementations+=ServiceImplementation* strSAPs+=SAPRef*
+ * attributes+=Attribute* actorRefs+=ActorRef* bindings+=Binding* connections+=LayerConnection* "}")? ("Behavior" "{"
+ * operations+=Operation* stateMachine=StateMachine? "}")? "}";
+ *
+ **/
+
+// abstract?="abstract"? "ActorClass" name=ID ("extends" base=[ActorClass|FQN])? "{" ("Interface" "{" ifPorts+=Port*
+// ifSPPs+=SPPRef* "}")? ("Structure" "{" ("usercode1" userCode1=DetailCode)? ("usercode2" userCode2=DetailCode)?
+// (intPorts+=Port | extPorts+=ExternalPort)* serviceImplementations+=ServiceImplementation* strSAPs+=SAPRef*
+// attributes+=Attribute* actorRefs+=ActorRef* bindings+=Binding* connections+=LayerConnection* "}")? ("Behavior" "{"
+// operations+=Operation* stateMachine=StateMachine? "}")? "}"
+protected class ActorClass_Group extends GroupToken {
+
+ public ActorClass_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// abstract?="abstract"?
+protected class ActorClass_AbstractAssignment_0 extends AssignmentToken {
+
+ public ActorClass_AbstractAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getAbstractAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("abstract",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("abstract");
+ if(Boolean.TRUE.equals(value)) { // org::eclipse::xtext::impl::KeywordImpl
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "ActorClass"
+protected class ActorClass_ActorClassKeyword_1 extends KeywordToken {
+
+ public ActorClass_ActorClassKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getActorClassKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_AbstractAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class ActorClass_NameAssignment_2 extends AssignmentToken {
+
+ public ActorClass_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getNameAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_ActorClassKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ("extends" base=[ActorClass|FQN])?
+protected class ActorClass_Group_3 extends GroupToken {
+
+ public ActorClass_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_BaseAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "extends"
+protected class ActorClass_ExtendsKeyword_3_0 extends KeywordToken {
+
+ public ActorClass_ExtendsKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getExtendsKeyword_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_NameAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// base=[ActorClass|FQN]
+protected class ActorClass_BaseAssignment_3_1 extends AssignmentToken {
+
+ public ActorClass_BaseAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getBaseAssignment_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_ExtendsKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("base",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("base");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+// "{"
+protected class ActorClass_LeftCurlyBracketKeyword_4 extends KeywordToken {
+
+ public ActorClass_LeftCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_NameAssignment_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("Interface" "{" ifPorts+=Port* ifSPPs+=SPPRef* "}")?
+protected class ActorClass_Group_5 extends GroupToken {
+
+ public ActorClass_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getGroup_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_RightCurlyBracketKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "Interface"
+protected class ActorClass_InterfaceKeyword_5_0 extends KeywordToken {
+
+ public ActorClass_InterfaceKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getInterfaceKeyword_5_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_LeftCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class ActorClass_LeftCurlyBracketKeyword_5_1 extends KeywordToken {
+
+ public ActorClass_LeftCurlyBracketKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_5_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_InterfaceKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ifPorts+=Port*
+protected class ActorClass_IfPortsAssignment_5_2 extends AssignmentToken {
+
+ public ActorClass_IfPortsAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getIfPortsAssignment_5_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("ifPorts",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("ifPorts");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPortRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getIfPortsPortParserRuleCall_5_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_IfPortsAssignment_5_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ifSPPs+=SPPRef*
+protected class ActorClass_IfSPPsAssignment_5_3 extends AssignmentToken {
+
+ public ActorClass_IfSPPsAssignment_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getIfSPPsAssignment_5_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("ifSPPs",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("ifSPPs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSPPRefRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getIfSPPsSPPRefParserRuleCall_5_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_IfSPPsAssignment_5_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_IfPortsAssignment_5_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class ActorClass_RightCurlyBracketKeyword_5_4 extends KeywordToken {
+
+ public ActorClass_RightCurlyBracketKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_5_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_IfSPPsAssignment_5_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_IfPortsAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// ("Structure" "{" ("usercode1" userCode1=DetailCode)? ("usercode2" userCode2=DetailCode)? (intPorts+=Port |
+// extPorts+=ExternalPort)* serviceImplementations+=ServiceImplementation* strSAPs+=SAPRef* attributes+=Attribute*
+// actorRefs+=ActorRef* bindings+=Binding* connections+=LayerConnection* "}")?
+protected class ActorClass_Group_6 extends GroupToken {
+
+ public ActorClass_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getGroup_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_RightCurlyBracketKeyword_6_11(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "Structure"
+protected class ActorClass_StructureKeyword_6_0 extends KeywordToken {
+
+ public ActorClass_StructureKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getStructureKeyword_6_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_Group_5(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_LeftCurlyBracketKeyword_4(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class ActorClass_LeftCurlyBracketKeyword_6_1 extends KeywordToken {
+
+ public ActorClass_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_6_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_StructureKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("usercode1" userCode1=DetailCode)?
+protected class ActorClass_Group_6_2 extends GroupToken {
+
+ public ActorClass_Group_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getGroup_6_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_UserCode1Assignment_6_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "usercode1"
+protected class ActorClass_Usercode1Keyword_6_2_0 extends KeywordToken {
+
+ public ActorClass_Usercode1Keyword_6_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getUsercode1Keyword_6_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// userCode1=DetailCode
+protected class ActorClass_UserCode1Assignment_6_2_1 extends AssignmentToken {
+
+ public ActorClass_UserCode1Assignment_6_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getUserCode1Assignment_6_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("userCode1",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("userCode1");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getUserCode1DetailCodeParserRuleCall_6_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_Usercode1Keyword_6_2_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ("usercode2" userCode2=DetailCode)?
+protected class ActorClass_Group_6_3 extends GroupToken {
+
+ public ActorClass_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getGroup_6_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_UserCode2Assignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "usercode2"
+protected class ActorClass_Usercode2Keyword_6_3_0 extends KeywordToken {
+
+ public ActorClass_Usercode2Keyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getUsercode2Keyword_6_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_Group_6_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// userCode2=DetailCode
+protected class ActorClass_UserCode2Assignment_6_3_1 extends AssignmentToken {
+
+ public ActorClass_UserCode2Assignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getUserCode2Assignment_6_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("userCode2",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("userCode2");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getUserCode2DetailCodeParserRuleCall_6_3_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_Usercode2Keyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// (intPorts+=Port | extPorts+=ExternalPort)*
+protected class ActorClass_Alternatives_6_4 extends AlternativesToken {
+
+ public ActorClass_Alternatives_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getAlternatives_6_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_IntPortsAssignment_6_4_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_ExtPortsAssignment_6_4_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// intPorts+=Port
+protected class ActorClass_IntPortsAssignment_6_4_0 extends AssignmentToken {
+
+ public ActorClass_IntPortsAssignment_6_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getIntPortsAssignment_6_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("intPorts",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("intPorts");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPortRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getIntPortsPortParserRuleCall_6_4_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// extPorts+=ExternalPort
+protected class ActorClass_ExtPortsAssignment_6_4_1 extends AssignmentToken {
+
+ public ActorClass_ExtPortsAssignment_6_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getExtPortsAssignment_6_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ExternalPort_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("extPorts",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("extPorts");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExternalPortRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getExtPortsExternalPortParserRuleCall_6_4_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// serviceImplementations+=ServiceImplementation*
+protected class ActorClass_ServiceImplementationsAssignment_6_5 extends AssignmentToken {
+
+ public ActorClass_ServiceImplementationsAssignment_6_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getServiceImplementationsAssignment_6_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ServiceImplementation_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("serviceImplementations",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("serviceImplementations");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getServiceImplementationRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getServiceImplementationsServiceImplementationParserRuleCall_6_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_ServiceImplementationsAssignment_6_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 4: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// strSAPs+=SAPRef*
+protected class ActorClass_StrSAPsAssignment_6_6 extends AssignmentToken {
+
+ public ActorClass_StrSAPsAssignment_6_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getStrSAPsAssignment_6_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("strSAPs",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("strSAPs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSAPRefRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getStrSAPsSAPRefParserRuleCall_6_6_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_StrSAPsAssignment_6_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_ServiceImplementationsAssignment_6_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 4: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 5: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// attributes+=Attribute*
+protected class ActorClass_AttributesAssignment_6_7 extends AssignmentToken {
+
+ public ActorClass_AttributesAssignment_6_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getAttributesAssignment_6_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Attribute_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("attributes",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("attributes");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getAttributeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getAttributesAttributeParserRuleCall_6_7_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_AttributesAssignment_6_7(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_StrSAPsAssignment_6_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_ServiceImplementationsAssignment_6_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 4: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 5: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 6: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// actorRefs+=ActorRef*
+protected class ActorClass_ActorRefsAssignment_6_8 extends AssignmentToken {
+
+ public ActorClass_ActorRefsAssignment_6_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getActorRefsAssignment_6_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("actorRefs",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actorRefs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getActorRefRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getActorRefsActorRefParserRuleCall_6_8_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_ActorRefsAssignment_6_8(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_AttributesAssignment_6_7(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_StrSAPsAssignment_6_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_ServiceImplementationsAssignment_6_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 4: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 5: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 6: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 7: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// bindings+=Binding*
+protected class ActorClass_BindingsAssignment_6_9 extends AssignmentToken {
+
+ public ActorClass_BindingsAssignment_6_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getBindingsAssignment_6_9();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Binding_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("bindings",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("bindings");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getBindingRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getBindingsBindingParserRuleCall_6_9_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_BindingsAssignment_6_9(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_ActorRefsAssignment_6_8(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_AttributesAssignment_6_7(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_StrSAPsAssignment_6_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 4: return new ActorClass_ServiceImplementationsAssignment_6_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 5: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 6: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 7: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 8: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// connections+=LayerConnection*
+protected class ActorClass_ConnectionsAssignment_6_10 extends AssignmentToken {
+
+ public ActorClass_ConnectionsAssignment_6_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getConnectionsAssignment_6_10();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LayerConnection_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("connections",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("connections");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getLayerConnectionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getConnectionsLayerConnectionParserRuleCall_6_10_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_ConnectionsAssignment_6_10(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_BindingsAssignment_6_9(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new ActorClass_ActorRefsAssignment_6_8(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new ActorClass_AttributesAssignment_6_7(lastRuleCallOrigin, next, actIndex, consumed);
+ case 4: return new ActorClass_StrSAPsAssignment_6_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 5: return new ActorClass_ServiceImplementationsAssignment_6_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 6: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 7: return new ActorClass_Group_6_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 8: return new ActorClass_Group_6_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 9: return new ActorClass_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class ActorClass_RightCurlyBracketKeyword_6_11 extends KeywordToken {
+
+ public ActorClass_RightCurlyBracketKeyword_6_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_6_11();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_ConnectionsAssignment_6_10(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_BindingsAssignment_6_9(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new ActorClass_ActorRefsAssignment_6_8(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new ActorClass_AttributesAssignment_6_7(lastRuleCallOrigin, this, 3, inst);
+ case 4: return new ActorClass_StrSAPsAssignment_6_6(lastRuleCallOrigin, this, 4, inst);
+ case 5: return new ActorClass_ServiceImplementationsAssignment_6_5(lastRuleCallOrigin, this, 5, inst);
+ case 6: return new ActorClass_Alternatives_6_4(lastRuleCallOrigin, this, 6, inst);
+ case 7: return new ActorClass_Group_6_3(lastRuleCallOrigin, this, 7, inst);
+ case 8: return new ActorClass_Group_6_2(lastRuleCallOrigin, this, 8, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// ("Behavior" "{" operations+=Operation* stateMachine=StateMachine? "}")?
+protected class ActorClass_Group_7 extends GroupToken {
+
+ public ActorClass_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getGroup_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "Behavior"
+protected class ActorClass_BehaviorKeyword_7_0 extends KeywordToken {
+
+ public ActorClass_BehaviorKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getBehaviorKeyword_7_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_Group_6(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_Group_5(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new ActorClass_LeftCurlyBracketKeyword_4(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class ActorClass_LeftCurlyBracketKeyword_7_1 extends KeywordToken {
+
+ public ActorClass_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_7_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_BehaviorKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// operations+=Operation*
+protected class ActorClass_OperationsAssignment_7_2 extends AssignmentToken {
+
+ public ActorClass_OperationsAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getOperationsAssignment_7_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Operation_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("operations",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operations");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getOperationRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getOperationsOperationParserRuleCall_7_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_OperationsAssignment_7_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// stateMachine=StateMachine?
+protected class ActorClass_StateMachineAssignment_7_3 extends AssignmentToken {
+
+ public ActorClass_StateMachineAssignment_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getStateMachineAssignment_7_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateMachine_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("stateMachine",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("stateMachine");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getStateMachineRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getActorClassAccess().getStateMachineStateMachineParserRuleCall_7_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ActorClass_OperationsAssignment_7_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new ActorClass_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class ActorClass_RightCurlyBracketKeyword_7_4 extends KeywordToken {
+
+ public ActorClass_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_7_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_StateMachineAssignment_7_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_OperationsAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// "}"
+protected class ActorClass_RightCurlyBracketKeyword_8 extends KeywordToken {
+
+ public ActorClass_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorClass_Group_7(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorClass_Group_6(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new ActorClass_Group_5(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new ActorClass_LeftCurlyBracketKeyword_4(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule ActorClass ****************/
+
+
+/************ begin Rule InterfaceItem ****************
+ *
+ * InterfaceItem:
+ * Port | SAPRef | SPPRef;
+ *
+ **/
+
+// Port | SAPRef | SPPRef
+protected class InterfaceItem_Alternatives extends AlternativesToken {
+
+ public InterfaceItem_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getInterfaceItemAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InterfaceItem_PortParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new InterfaceItem_SAPRefParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new InterfaceItem_SPPRefParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getPortRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSAPRefRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSPPRefRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// Port
+protected class InterfaceItem_PortParserRuleCall_0 extends RuleCallToken {
+
+ public InterfaceItem_PortParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getInterfaceItemAccess().getPortParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getPortRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(Port_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// SAPRef
+protected class InterfaceItem_SAPRefParserRuleCall_1 extends RuleCallToken {
+
+ public InterfaceItem_SAPRefParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getInterfaceItemAccess().getSAPRefParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSAPRefRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(SAPRef_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// SPPRef
+protected class InterfaceItem_SPPRefParserRuleCall_2 extends RuleCallToken {
+
+ public InterfaceItem_SPPRefParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getInterfaceItemAccess().getSPPRefParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSPPRefRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(SPPRef_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule InterfaceItem ****************/
+
+
+/************ begin Rule Port ****************
+ *
+ * Port:
+ * conjugated?="conjugated"? "Port" name=ID ("[" multiplicity=INT "]")? ":" protocol=[ProtocolClass|FQN];
+ *
+ **/
+
+// conjugated?="conjugated"? "Port" name=ID ("[" multiplicity=INT "]")? ":" protocol=[ProtocolClass|FQN]
+protected class Port_Group extends GroupToken {
+
+ public Port_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPortAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_ProtocolAssignment_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getPortRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// conjugated?="conjugated"?
+protected class Port_ConjugatedAssignment_0 extends AssignmentToken {
+
+ public Port_ConjugatedAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortAccess().getConjugatedAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("conjugated",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("conjugated");
+ if(Boolean.TRUE.equals(value)) { // org::eclipse::xtext::impl::KeywordImpl
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "Port"
+protected class Port_PortKeyword_1 extends KeywordToken {
+
+ public Port_PortKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPortAccess().getPortKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_ConjugatedAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class Port_NameAssignment_2 extends AssignmentToken {
+
+ public Port_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortAccess().getNameAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_PortKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ("[" multiplicity=INT "]")?
+protected class Port_Group_3 extends GroupToken {
+
+ public Port_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getPortAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_RightSquareBracketKeyword_3_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "["
+protected class Port_LeftSquareBracketKeyword_3_0 extends KeywordToken {
+
+ public Port_LeftSquareBracketKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPortAccess().getLeftSquareBracketKeyword_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_NameAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// multiplicity=INT
+protected class Port_MultiplicityAssignment_3_1 extends AssignmentToken {
+
+ public Port_MultiplicityAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortAccess().getMultiplicityAssignment_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_LeftSquareBracketKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("multiplicity",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("multiplicity");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "]"
+protected class Port_RightSquareBracketKeyword_3_2 extends KeywordToken {
+
+ public Port_RightSquareBracketKeyword_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPortAccess().getRightSquareBracketKeyword_3_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_MultiplicityAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// ":"
+protected class Port_ColonKeyword_4 extends KeywordToken {
+
+ public Port_ColonKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getPortAccess().getColonKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Port_NameAssignment_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// protocol=[ProtocolClass|FQN]
+protected class Port_ProtocolAssignment_5 extends AssignmentToken {
+
+ public Port_ProtocolAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getPortAccess().getProtocolAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_ColonKeyword_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("protocol",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("protocol");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule Port ****************/
+
+
+/************ begin Rule ExternalPort ****************
+ *
+ * ExternalPort:
+ * "external" "Port" ifport=[Port];
+ *
+ **/
+
+// "external" "Port" ifport=[Port]
+protected class ExternalPort_Group extends GroupToken {
+
+ public ExternalPort_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getExternalPortAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ExternalPort_IfportAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getExternalPortRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "external"
+protected class ExternalPort_ExternalKeyword_0 extends KeywordToken {
+
+ public ExternalPort_ExternalKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getExternalPortAccess().getExternalKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// "Port"
+protected class ExternalPort_PortKeyword_1 extends KeywordToken {
+
+ public ExternalPort_PortKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getExternalPortAccess().getPortKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ExternalPort_ExternalKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ifport=[Port]
+protected class ExternalPort_IfportAssignment_2 extends AssignmentToken {
+
+ public ExternalPort_IfportAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getExternalPortAccess().getIfportAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ExternalPort_PortKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("ifport",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("ifport");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule ExternalPort ****************/
+
+
+/************ begin Rule SAPRef ****************
+ *
+ * SAPRef: // we omitted the SAP type (Timing/Frame/Exception)
+ * "SAP" name=ID ":" protocol=[ProtocolClass|FQN];
+ *
+ **/
+
+// // we omitted the SAP type (Timing/Frame/Exception)
+// "SAP" name=ID ":" protocol=[ProtocolClass|FQN]
+protected class SAPRef_Group extends GroupToken {
+
+ public SAPRef_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSAPRefAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPRef_ProtocolAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSAPRefRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// // we omitted the SAP type (Timing/Frame/Exception)
+// "SAP"
+protected class SAPRef_SAPKeyword_0 extends KeywordToken {
+
+ public SAPRef_SAPKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSAPRefAccess().getSAPKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class SAPRef_NameAssignment_1 extends AssignmentToken {
+
+ public SAPRef_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSAPRefAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPRef_SAPKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class SAPRef_ColonKeyword_2 extends KeywordToken {
+
+ public SAPRef_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSAPRefAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPRef_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// protocol=[ProtocolClass|FQN]
+protected class SAPRef_ProtocolAssignment_3 extends AssignmentToken {
+
+ public SAPRef_ProtocolAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSAPRefAccess().getProtocolAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPRef_ColonKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("protocol",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("protocol");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule SAPRef ****************/
+
+
+/************ begin Rule SPPRef ****************
+ *
+ * SPPRef:
+ * "SPP" name=ID ":" protocol=[ProtocolClass|FQN];
+ *
+ **/
+
+// "SPP" name=ID ":" protocol=[ProtocolClass|FQN]
+protected class SPPRef_Group extends GroupToken {
+
+ public SPPRef_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSPPRefAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPRef_ProtocolAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSPPRefRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "SPP"
+protected class SPPRef_SPPKeyword_0 extends KeywordToken {
+
+ public SPPRef_SPPKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSPPRefAccess().getSPPKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class SPPRef_NameAssignment_1 extends AssignmentToken {
+
+ public SPPRef_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSPPRefAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPRef_SPPKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class SPPRef_ColonKeyword_2 extends KeywordToken {
+
+ public SPPRef_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSPPRefAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPRef_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// protocol=[ProtocolClass|FQN]
+protected class SPPRef_ProtocolAssignment_3 extends AssignmentToken {
+
+ public SPPRef_ProtocolAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSPPRefAccess().getProtocolAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPRef_ColonKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("protocol",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("protocol");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule SPPRef ****************/
+
+
+/************ begin Rule ServiceImplementation ****************
+ *
+ * ServiceImplementation:
+ * "ServiceImplementation" "of" spp=[SPPRef];
+ *
+ **/
+
+// "ServiceImplementation" "of" spp=[SPPRef]
+protected class ServiceImplementation_Group extends GroupToken {
+
+ public ServiceImplementation_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getServiceImplementationAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ServiceImplementation_SppAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getServiceImplementationRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "ServiceImplementation"
+protected class ServiceImplementation_ServiceImplementationKeyword_0 extends KeywordToken {
+
+ public ServiceImplementation_ServiceImplementationKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getServiceImplementationAccess().getServiceImplementationKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// "of"
+protected class ServiceImplementation_OfKeyword_1 extends KeywordToken {
+
+ public ServiceImplementation_OfKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getServiceImplementationAccess().getOfKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ServiceImplementation_ServiceImplementationKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// spp=[SPPRef]
+protected class ServiceImplementation_SppAssignment_2 extends AssignmentToken {
+
+ public ServiceImplementation_SppAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getServiceImplementationAccess().getSppAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ServiceImplementation_OfKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("spp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("spp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule ServiceImplementation ****************/
+
+
+/************ begin Rule LogicalSystem ****************
+ *
+ * LogicalSystem:
+ * "LogicalSystem" name=ID "{" subSystems+=SubSystemRef+ bindings+=Binding* connections+=LayerConnection* "}";
+ *
+ **/
+
+// "LogicalSystem" name=ID "{" subSystems+=SubSystemRef+ bindings+=Binding* connections+=LayerConnection* "}"
+protected class LogicalSystem_Group extends GroupToken {
+
+ public LogicalSystem_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalSystem_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getLogicalSystemRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "LogicalSystem"
+protected class LogicalSystem_LogicalSystemKeyword_0 extends KeywordToken {
+
+ public LogicalSystem_LogicalSystemKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getLogicalSystemKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class LogicalSystem_NameAssignment_1 extends AssignmentToken {
+
+ public LogicalSystem_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalSystem_LogicalSystemKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "{"
+protected class LogicalSystem_LeftCurlyBracketKeyword_2 extends KeywordToken {
+
+ public LogicalSystem_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getLeftCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalSystem_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// subSystems+=SubSystemRef+
+protected class LogicalSystem_SubSystemsAssignment_3 extends AssignmentToken {
+
+ public LogicalSystem_SubSystemsAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getSubSystemsAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("subSystems",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("subSystems");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSubSystemRefRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getLogicalSystemAccess().getSubSystemsSubSystemRefParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new LogicalSystem_SubSystemsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new LogicalSystem_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// bindings+=Binding*
+protected class LogicalSystem_BindingsAssignment_4 extends AssignmentToken {
+
+ public LogicalSystem_BindingsAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getBindingsAssignment_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Binding_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("bindings",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("bindings");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getBindingRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getLogicalSystemAccess().getBindingsBindingParserRuleCall_4_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new LogicalSystem_BindingsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new LogicalSystem_SubSystemsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// connections+=LayerConnection*
+protected class LogicalSystem_ConnectionsAssignment_5 extends AssignmentToken {
+
+ public LogicalSystem_ConnectionsAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getConnectionsAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LayerConnection_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("connections",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("connections");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getLayerConnectionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getLogicalSystemAccess().getConnectionsLayerConnectionParserRuleCall_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new LogicalSystem_ConnectionsAssignment_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new LogicalSystem_BindingsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new LogicalSystem_SubSystemsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class LogicalSystem_RightCurlyBracketKeyword_6 extends KeywordToken {
+
+ public LogicalSystem_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLogicalSystemAccess().getRightCurlyBracketKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalSystem_ConnectionsAssignment_5(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new LogicalSystem_BindingsAssignment_4(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new LogicalSystem_SubSystemsAssignment_3(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule LogicalSystem ****************/
+
+
+/************ begin Rule ActorContainerRef ****************
+ *
+ * ActorContainerRef:
+ * SubSystemRef | ActorRef;
+ *
+ **/
+
+// SubSystemRef | ActorRef
+protected class ActorContainerRef_Alternatives extends AlternativesToken {
+
+ public ActorContainerRef_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getActorContainerRefAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorContainerRef_SubSystemRefParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorContainerRef_ActorRefParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorRefRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSubSystemRefRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// SubSystemRef
+protected class ActorContainerRef_SubSystemRefParserRuleCall_0 extends RuleCallToken {
+
+ public ActorContainerRef_SubSystemRefParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getActorContainerRefAccess().getSubSystemRefParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSubSystemRefRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(SubSystemRef_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// ActorRef
+protected class ActorContainerRef_ActorRefParserRuleCall_1 extends RuleCallToken {
+
+ public ActorContainerRef_ActorRefParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getActorContainerRefAccess().getActorRefParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorRefRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ActorRef_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule ActorContainerRef ****************/
+
+
+/************ begin Rule SubSystemRef ****************
+ *
+ * SubSystemRef:
+ * "SubSystemRef" name=ID ":" type=[SubSystemClass|FQN];
+ *
+ **/
+
+// "SubSystemRef" name=ID ":" type=[SubSystemClass|FQN]
+protected class SubSystemRef_Group extends GroupToken {
+
+ public SubSystemRef_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSubSystemRefAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemRef_TypeAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSubSystemRefRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "SubSystemRef"
+protected class SubSystemRef_SubSystemRefKeyword_0 extends KeywordToken {
+
+ public SubSystemRef_SubSystemRefKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSubSystemRefAccess().getSubSystemRefKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class SubSystemRef_NameAssignment_1 extends AssignmentToken {
+
+ public SubSystemRef_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemRefAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemRef_SubSystemRefKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class SubSystemRef_ColonKeyword_2 extends KeywordToken {
+
+ public SubSystemRef_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSubSystemRefAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemRef_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// type=[SubSystemClass|FQN]
+protected class SubSystemRef_TypeAssignment_3 extends AssignmentToken {
+
+ public SubSystemRef_TypeAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemRefAccess().getTypeAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemRef_ColonKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule SubSystemRef ****************/
+
+
+/************ begin Rule SubSystemClass ****************
+ *
+ * SubSystemClass:
+ * "SubSystemClass" name=ID "{" relayPorts+=Port* ifSPPs+=SPPRef* actorRefs+=ActorRef+ bindings+=Binding*
+ * connections+=LayerConnection* threads+=LogicalThread* "}";
+ *
+ **/
+
+// "SubSystemClass" name=ID "{" relayPorts+=Port* ifSPPs+=SPPRef* actorRefs+=ActorRef+ bindings+=Binding*
+// connections+=LayerConnection* threads+=LogicalThread* "}"
+protected class SubSystemClass_Group extends GroupToken {
+
+ public SubSystemClass_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemClass_RightCurlyBracketKeyword_9(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSubSystemClassRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "SubSystemClass"
+protected class SubSystemClass_SubSystemClassKeyword_0 extends KeywordToken {
+
+ public SubSystemClass_SubSystemClassKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getSubSystemClassKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class SubSystemClass_NameAssignment_1 extends AssignmentToken {
+
+ public SubSystemClass_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemClass_SubSystemClassKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "{"
+protected class SubSystemClass_LeftCurlyBracketKeyword_2 extends KeywordToken {
+
+ public SubSystemClass_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getLeftCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemClass_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// relayPorts+=Port*
+protected class SubSystemClass_RelayPortsAssignment_3 extends AssignmentToken {
+
+ public SubSystemClass_RelayPortsAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getRelayPortsAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Port_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("relayPorts",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relayPorts");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getPortRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSubSystemClassAccess().getRelayPortsPortParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SubSystemClass_RelayPortsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SubSystemClass_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ifSPPs+=SPPRef*
+protected class SubSystemClass_IfSPPsAssignment_4 extends AssignmentToken {
+
+ public SubSystemClass_IfSPPsAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getIfSPPsAssignment_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("ifSPPs",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("ifSPPs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSPPRefRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSubSystemClassAccess().getIfSPPsSPPRefParserRuleCall_4_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SubSystemClass_IfSPPsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SubSystemClass_RelayPortsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new SubSystemClass_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// actorRefs+=ActorRef+
+protected class SubSystemClass_ActorRefsAssignment_5 extends AssignmentToken {
+
+ public SubSystemClass_ActorRefsAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getActorRefsAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorRef_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("actorRefs",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actorRefs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getActorRefRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSubSystemClassAccess().getActorRefsActorRefParserRuleCall_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SubSystemClass_ActorRefsAssignment_5(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SubSystemClass_IfSPPsAssignment_4(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new SubSystemClass_RelayPortsAssignment_3(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new SubSystemClass_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// bindings+=Binding*
+protected class SubSystemClass_BindingsAssignment_6 extends AssignmentToken {
+
+ public SubSystemClass_BindingsAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getBindingsAssignment_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Binding_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("bindings",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("bindings");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getBindingRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSubSystemClassAccess().getBindingsBindingParserRuleCall_6_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SubSystemClass_BindingsAssignment_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SubSystemClass_ActorRefsAssignment_5(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// connections+=LayerConnection*
+protected class SubSystemClass_ConnectionsAssignment_7 extends AssignmentToken {
+
+ public SubSystemClass_ConnectionsAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getConnectionsAssignment_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LayerConnection_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("connections",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("connections");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getLayerConnectionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSubSystemClassAccess().getConnectionsLayerConnectionParserRuleCall_7_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SubSystemClass_ConnectionsAssignment_7(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SubSystemClass_BindingsAssignment_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new SubSystemClass_ActorRefsAssignment_5(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// threads+=LogicalThread*
+protected class SubSystemClass_ThreadsAssignment_8 extends AssignmentToken {
+
+ public SubSystemClass_ThreadsAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getThreadsAssignment_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalThread_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("threads",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("threads");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getLogicalThreadRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getSubSystemClassAccess().getThreadsLogicalThreadParserRuleCall_8_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new SubSystemClass_ThreadsAssignment_8(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new SubSystemClass_ConnectionsAssignment_7(lastRuleCallOrigin, next, actIndex, consumed);
+ case 2: return new SubSystemClass_BindingsAssignment_6(lastRuleCallOrigin, next, actIndex, consumed);
+ case 3: return new SubSystemClass_ActorRefsAssignment_5(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "}"
+protected class SubSystemClass_RightCurlyBracketKeyword_9 extends KeywordToken {
+
+ public SubSystemClass_RightCurlyBracketKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSubSystemClassAccess().getRightCurlyBracketKeyword_9();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubSystemClass_ThreadsAssignment_8(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new SubSystemClass_ConnectionsAssignment_7(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new SubSystemClass_BindingsAssignment_6(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new SubSystemClass_ActorRefsAssignment_5(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule SubSystemClass ****************/
+
+
+/************ begin Rule LogicalThread ****************
+ *
+ * LogicalThread:
+ * "LogicalThread" name=ID "{" instances+=ActorInstancePath ("," instances+=ActorInstancePath)* "}";
+ *
+ **/
+
+// "LogicalThread" name=ID "{" instances+=ActorInstancePath ("," instances+=ActorInstancePath)* "}"
+protected class LogicalThread_Group extends GroupToken {
+
+ public LogicalThread_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalThread_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getLogicalThreadRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "LogicalThread"
+protected class LogicalThread_LogicalThreadKeyword_0 extends KeywordToken {
+
+ public LogicalThread_LogicalThreadKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getLogicalThreadKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class LogicalThread_NameAssignment_1 extends AssignmentToken {
+
+ public LogicalThread_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalThread_LogicalThreadKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "{"
+protected class LogicalThread_LeftCurlyBracketKeyword_2 extends KeywordToken {
+
+ public LogicalThread_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getLeftCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalThread_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// instances+=ActorInstancePath
+protected class LogicalThread_InstancesAssignment_3 extends AssignmentToken {
+
+ public LogicalThread_InstancesAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getInstancesAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorInstancePath_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("instances",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("instances");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getActorInstancePathRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new LogicalThread_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("," instances+=ActorInstancePath)*
+protected class LogicalThread_Group_4 extends GroupToken {
+
+ public LogicalThread_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getGroup_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalThread_InstancesAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ","
+protected class LogicalThread_CommaKeyword_4_0 extends KeywordToken {
+
+ public LogicalThread_CommaKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getCommaKeyword_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalThread_Group_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new LogicalThread_InstancesAssignment_3(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// instances+=ActorInstancePath
+protected class LogicalThread_InstancesAssignment_4_1 extends AssignmentToken {
+
+ public LogicalThread_InstancesAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getInstancesAssignment_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorInstancePath_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("instances",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("instances");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getActorInstancePathRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_4_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new LogicalThread_CommaKeyword_4_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class LogicalThread_RightCurlyBracketKeyword_5 extends KeywordToken {
+
+ public LogicalThread_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLogicalThreadAccess().getRightCurlyBracketKeyword_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LogicalThread_Group_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new LogicalThread_InstancesAssignment_3(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule LogicalThread ****************/
+
+
+/************ begin Rule ActorInstancePath ****************
+ *
+ * ActorInstancePath:
+ * segments+=ID ("." segments+=ID)*;
+ *
+ **/
+
+// segments+=ID ("." segments+=ID)*
+protected class ActorInstancePath_Group extends GroupToken {
+
+ public ActorInstancePath_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorInstancePathAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorInstancePath_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorInstancePath_SegmentsAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorInstancePathRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// segments+=ID
+protected class ActorInstancePath_SegmentsAssignment_0 extends AssignmentToken {
+
+ public ActorInstancePath_SegmentsAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("segments",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("segments");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ("." segments+=ID)*
+protected class ActorInstancePath_Group_1 extends GroupToken {
+
+ public ActorInstancePath_Group_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorInstancePathAccess().getGroup_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorInstancePath_SegmentsAssignment_1_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "."
+protected class ActorInstancePath_FullStopKeyword_1_0 extends KeywordToken {
+
+ public ActorInstancePath_FullStopKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorInstancePathAccess().getFullStopKeyword_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorInstancePath_Group_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ActorInstancePath_SegmentsAssignment_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// segments+=ID
+protected class ActorInstancePath_SegmentsAssignment_1_1 extends AssignmentToken {
+
+ public ActorInstancePath_SegmentsAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorInstancePathAccess().getSegmentsAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorInstancePath_FullStopKeyword_1_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("segments",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("segments");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+
+/************ end Rule ActorInstancePath ****************/
+
+
+/************ begin Rule Binding ****************
+ *
+ * // TODOHRR: bindings for replicated ports
+ * // (1) declare several bindings
+ * // (2) use a notation with 1 to n bindings
+ * Binding:
+ * "Binding" endpoint1=BindingEndPoint "and" endpoint2=BindingEndPoint;
+ *
+ **/
+
+// "Binding" endpoint1=BindingEndPoint "and" endpoint2=BindingEndPoint
+protected class Binding_Group extends GroupToken {
+
+ public Binding_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getBindingAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Binding_Endpoint2Assignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBindingRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Binding"
+protected class Binding_BindingKeyword_0 extends KeywordToken {
+
+ public Binding_BindingKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBindingAccess().getBindingKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// endpoint1=BindingEndPoint
+protected class Binding_Endpoint1Assignment_1 extends AssignmentToken {
+
+ public Binding_Endpoint1Assignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBindingAccess().getEndpoint1Assignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BindingEndPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("endpoint1",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("endpoint1");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getBindingEndPointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getBindingAccess().getEndpoint1BindingEndPointParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Binding_BindingKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "and"
+protected class Binding_AndKeyword_2 extends KeywordToken {
+
+ public Binding_AndKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBindingAccess().getAndKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Binding_Endpoint1Assignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// endpoint2=BindingEndPoint
+protected class Binding_Endpoint2Assignment_3 extends AssignmentToken {
+
+ public Binding_Endpoint2Assignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBindingAccess().getEndpoint2Assignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BindingEndPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("endpoint2",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("endpoint2");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getBindingEndPointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getBindingAccess().getEndpoint2BindingEndPointParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Binding_AndKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule Binding ****************/
+
+
+/************ begin Rule BindingEndPoint ****************
+ *
+ * BindingEndPoint:
+ * (actorRef=[ActorContainerRef] ".")? port=[Port];
+ *
+ **/
+
+// (actorRef=[ActorContainerRef] ".")? port=[Port]
+protected class BindingEndPoint_Group extends GroupToken {
+
+ public BindingEndPoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getBindingEndPointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BindingEndPoint_PortAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBindingEndPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// (actorRef=[ActorContainerRef] ".")?
+protected class BindingEndPoint_Group_0 extends GroupToken {
+
+ public BindingEndPoint_Group_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getBindingEndPointAccess().getGroup_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BindingEndPoint_FullStopKeyword_0_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// actorRef=[ActorContainerRef]
+protected class BindingEndPoint_ActorRefAssignment_0_0 extends AssignmentToken {
+
+ public BindingEndPoint_ActorRefAssignment_0_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBindingEndPointAccess().getActorRefAssignment_0_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("actorRef",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actorRef");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "."
+protected class BindingEndPoint_FullStopKeyword_0_1 extends KeywordToken {
+
+ public BindingEndPoint_FullStopKeyword_0_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBindingEndPointAccess().getFullStopKeyword_0_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BindingEndPoint_ActorRefAssignment_0_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+// port=[Port]
+protected class BindingEndPoint_PortAssignment_1 extends AssignmentToken {
+
+ public BindingEndPoint_PortAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBindingEndPointAccess().getPortAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BindingEndPoint_Group_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("port",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("port");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule BindingEndPoint ****************/
+
+
+/************ begin Rule LayerConnection ****************
+ *
+ * LayerConnection:
+ * "LayerConnection" from=SAPoint "satisfied_by" to=SPPoint;
+ *
+ **/
+
+// "LayerConnection" from=SAPoint "satisfied_by" to=SPPoint
+protected class LayerConnection_Group extends GroupToken {
+
+ public LayerConnection_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getLayerConnectionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LayerConnection_ToAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getLayerConnectionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "LayerConnection"
+protected class LayerConnection_LayerConnectionKeyword_0 extends KeywordToken {
+
+ public LayerConnection_LayerConnectionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLayerConnectionAccess().getLayerConnectionKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// from=SAPoint
+protected class LayerConnection_FromAssignment_1 extends AssignmentToken {
+
+ public LayerConnection_FromAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLayerConnectionAccess().getFromAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPoint_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("from",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("from");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSAPointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getLayerConnectionAccess().getFromSAPointParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new LayerConnection_LayerConnectionKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "satisfied_by"
+protected class LayerConnection_Satisfied_byKeyword_2 extends KeywordToken {
+
+ public LayerConnection_Satisfied_byKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getLayerConnectionAccess().getSatisfied_byKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new LayerConnection_FromAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// to=SPPoint
+protected class LayerConnection_ToAssignment_3 extends AssignmentToken {
+
+ public LayerConnection_ToAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getLayerConnectionAccess().getToAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("to",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("to");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSPPointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getLayerConnectionAccess().getToSPPointParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new LayerConnection_Satisfied_byKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule LayerConnection ****************/
+
+
+/************ begin Rule SAPoint ****************
+ *
+ * SAPoint:
+ * RefSAPoint | RelaySAPoint;
+ *
+ **/
+
+// RefSAPoint | RelaySAPoint
+protected class SAPoint_Alternatives extends AlternativesToken {
+
+ public SAPoint_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getSAPointAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SAPoint_RefSAPointParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new SAPoint_RelaySAPointParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRefSAPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRelaySAPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// RefSAPoint
+protected class SAPoint_RefSAPointParserRuleCall_0 extends RuleCallToken {
+
+ public SAPoint_RefSAPointParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getSAPointAccess().getRefSAPointParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefSAPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRefSAPointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(RefSAPoint_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// RelaySAPoint
+protected class SAPoint_RelaySAPointParserRuleCall_1 extends RuleCallToken {
+
+ public SAPoint_RelaySAPointParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getSAPointAccess().getRelaySAPointParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelaySAPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRelaySAPointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(RelaySAPoint_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule SAPoint ****************/
+
+
+/************ begin Rule RefSAPoint ****************
+ *
+ * RefSAPoint: // satisfies a sub actor
+ * "ref" ref=[ActorContainerRef];
+ *
+ **/
+
+// // satisfies a sub actor
+// "ref" ref=[ActorContainerRef]
+protected class RefSAPoint_Group extends GroupToken {
+
+ public RefSAPoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRefSAPointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefSAPoint_RefAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRefSAPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// // satisfies a sub actor
+// "ref"
+protected class RefSAPoint_RefKeyword_0 extends KeywordToken {
+
+ public RefSAPoint_RefKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRefSAPointAccess().getRefKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// ref=[ActorContainerRef]
+protected class RefSAPoint_RefAssignment_1 extends AssignmentToken {
+
+ public RefSAPoint_RefAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRefSAPointAccess().getRefAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefSAPoint_RefKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("ref",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("ref");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule RefSAPoint ****************/
+
+
+/************ begin Rule RelaySAPoint ****************
+ *
+ * RelaySAPoint: // relays from own interface
+ * "relay_sap" relay=[SPPRef];
+ *
+ **/
+
+// // relays from own interface
+// "relay_sap" relay=[SPPRef]
+protected class RelaySAPoint_Group extends GroupToken {
+
+ public RelaySAPoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRelaySAPointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelaySAPoint_RelayAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRelaySAPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// // relays from own interface
+// "relay_sap"
+protected class RelaySAPoint_Relay_sapKeyword_0 extends KeywordToken {
+
+ public RelaySAPoint_Relay_sapKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRelaySAPointAccess().getRelay_sapKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// relay=[SPPRef]
+protected class RelaySAPoint_RelayAssignment_1 extends AssignmentToken {
+
+ public RelaySAPoint_RelayAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRelaySAPointAccess().getRelayAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RelaySAPoint_Relay_sapKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("relay",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relay");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule RelaySAPoint ****************/
+
+
+/************ begin Rule SPPoint ****************
+ *
+ * SPPoint:
+ * ref=[ActorContainerRef] "." service=[SPPRef];
+ *
+ **/
+
+// ref=[ActorContainerRef] "." service=[SPPRef]
+protected class SPPoint_Group extends GroupToken {
+
+ public SPPoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSPPointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPoint_ServiceAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSPPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// ref=[ActorContainerRef]
+protected class SPPoint_RefAssignment_0 extends AssignmentToken {
+
+ public SPPoint_RefAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSPPointAccess().getRefAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("ref",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("ref");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "."
+protected class SPPoint_FullStopKeyword_1 extends KeywordToken {
+
+ public SPPoint_FullStopKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSPPointAccess().getFullStopKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPoint_RefAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// service=[SPPRef]
+protected class SPPoint_ServiceAssignment_2 extends AssignmentToken {
+
+ public SPPoint_ServiceAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSPPointAccess().getServiceAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SPPoint_FullStopKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("service",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("service");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule SPPoint ****************/
+
+
+/************ begin Rule ActorRef ****************
+ *
+ * // TODOHRR: support replicated actors
+ * ActorRef:
+ * "ActorRef" name=ID ":" type=[ActorClass|FQN];
+ *
+ **/
+
+// "ActorRef" name=ID ":" type=[ActorClass|FQN]
+protected class ActorRef_Group extends GroupToken {
+
+ public ActorRef_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getActorRefAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorRef_TypeAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getActorRefRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "ActorRef"
+protected class ActorRef_ActorRefKeyword_0 extends KeywordToken {
+
+ public ActorRef_ActorRefKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorRefAccess().getActorRefKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class ActorRef_NameAssignment_1 extends AssignmentToken {
+
+ public ActorRef_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorRefAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorRef_ActorRefKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class ActorRef_ColonKeyword_2 extends KeywordToken {
+
+ public ActorRef_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getActorRefAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorRef_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// type=[ActorClass|FQN]
+protected class ActorRef_TypeAssignment_3 extends AssignmentToken {
+
+ public ActorRef_TypeAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getActorRefAccess().getTypeAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ActorRef_ColonKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule ActorRef ****************/
+
+
+/************ begin Rule StateGraphNode ****************
+ *
+ * // **************************************************************
+ * // state machine
+ * StateGraphNode:
+ * State | ChoicePoint | TrPoint;
+ *
+ **/
+
+// State | ChoicePoint | TrPoint
+protected class StateGraphNode_Alternatives extends AlternativesToken {
+
+ public StateGraphNode_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getStateGraphNodeAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraphNode_StateParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new StateGraphNode_ChoicePointParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new StateGraphNode_TrPointParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBaseStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getChoicePointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getEntryPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getExitPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRefinedStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTransitionPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// State
+protected class StateGraphNode_StateParserRuleCall_0 extends RuleCallToken {
+
+ public StateGraphNode_StateParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStateGraphNodeAccess().getStateParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new State_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBaseStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRefinedStateRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(State_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// ChoicePoint
+protected class StateGraphNode_ChoicePointParserRuleCall_1 extends RuleCallToken {
+
+ public StateGraphNode_ChoicePointParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStateGraphNodeAccess().getChoicePointParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicePoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getChoicePointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ChoicePoint_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// TrPoint
+protected class StateGraphNode_TrPointParserRuleCall_2 extends RuleCallToken {
+
+ public StateGraphNode_TrPointParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStateGraphNodeAccess().getTrPointParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TrPoint_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getEntryPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getExitPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTransitionPointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(TrPoint_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule StateGraphNode ****************/
+
+
+/************ begin Rule StateGraphItem ****************
+ *
+ * StateGraphItem:
+ * StateGraphNode | Transition;
+ *
+ **/
+
+// StateGraphNode | Transition
+protected class StateGraphItem_Alternatives extends AlternativesToken {
+
+ public StateGraphItem_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getStateGraphItemAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraphItem_StateGraphNodeParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new StateGraphItem_TransitionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBaseStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getCPBranchTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getChoicePointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getContinuationTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getEntryPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getExitPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getInitialTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRefinedStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTransitionPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTriggeredTransitionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// StateGraphNode
+protected class StateGraphItem_StateGraphNodeParserRuleCall_0 extends RuleCallToken {
+
+ public StateGraphItem_StateGraphNodeParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStateGraphItemAccess().getStateGraphNodeParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraphNode_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBaseStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getChoicePointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getEntryPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getExitPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRefinedStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTransitionPointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(StateGraphNode_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// Transition
+protected class StateGraphItem_TransitionParserRuleCall_1 extends RuleCallToken {
+
+ public StateGraphItem_TransitionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStateGraphItemAccess().getTransitionParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Transition_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCPBranchTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getContinuationTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getInitialTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTriggeredTransitionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(Transition_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule StateGraphItem ****************/
+
+
+/************ begin Rule State ****************
+ *
+ * State:
+ * BaseState | RefinedState;
+ *
+ **/
+
+// BaseState | RefinedState
+protected class State_Alternatives extends AlternativesToken {
+
+ public State_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getStateAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new State_BaseStateParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new State_RefinedStateParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBaseStateRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getRefinedStateRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// BaseState
+protected class State_BaseStateParserRuleCall_0 extends RuleCallToken {
+
+ public State_BaseStateParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStateAccess().getBaseStateParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBaseStateRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(BaseState_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// RefinedState
+protected class State_RefinedStateParserRuleCall_1 extends RuleCallToken {
+
+ public State_RefinedStateParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getStateAccess().getRefinedStateParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRefinedStateRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(RefinedState_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule State ****************/
+
+
+/************ begin Rule StateGraph ****************
+ *
+ * StateGraph:
+ * "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}";
+ *
+ **/
+
+// "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}"
+protected class StateGraph_Group extends GroupToken {
+
+ public StateGraph_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraph_RightCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getStateGraphRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "{"
+protected class StateGraph_LeftCurlyBracketKeyword_0 extends KeywordToken {
+
+ public StateGraph_LeftCurlyBracketKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getLeftCurlyBracketKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+
+protected class StateGraph_Alternatives_1 extends AlternativesToken {
+
+ public StateGraph_Alternatives_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getAlternatives_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraph_StatesAssignment_1_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new StateGraph_TrPointsAssignment_1_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new StateGraph_ChPointsAssignment_1_2(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new StateGraph_TransitionsAssignment_1_3(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// states+=State
+protected class StateGraph_StatesAssignment_1_0 extends AssignmentToken {
+
+ public StateGraph_StatesAssignment_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getStatesAssignment_1_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new State_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("states",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("states");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getStateRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateGraphAccess().getStatesStateParserRuleCall_1_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateGraph_Alternatives_1(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateGraph_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// trPoints+=TrPoint
+protected class StateGraph_TrPointsAssignment_1_1 extends AssignmentToken {
+
+ public StateGraph_TrPointsAssignment_1_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getTrPointsAssignment_1_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TrPoint_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("trPoints",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("trPoints");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTrPointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateGraphAccess().getTrPointsTrPointParserRuleCall_1_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateGraph_Alternatives_1(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateGraph_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// chPoints+=ChoicePoint
+protected class StateGraph_ChPointsAssignment_1_2 extends AssignmentToken {
+
+ public StateGraph_ChPointsAssignment_1_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getChPointsAssignment_1_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicePoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("chPoints",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("chPoints");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getChoicePointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateGraphAccess().getChPointsChoicePointParserRuleCall_1_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateGraph_Alternatives_1(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateGraph_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// transitions+=Transition
+protected class StateGraph_TransitionsAssignment_1_3 extends AssignmentToken {
+
+ public StateGraph_TransitionsAssignment_1_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getTransitionsAssignment_1_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Transition_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("transitions",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("transitions");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateGraphAccess().getTransitionsTransitionParserRuleCall_1_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateGraph_Alternatives_1(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateGraph_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class StateGraph_RightCurlyBracketKeyword_2 extends KeywordToken {
+
+ public StateGraph_RightCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getStateGraphAccess().getRightCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraph_Alternatives_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule StateGraph ****************/
+
+
+/************ begin Rule StateMachine ****************
+ *
+ * StateMachine returns StateGraph:
+ * "StateMachine" "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}";
+ *
+ **/
+
+// "StateMachine" "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}"
+protected class StateMachine_Group extends GroupToken {
+
+ public StateMachine_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateMachine_RightCurlyBracketKeyword_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getStateMachineRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "StateMachine"
+protected class StateMachine_StateMachineKeyword_0 extends KeywordToken {
+
+ public StateMachine_StateMachineKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getStateMachineKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// "{"
+protected class StateMachine_LeftCurlyBracketKeyword_1 extends KeywordToken {
+
+ public StateMachine_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateMachine_StateMachineKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+
+protected class StateMachine_Alternatives_2 extends AlternativesToken {
+
+ public StateMachine_Alternatives_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getAlternatives_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateMachine_StatesAssignment_2_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new StateMachine_TrPointsAssignment_2_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new StateMachine_ChPointsAssignment_2_2(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new StateMachine_TransitionsAssignment_2_3(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// states+=State
+protected class StateMachine_StatesAssignment_2_0 extends AssignmentToken {
+
+ public StateMachine_StatesAssignment_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getStatesAssignment_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new State_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("states",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("states");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getStateRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateMachineAccess().getStatesStateParserRuleCall_2_0_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateMachine_Alternatives_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateMachine_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// trPoints+=TrPoint
+protected class StateMachine_TrPointsAssignment_2_1 extends AssignmentToken {
+
+ public StateMachine_TrPointsAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getTrPointsAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TrPoint_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("trPoints",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("trPoints");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTrPointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateMachineAccess().getTrPointsTrPointParserRuleCall_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateMachine_Alternatives_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateMachine_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// chPoints+=ChoicePoint
+protected class StateMachine_ChPointsAssignment_2_2 extends AssignmentToken {
+
+ public StateMachine_ChPointsAssignment_2_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getChPointsAssignment_2_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicePoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("chPoints",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("chPoints");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getChoicePointRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateMachineAccess().getChPointsChoicePointParserRuleCall_2_2_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateMachine_Alternatives_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateMachine_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// transitions+=Transition
+protected class StateMachine_TransitionsAssignment_2_3 extends AssignmentToken {
+
+ public StateMachine_TransitionsAssignment_2_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getTransitionsAssignment_2_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Transition_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("transitions",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("transitions");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_2_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new StateMachine_Alternatives_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new StateMachine_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class StateMachine_RightCurlyBracketKeyword_3 extends KeywordToken {
+
+ public StateMachine_RightCurlyBracketKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateMachine_Alternatives_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule StateMachine ****************/
+
+
+/************ begin Rule BaseState ****************
+ *
+ * // entry and exit code have multiplicity many: in BaseState to be able to add derived class codes here,
+ * // in RefinedState to still have both features in the common base class State
+ * BaseState:
+ * "State" name=ID "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph" subgraph=StateGraph)?
+ * "}";
+ *
+ **/
+
+// "State" name=ID "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph" subgraph=StateGraph)? "}"
+protected class BaseState_Group extends GroupToken {
+
+ public BaseState_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getBaseStateRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "State"
+protected class BaseState_StateKeyword_0 extends KeywordToken {
+
+ public BaseState_StateKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getStateKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class BaseState_NameAssignment_1 extends AssignmentToken {
+
+ public BaseState_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_StateKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "{"
+protected class BaseState_LeftCurlyBracketKeyword_2 extends KeywordToken {
+
+ public BaseState_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getLeftCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("entry" entryCode=DetailCode)?
+protected class BaseState_Group_3 extends GroupToken {
+
+ public BaseState_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_EntryCodeAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "entry"
+protected class BaseState_EntryKeyword_3_0 extends KeywordToken {
+
+ public BaseState_EntryKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getEntryKeyword_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// entryCode=DetailCode
+protected class BaseState_EntryCodeAssignment_3_1 extends AssignmentToken {
+
+ public BaseState_EntryCodeAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getEntryCodeAssignment_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("entryCode",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("entryCode");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getBaseStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new BaseState_EntryKeyword_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ("exit" exitCode=DetailCode)?
+protected class BaseState_Group_4 extends GroupToken {
+
+ public BaseState_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getGroup_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_ExitCodeAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "exit"
+protected class BaseState_ExitKeyword_4_0 extends KeywordToken {
+
+ public BaseState_ExitKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getExitKeyword_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new BaseState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// exitCode=DetailCode
+protected class BaseState_ExitCodeAssignment_4_1 extends AssignmentToken {
+
+ public BaseState_ExitCodeAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getExitCodeAssignment_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exitCode",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exitCode");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getBaseStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new BaseState_ExitKeyword_4_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ("subgraph" subgraph=StateGraph)?
+protected class BaseState_Group_5 extends GroupToken {
+
+ public BaseState_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getGroup_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_SubgraphAssignment_5_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "subgraph"
+protected class BaseState_SubgraphKeyword_5_0 extends KeywordToken {
+
+ public BaseState_SubgraphKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getSubgraphKeyword_5_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_Group_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new BaseState_Group_3(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new BaseState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// subgraph=StateGraph
+protected class BaseState_SubgraphAssignment_5_1 extends AssignmentToken {
+
+ public BaseState_SubgraphAssignment_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getSubgraphAssignment_5_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraph_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("subgraph",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("subgraph");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getStateGraphRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getBaseStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new BaseState_SubgraphKeyword_5_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class BaseState_RightCurlyBracketKeyword_6 extends KeywordToken {
+
+ public BaseState_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getBaseStateAccess().getRightCurlyBracketKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new BaseState_Group_5(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new BaseState_Group_4(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new BaseState_Group_3(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new BaseState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule BaseState ****************/
+
+
+/************ begin Rule RefinedState ****************
+ *
+ * RefinedState:
+ * "RefinedState" base=[BaseState|FQN] "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph"
+ * subgraph=StateGraph)? "}";
+ *
+ **/
+
+// "RefinedState" base=[BaseState|FQN] "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph"
+// subgraph=StateGraph)? "}"
+protected class RefinedState_Group extends GroupToken {
+
+ public RefinedState_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getRefinedStateRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "RefinedState"
+protected class RefinedState_RefinedStateKeyword_0 extends KeywordToken {
+
+ public RefinedState_RefinedStateKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getRefinedStateKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// base=[BaseState|FQN]
+protected class RefinedState_BaseAssignment_1 extends AssignmentToken {
+
+ public RefinedState_BaseAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getBaseAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_RefinedStateKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("base",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("base");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "{"
+protected class RefinedState_LeftCurlyBracketKeyword_2 extends KeywordToken {
+
+ public RefinedState_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getLeftCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_BaseAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("entry" entryCode=DetailCode)?
+protected class RefinedState_Group_3 extends GroupToken {
+
+ public RefinedState_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getGroup_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_EntryCodeAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "entry"
+protected class RefinedState_EntryKeyword_3_0 extends KeywordToken {
+
+ public RefinedState_EntryKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getEntryKeyword_3_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// entryCode=DetailCode
+protected class RefinedState_EntryCodeAssignment_3_1 extends AssignmentToken {
+
+ public RefinedState_EntryCodeAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getEntryCodeAssignment_3_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("entryCode",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("entryCode");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRefinedStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RefinedState_EntryKeyword_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ("exit" exitCode=DetailCode)?
+protected class RefinedState_Group_4 extends GroupToken {
+
+ public RefinedState_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getGroup_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_ExitCodeAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "exit"
+protected class RefinedState_ExitKeyword_4_0 extends KeywordToken {
+
+ public RefinedState_ExitKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getExitKeyword_4_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_Group_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new RefinedState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// exitCode=DetailCode
+protected class RefinedState_ExitCodeAssignment_4_1 extends AssignmentToken {
+
+ public RefinedState_ExitCodeAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getExitCodeAssignment_4_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("exitCode",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exitCode");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRefinedStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RefinedState_ExitKeyword_4_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// ("subgraph" subgraph=StateGraph)?
+protected class RefinedState_Group_5 extends GroupToken {
+
+ public RefinedState_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getGroup_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_SubgraphAssignment_5_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "subgraph"
+protected class RefinedState_SubgraphKeyword_5_0 extends KeywordToken {
+
+ public RefinedState_SubgraphKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getSubgraphKeyword_5_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_Group_4(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new RefinedState_Group_3(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new RefinedState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// subgraph=StateGraph
+protected class RefinedState_SubgraphAssignment_5_1 extends AssignmentToken {
+
+ public RefinedState_SubgraphAssignment_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getSubgraphAssignment_5_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateGraph_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("subgraph",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("subgraph");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getStateGraphRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getRefinedStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new RefinedState_SubgraphKeyword_5_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class RefinedState_RightCurlyBracketKeyword_6 extends KeywordToken {
+
+ public RefinedState_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getRefinedStateAccess().getRightCurlyBracketKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new RefinedState_Group_5(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new RefinedState_Group_4(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new RefinedState_Group_3(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new RefinedState_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule RefinedState ****************/
+
+
+/************ begin Rule DetailCode ****************
+ *
+ * // TODOHRR: provide a means to call super class code (cf. ROOM p. 310f)
+ * // super() keyword or flag like in Trice
+ * DetailCode:
+ * "{" commands+=STRING+ "}";
+ *
+ **/
+
+// "{" commands+=STRING+ "}"
+protected class DetailCode_Group extends GroupToken {
+
+ public DetailCode_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getDetailCodeAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_RightCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getDetailCodeRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "{"
+protected class DetailCode_LeftCurlyBracketKeyword_0 extends KeywordToken {
+
+ public DetailCode_LeftCurlyBracketKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDetailCodeAccess().getLeftCurlyBracketKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// commands+=STRING+
+protected class DetailCode_CommandsAssignment_1 extends AssignmentToken {
+
+ public DetailCode_CommandsAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getDetailCodeAccess().getCommandsAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_CommandsAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new DetailCode_LeftCurlyBracketKeyword_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("commands",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("commands");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "}"
+protected class DetailCode_RightCurlyBracketKeyword_2 extends KeywordToken {
+
+ public DetailCode_RightCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getDetailCodeAccess().getRightCurlyBracketKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_CommandsAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule DetailCode ****************/
+
+
+/************ begin Rule TrPoint ****************
+ *
+ * TrPoint:
+ * TransitionPoint | EntryPoint | ExitPoint;
+ *
+ **/
+
+// TransitionPoint | EntryPoint | ExitPoint
+protected class TrPoint_Alternatives extends AlternativesToken {
+
+ public TrPoint_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getTrPointAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TrPoint_TransitionPointParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new TrPoint_EntryPointParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new TrPoint_ExitPointParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getEntryPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getExitPointRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTransitionPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// TransitionPoint
+protected class TrPoint_TransitionPointParserRuleCall_0 extends RuleCallToken {
+
+ public TrPoint_TransitionPointParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTrPointAccess().getTransitionPointParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTransitionPointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(TransitionPoint_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// EntryPoint
+protected class TrPoint_EntryPointParserRuleCall_1 extends RuleCallToken {
+
+ public TrPoint_EntryPointParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTrPointAccess().getEntryPointParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EntryPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getEntryPointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(EntryPoint_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// ExitPoint
+protected class TrPoint_ExitPointParserRuleCall_2 extends RuleCallToken {
+
+ public TrPoint_ExitPointParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTrPointAccess().getExitPointParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ExitPoint_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getExitPointRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ExitPoint_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule TrPoint ****************/
+
+
+/************ begin Rule TransitionPoint ****************
+ *
+ * TransitionPoint:
+ * handler?="handler"? "TransitionPoint" name=ID;
+ *
+ **/
+
+// handler?="handler"? "TransitionPoint" name=ID
+protected class TransitionPoint_Group extends GroupToken {
+
+ public TransitionPoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTransitionPointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionPoint_NameAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTransitionPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// handler?="handler"?
+protected class TransitionPoint_HandlerAssignment_0 extends AssignmentToken {
+
+ public TransitionPoint_HandlerAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTransitionPointAccess().getHandlerAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("handler",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("handler");
+ if(Boolean.TRUE.equals(value)) { // org::eclipse::xtext::impl::KeywordImpl
+ type = AssignmentType.KEYWORD;
+ element = grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// "TransitionPoint"
+protected class TransitionPoint_TransitionPointKeyword_1 extends KeywordToken {
+
+ public TransitionPoint_TransitionPointKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTransitionPointAccess().getTransitionPointKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionPoint_HandlerAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index - 1, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class TransitionPoint_NameAssignment_2 extends AssignmentToken {
+
+ public TransitionPoint_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTransitionPointAccess().getNameAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionPoint_TransitionPointKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule TransitionPoint ****************/
+
+
+/************ begin Rule EntryPoint ****************
+ *
+ * EntryPoint:
+ * "EntryPoint" name=ID;
+ *
+ **/
+
+// "EntryPoint" name=ID
+protected class EntryPoint_Group extends GroupToken {
+
+ public EntryPoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getEntryPointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EntryPoint_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getEntryPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "EntryPoint"
+protected class EntryPoint_EntryPointKeyword_0 extends KeywordToken {
+
+ public EntryPoint_EntryPointKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getEntryPointAccess().getEntryPointKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class EntryPoint_NameAssignment_1 extends AssignmentToken {
+
+ public EntryPoint_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getEntryPointAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new EntryPoint_EntryPointKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule EntryPoint ****************/
+
+
+/************ begin Rule ExitPoint ****************
+ *
+ * ExitPoint:
+ * "ExitPoint" name=ID;
+ *
+ **/
+
+// "ExitPoint" name=ID
+protected class ExitPoint_Group extends GroupToken {
+
+ public ExitPoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getExitPointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ExitPoint_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getExitPointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "ExitPoint"
+protected class ExitPoint_ExitPointKeyword_0 extends KeywordToken {
+
+ public ExitPoint_ExitPointKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getExitPointAccess().getExitPointKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class ExitPoint_NameAssignment_1 extends AssignmentToken {
+
+ public ExitPoint_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getExitPointAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ExitPoint_ExitPointKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule ExitPoint ****************/
+
+
+/************ begin Rule ChoicePoint ****************
+ *
+ * ChoicePoint:
+ * "ChoicePoint" name=ID;
+ *
+ **/
+
+// "ChoicePoint" name=ID
+protected class ChoicePoint_Group extends GroupToken {
+
+ public ChoicePoint_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getChoicePointAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicePoint_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getChoicePointRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "ChoicePoint"
+protected class ChoicePoint_ChoicePointKeyword_0 extends KeywordToken {
+
+ public ChoicePoint_ChoicePointKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getChoicePointAccess().getChoicePointKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID
+protected class ChoicePoint_NameAssignment_1 extends AssignmentToken {
+
+ public ChoicePoint_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getChoicePointAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicePoint_ChoicePointKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule ChoicePoint ****************/
+
+
+/************ begin Rule Transition ****************
+ *
+ * Transition:
+ * InitialTransition | NonInitialTransition;
+ *
+ **/
+
+// InitialTransition | NonInitialTransition
+protected class Transition_Alternatives extends AlternativesToken {
+
+ public Transition_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getTransitionAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Transition_InitialTransitionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Transition_NonInitialTransitionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCPBranchTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getContinuationTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getInitialTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTriggeredTransitionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// InitialTransition
+protected class Transition_InitialTransitionParserRuleCall_0 extends RuleCallToken {
+
+ public Transition_InitialTransitionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTransitionAccess().getInitialTransitionParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getInitialTransitionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(InitialTransition_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// NonInitialTransition
+protected class Transition_NonInitialTransitionParserRuleCall_1 extends RuleCallToken {
+
+ public Transition_NonInitialTransitionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTransitionAccess().getNonInitialTransitionParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NonInitialTransition_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCPBranchTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getContinuationTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTriggeredTransitionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(NonInitialTransition_Alternatives.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule Transition ****************/
+
+
+/************ begin Rule NonInitialTransition ****************
+ *
+ * NonInitialTransition:
+ * TriggeredTransition | ContinuationTransition | CPBranchTransition;
+ *
+ **/
+
+// TriggeredTransition | ContinuationTransition | CPBranchTransition
+protected class NonInitialTransition_Alternatives extends AlternativesToken {
+
+ public NonInitialTransition_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getNonInitialTransitionAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new NonInitialTransition_TriggeredTransitionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new NonInitialTransition_ContinuationTransitionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new NonInitialTransition_CPBranchTransitionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCPBranchTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getContinuationTransitionRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTriggeredTransitionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// TriggeredTransition
+protected class NonInitialTransition_TriggeredTransitionParserRuleCall_0 extends RuleCallToken {
+
+ public NonInitialTransition_TriggeredTransitionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getNonInitialTransitionAccess().getTriggeredTransitionParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTriggeredTransitionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(TriggeredTransition_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// ContinuationTransition
+protected class NonInitialTransition_ContinuationTransitionParserRuleCall_1 extends RuleCallToken {
+
+ public NonInitialTransition_ContinuationTransitionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getNonInitialTransitionAccess().getContinuationTransitionParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getContinuationTransitionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ContinuationTransition_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// CPBranchTransition
+protected class NonInitialTransition_CPBranchTransitionParserRuleCall_2 extends RuleCallToken {
+
+ public NonInitialTransition_CPBranchTransitionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getNonInitialTransitionAccess().getCPBranchTransitionParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCPBranchTransitionRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(CPBranchTransition_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule NonInitialTransition ****************/
+
+
+/************ begin Rule InitialTransition ****************
+ *
+ * InitialTransition:
+ * "Transition" name=ID? ":" "initial" "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}";
+ *
+ **/
+
+// "Transition" name=ID? ":" "initial" "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}"
+protected class InitialTransition_Group extends GroupToken {
+
+ public InitialTransition_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getInitialTransitionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Transition"
+protected class InitialTransition_TransitionKeyword_0 extends KeywordToken {
+
+ public InitialTransition_TransitionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getTransitionKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID?
+protected class InitialTransition_NameAssignment_1 extends AssignmentToken {
+
+ public InitialTransition_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class InitialTransition_ColonKeyword_2 extends KeywordToken {
+
+ public InitialTransition_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new InitialTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "initial"
+protected class InitialTransition_InitialKeyword_3 extends KeywordToken {
+
+ public InitialTransition_InitialKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getInitialKeyword_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_ColonKeyword_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "->"
+protected class InitialTransition_HyphenMinusGreaterThanSignKeyword_4 extends KeywordToken {
+
+ public InitialTransition_HyphenMinusGreaterThanSignKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_InitialKeyword_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// to=TransitionTerminal
+protected class InitialTransition_ToAssignment_5 extends AssignmentToken {
+
+ public InitialTransition_ToAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getToAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("to",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("to");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionTerminalRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getInitialTransitionAccess().getToTransitionTerminalParserRuleCall_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new InitialTransition_HyphenMinusGreaterThanSignKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "{"
+protected class InitialTransition_LeftCurlyBracketKeyword_6 extends KeywordToken {
+
+ public InitialTransition_LeftCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getLeftCurlyBracketKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_ToAssignment_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("action" action=DetailCode)?
+protected class InitialTransition_Group_7 extends GroupToken {
+
+ public InitialTransition_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getGroup_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_ActionAssignment_7_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "action"
+protected class InitialTransition_ActionKeyword_7_0 extends KeywordToken {
+
+ public InitialTransition_ActionKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getActionKeyword_7_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_LeftCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// action=DetailCode
+protected class InitialTransition_ActionAssignment_7_1 extends AssignmentToken {
+
+ public InitialTransition_ActionAssignment_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getActionAssignment_7_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("action",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("action");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getInitialTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new InitialTransition_ActionKeyword_7_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class InitialTransition_RightCurlyBracketKeyword_8 extends KeywordToken {
+
+ public InitialTransition_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getInitialTransitionAccess().getRightCurlyBracketKeyword_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new InitialTransition_Group_7(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new InitialTransition_LeftCurlyBracketKeyword_6(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule InitialTransition ****************/
+
+
+/************ begin Rule ContinuationTransition ****************
+ *
+ * ContinuationTransition:
+ * "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}";
+ *
+ **/
+
+// "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}"
+protected class ContinuationTransition_Group extends GroupToken {
+
+ public ContinuationTransition_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getContinuationTransitionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Transition"
+protected class ContinuationTransition_TransitionKeyword_0 extends KeywordToken {
+
+ public ContinuationTransition_TransitionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getTransitionKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID?
+protected class ContinuationTransition_NameAssignment_1 extends AssignmentToken {
+
+ public ContinuationTransition_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class ContinuationTransition_ColonKeyword_2 extends KeywordToken {
+
+ public ContinuationTransition_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ContinuationTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// from=TransitionTerminal
+protected class ContinuationTransition_FromAssignment_3 extends AssignmentToken {
+
+ public ContinuationTransition_FromAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getFromAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("from",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("from");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionTerminalRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getContinuationTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ContinuationTransition_ColonKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "->"
+protected class ContinuationTransition_HyphenMinusGreaterThanSignKeyword_4 extends KeywordToken {
+
+ public ContinuationTransition_HyphenMinusGreaterThanSignKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_FromAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// to=TransitionTerminal
+protected class ContinuationTransition_ToAssignment_5 extends AssignmentToken {
+
+ public ContinuationTransition_ToAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getToAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("to",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("to");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionTerminalRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getContinuationTransitionAccess().getToTransitionTerminalParserRuleCall_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ContinuationTransition_HyphenMinusGreaterThanSignKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "{"
+protected class ContinuationTransition_LeftCurlyBracketKeyword_6 extends KeywordToken {
+
+ public ContinuationTransition_LeftCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getLeftCurlyBracketKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_ToAssignment_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("action" action=DetailCode)?
+protected class ContinuationTransition_Group_7 extends GroupToken {
+
+ public ContinuationTransition_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getGroup_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_ActionAssignment_7_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "action"
+protected class ContinuationTransition_ActionKeyword_7_0 extends KeywordToken {
+
+ public ContinuationTransition_ActionKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getActionKeyword_7_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_LeftCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// action=DetailCode
+protected class ContinuationTransition_ActionAssignment_7_1 extends AssignmentToken {
+
+ public ContinuationTransition_ActionAssignment_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getActionAssignment_7_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("action",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("action");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getContinuationTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new ContinuationTransition_ActionKeyword_7_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class ContinuationTransition_RightCurlyBracketKeyword_8 extends KeywordToken {
+
+ public ContinuationTransition_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getContinuationTransitionAccess().getRightCurlyBracketKeyword_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ContinuationTransition_Group_7(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new ContinuationTransition_LeftCurlyBracketKeyword_6(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule ContinuationTransition ****************/
+
+
+/************ begin Rule TriggeredTransition ****************
+ *
+ * TriggeredTransition:
+ * "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "triggers" "{" triggers+=Trigger
+ * ("or" triggers+=Trigger)* "}" ("action" action=DetailCode)? "}";
+ *
+ **/
+
+// "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "triggers" "{" triggers+=Trigger ("or"
+// triggers+=Trigger)* "}" ("action" action=DetailCode)? "}"
+protected class TriggeredTransition_Group extends GroupToken {
+
+ public TriggeredTransition_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_RightCurlyBracketKeyword_13(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTriggeredTransitionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Transition"
+protected class TriggeredTransition_TransitionKeyword_0 extends KeywordToken {
+
+ public TriggeredTransition_TransitionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getTransitionKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID?
+protected class TriggeredTransition_NameAssignment_1 extends AssignmentToken {
+
+ public TriggeredTransition_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class TriggeredTransition_ColonKeyword_2 extends KeywordToken {
+
+ public TriggeredTransition_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new TriggeredTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// from=TransitionTerminal
+protected class TriggeredTransition_FromAssignment_3 extends AssignmentToken {
+
+ public TriggeredTransition_FromAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getFromAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("from",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("from");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionTerminalRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggeredTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new TriggeredTransition_ColonKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "->"
+protected class TriggeredTransition_HyphenMinusGreaterThanSignKeyword_4 extends KeywordToken {
+
+ public TriggeredTransition_HyphenMinusGreaterThanSignKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_FromAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// to=TransitionTerminal
+protected class TriggeredTransition_ToAssignment_5 extends AssignmentToken {
+
+ public TriggeredTransition_ToAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getToAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("to",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("to");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionTerminalRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggeredTransitionAccess().getToTransitionTerminalParserRuleCall_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new TriggeredTransition_HyphenMinusGreaterThanSignKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "{"
+protected class TriggeredTransition_LeftCurlyBracketKeyword_6 extends KeywordToken {
+
+ public TriggeredTransition_LeftCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_ToAssignment_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "triggers"
+protected class TriggeredTransition_TriggersKeyword_7 extends KeywordToken {
+
+ public TriggeredTransition_TriggersKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getTriggersKeyword_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_LeftCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "{"
+protected class TriggeredTransition_LeftCurlyBracketKeyword_8 extends KeywordToken {
+
+ public TriggeredTransition_LeftCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_TriggersKeyword_7(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// triggers+=Trigger
+protected class TriggeredTransition_TriggersAssignment_9 extends AssignmentToken {
+
+ public TriggeredTransition_TriggersAssignment_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_9();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Trigger_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("triggers",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("triggers");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTriggerRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_9_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new TriggeredTransition_LeftCurlyBracketKeyword_8(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("or" triggers+=Trigger)*
+protected class TriggeredTransition_Group_10 extends GroupToken {
+
+ public TriggeredTransition_Group_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getGroup_10();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_TriggersAssignment_10_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "or"
+protected class TriggeredTransition_OrKeyword_10_0 extends KeywordToken {
+
+ public TriggeredTransition_OrKeyword_10_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getOrKeyword_10_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_Group_10(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new TriggeredTransition_TriggersAssignment_9(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// triggers+=Trigger
+protected class TriggeredTransition_TriggersAssignment_10_1 extends AssignmentToken {
+
+ public TriggeredTransition_TriggersAssignment_10_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getTriggersAssignment_10_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Trigger_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("triggers",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("triggers");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTriggerRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_10_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new TriggeredTransition_OrKeyword_10_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class TriggeredTransition_RightCurlyBracketKeyword_11 extends KeywordToken {
+
+ public TriggeredTransition_RightCurlyBracketKeyword_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_11();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_Group_10(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new TriggeredTransition_TriggersAssignment_9(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// ("action" action=DetailCode)?
+protected class TriggeredTransition_Group_12 extends GroupToken {
+
+ public TriggeredTransition_Group_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getGroup_12();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_ActionAssignment_12_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "action"
+protected class TriggeredTransition_ActionKeyword_12_0 extends KeywordToken {
+
+ public TriggeredTransition_ActionKeyword_12_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getActionKeyword_12_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_RightCurlyBracketKeyword_11(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// action=DetailCode
+protected class TriggeredTransition_ActionAssignment_12_1 extends AssignmentToken {
+
+ public TriggeredTransition_ActionAssignment_12_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getActionAssignment_12_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("action",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("action");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggeredTransitionAccess().getActionDetailCodeParserRuleCall_12_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new TriggeredTransition_ActionKeyword_12_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class TriggeredTransition_RightCurlyBracketKeyword_13 extends KeywordToken {
+
+ public TriggeredTransition_RightCurlyBracketKeyword_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_13();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TriggeredTransition_Group_12(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new TriggeredTransition_RightCurlyBracketKeyword_11(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule TriggeredTransition ****************/
+
+
+/************ begin Rule CPBranchTransition ****************
+ *
+ * CPBranchTransition:
+ * "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "cond" condition=DetailCode ("action"
+ * action=DetailCode)? "}";
+ *
+ **/
+
+// "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "cond" condition=DetailCode ("action"
+// action=DetailCode)? "}"
+protected class CPBranchTransition_Group extends GroupToken {
+
+ public CPBranchTransition_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_RightCurlyBracketKeyword_10(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getCPBranchTransitionRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "Transition"
+protected class CPBranchTransition_TransitionKeyword_0 extends KeywordToken {
+
+ public CPBranchTransition_TransitionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getTransitionKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// name=ID?
+protected class CPBranchTransition_NameAssignment_1 extends AssignmentToken {
+
+ public CPBranchTransition_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getNameAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("name",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0(), value, null)) {
+ type = AssignmentType.TERMINAL_RULE_CALL;
+ element = grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class CPBranchTransition_ColonKeyword_2 extends KeywordToken {
+
+ public CPBranchTransition_ColonKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getColonKeyword_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new CPBranchTransition_TransitionKeyword_0(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// from=TransitionTerminal
+protected class CPBranchTransition_FromAssignment_3 extends AssignmentToken {
+
+ public CPBranchTransition_FromAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getFromAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("from",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("from");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionTerminalRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getCPBranchTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new CPBranchTransition_ColonKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "->"
+protected class CPBranchTransition_HyphenMinusGreaterThanSignKeyword_4 extends KeywordToken {
+
+ public CPBranchTransition_HyphenMinusGreaterThanSignKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_FromAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// to=TransitionTerminal
+protected class CPBranchTransition_ToAssignment_5 extends AssignmentToken {
+
+ public CPBranchTransition_ToAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getToAssignment_5();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_Alternatives(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("to",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("to");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTransitionTerminalRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getCPBranchTransitionAccess().getToTransitionTerminalParserRuleCall_5_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new CPBranchTransition_HyphenMinusGreaterThanSignKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// "{"
+protected class CPBranchTransition_LeftCurlyBracketKeyword_6 extends KeywordToken {
+
+ public CPBranchTransition_LeftCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getLeftCurlyBracketKeyword_6();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_ToAssignment_5(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "cond"
+protected class CPBranchTransition_CondKeyword_7 extends KeywordToken {
+
+ public CPBranchTransition_CondKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getCondKeyword_7();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_LeftCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// condition=DetailCode
+protected class CPBranchTransition_ConditionAssignment_8 extends AssignmentToken {
+
+ public CPBranchTransition_ConditionAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getConditionAssignment_8();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("condition",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("condition");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getCPBranchTransitionAccess().getConditionDetailCodeParserRuleCall_8_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new CPBranchTransition_CondKeyword_7(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("action" action=DetailCode)?
+protected class CPBranchTransition_Group_9 extends GroupToken {
+
+ public CPBranchTransition_Group_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getGroup_9();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_ActionAssignment_9_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "action"
+protected class CPBranchTransition_ActionKeyword_9_0 extends KeywordToken {
+
+ public CPBranchTransition_ActionKeyword_9_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getActionKeyword_9_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_ConditionAssignment_8(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// action=DetailCode
+protected class CPBranchTransition_ActionAssignment_9_1 extends AssignmentToken {
+
+ public CPBranchTransition_ActionAssignment_9_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getActionAssignment_9_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("action",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("action");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getCPBranchTransitionAccess().getActionDetailCodeParserRuleCall_9_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new CPBranchTransition_ActionKeyword_9_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// "}"
+protected class CPBranchTransition_RightCurlyBracketKeyword_10 extends KeywordToken {
+
+ public CPBranchTransition_RightCurlyBracketKeyword_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getCPBranchTransitionAccess().getRightCurlyBracketKeyword_10();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new CPBranchTransition_Group_9(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new CPBranchTransition_ConditionAssignment_8(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule CPBranchTransition ****************/
+
+
+/************ begin Rule TransitionTerminal ****************
+ *
+ * TransitionTerminal:
+ * StateTerminal | TrPointTerminal | SubStateTrPointTerminal | ChoicepointTerminal;
+ *
+ **/
+
+// StateTerminal | TrPointTerminal | SubStateTrPointTerminal | ChoicepointTerminal
+protected class TransitionTerminal_Alternatives extends AlternativesToken {
+
+ public TransitionTerminal_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Alternatives getGrammarElement() {
+ return grammarAccess.getTransitionTerminalAccess().getAlternatives();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TransitionTerminal_StateTerminalParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new TransitionTerminal_TrPointTerminalParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new TransitionTerminal_SubStateTrPointTerminalParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+ case 3: return new TransitionTerminal_ChoicepointTerminalParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getChoicepointTerminalRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getStateTerminalRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getSubStateTrPointTerminalRule().getType().getClassifier() &&
+ getEObject().eClass() != grammarAccess.getTrPointTerminalRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// StateTerminal
+protected class TransitionTerminal_StateTerminalParserRuleCall_0 extends RuleCallToken {
+
+ public TransitionTerminal_StateTerminalParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTransitionTerminalAccess().getStateTerminalParserRuleCall_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new StateTerminal_StateAssignment(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getStateTerminalRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(StateTerminal_StateAssignment.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// TrPointTerminal
+protected class TransitionTerminal_TrPointTerminalParserRuleCall_1 extends RuleCallToken {
+
+ public TransitionTerminal_TrPointTerminalParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTransitionTerminalAccess().getTrPointTerminalParserRuleCall_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TrPointTerminal_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTrPointTerminalRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(TrPointTerminal_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// SubStateTrPointTerminal
+protected class TransitionTerminal_SubStateTrPointTerminalParserRuleCall_2 extends RuleCallToken {
+
+ public TransitionTerminal_SubStateTrPointTerminalParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTransitionTerminalAccess().getSubStateTrPointTerminalParserRuleCall_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubStateTrPointTerminal_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSubStateTrPointTerminalRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(SubStateTrPointTerminal_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+// ChoicepointTerminal
+protected class TransitionTerminal_ChoicepointTerminalParserRuleCall_3 extends RuleCallToken {
+
+ public TransitionTerminal_ChoicepointTerminalParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public RuleCall getGrammarElement() {
+ return grammarAccess.getTransitionTerminalAccess().getChoicepointTerminalParserRuleCall_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicepointTerminal_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getChoicepointTerminalRule().getType().getClassifier())
+ return null;
+ if(checkForRecursion(ChoicepointTerminal_Group.class, eObjectConsumer)) return null;
+ return eObjectConsumer;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+ }
+ }
+}
+
+
+/************ end Rule TransitionTerminal ****************/
+
+
+/************ begin Rule StateTerminal ****************
+ *
+ * StateTerminal:
+ * state=[BaseState];
+ *
+ **/
+
+// state=[BaseState]
+protected class StateTerminal_StateAssignment extends AssignmentToken {
+
+ public StateTerminal_StateAssignment(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getStateTerminalAccess().getStateAssignment();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getStateTerminalRule().getType().getClassifier())
+ return null;
+ if((value = eObjectConsumer.getConsumable("state",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("state");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+/************ end Rule StateTerminal ****************/
+
+
+/************ begin Rule TrPointTerminal ****************
+ *
+ * TrPointTerminal:
+ * "my" trPoint=[TrPoint];
+ *
+ **/
+
+// "my" trPoint=[TrPoint]
+protected class TrPointTerminal_Group extends GroupToken {
+
+ public TrPointTerminal_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTrPointTerminalAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TrPointTerminal_TrPointAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTrPointTerminalRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "my"
+protected class TrPointTerminal_MyKeyword_0 extends KeywordToken {
+
+ public TrPointTerminal_MyKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTrPointTerminalAccess().getMyKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// trPoint=[TrPoint]
+protected class TrPointTerminal_TrPointAssignment_1 extends AssignmentToken {
+
+ public TrPointTerminal_TrPointAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTrPointTerminalAccess().getTrPointAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new TrPointTerminal_MyKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("trPoint",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("trPoint");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule TrPointTerminal ****************/
+
+
+/************ begin Rule SubStateTrPointTerminal ****************
+ *
+ * SubStateTrPointTerminal:
+ * trPoint=[TrPoint] "of" state=[BaseState];
+ *
+ **/
+
+// trPoint=[TrPoint] "of" state=[BaseState]
+protected class SubStateTrPointTerminal_Group extends GroupToken {
+
+ public SubStateTrPointTerminal_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getSubStateTrPointTerminalAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubStateTrPointTerminal_StateAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getSubStateTrPointTerminalRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// trPoint=[TrPoint]
+protected class SubStateTrPointTerminal_TrPointAssignment_0 extends AssignmentToken {
+
+ public SubStateTrPointTerminal_TrPointAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubStateTrPointTerminalAccess().getTrPointAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("trPoint",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("trPoint");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// "of"
+protected class SubStateTrPointTerminal_OfKeyword_1 extends KeywordToken {
+
+ public SubStateTrPointTerminal_OfKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getSubStateTrPointTerminalAccess().getOfKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubStateTrPointTerminal_TrPointAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// state=[BaseState]
+protected class SubStateTrPointTerminal_StateAssignment_2 extends AssignmentToken {
+
+ public SubStateTrPointTerminal_StateAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getSubStateTrPointTerminalAccess().getStateAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new SubStateTrPointTerminal_OfKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("state",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("state");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule SubStateTrPointTerminal ****************/
+
+
+/************ begin Rule ChoicepointTerminal ****************
+ *
+ * ChoicepointTerminal:
+ * "cp" cp=[ChoicePoint];
+ *
+ **/
+
+// "cp" cp=[ChoicePoint]
+protected class ChoicepointTerminal_Group extends GroupToken {
+
+ public ChoicepointTerminal_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getChoicepointTerminalAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicepointTerminal_CpAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getChoicepointTerminalRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "cp"
+protected class ChoicepointTerminal_CpKeyword_0 extends KeywordToken {
+
+ public ChoicepointTerminal_CpKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getChoicepointTerminalAccess().getCpKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// cp=[ChoicePoint]
+protected class ChoicepointTerminal_CpAssignment_1 extends AssignmentToken {
+
+ public ChoicepointTerminal_CpAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getChoicepointTerminalAccess().getCpAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new ChoicepointTerminal_CpKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("cp",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("cp");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule ChoicepointTerminal ****************/
+
+
+/************ begin Rule Trigger ****************
+ *
+ * //TransitionSource: TransitionTerminal|ChoicePointCaseRef|ChoicePointDefaultRef;
+ * //TransitionSource: TransitionTerminal|ChoicePointRef;
+ * //TransitionDest: TransitionTerminal|ChoicePointRef;
+ * //ChoicePointCaseRef: 'cp' cp=[ChoicePoint|ID] 'case' case=[ChoicePointCase|ID];
+ * //ChoicePointDefaultRef: 'cp' cp=[ChoicePoint|ID] 'default';
+ * //ChoicePointRef: 'cp' cp=[ChoicePoint|ID];
+ * Trigger:
+ * "<" msgFromIfPairs+=MessageFromIf ("|" msgFromIfPairs+=MessageFromIf)* guard=Guard? ">";
+ *
+ **/
+
+// "<" msgFromIfPairs+=MessageFromIf ("|" msgFromIfPairs+=MessageFromIf)* guard=Guard? ">"
+protected class Trigger_Group extends GroupToken {
+
+ public Trigger_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Trigger_GreaterThanSignKeyword_4(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getTriggerRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "<"
+protected class Trigger_LessThanSignKeyword_0 extends KeywordToken {
+
+ public Trigger_LessThanSignKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getLessThanSignKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// msgFromIfPairs+=MessageFromIf
+protected class Trigger_MsgFromIfPairsAssignment_1 extends AssignmentToken {
+
+ public Trigger_MsgFromIfPairsAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageFromIf_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("msgFromIfPairs",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("msgFromIfPairs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageFromIfRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Trigger_LessThanSignKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ("|" msgFromIfPairs+=MessageFromIf)*
+protected class Trigger_Group_2 extends GroupToken {
+
+ public Trigger_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getGroup_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Trigger_MsgFromIfPairsAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// "|"
+protected class Trigger_VerticalLineKeyword_2_0 extends KeywordToken {
+
+ public Trigger_VerticalLineKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getVerticalLineKeyword_2_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Trigger_Group_2(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Trigger_MsgFromIfPairsAssignment_1(lastRuleCallOrigin, this, 1, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// msgFromIfPairs+=MessageFromIf
+protected class Trigger_MsgFromIfPairsAssignment_2_1 extends AssignmentToken {
+
+ public Trigger_MsgFromIfPairsAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getMsgFromIfPairsAssignment_2_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageFromIf_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("msgFromIfPairs",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("msgFromIfPairs");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageFromIfRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Trigger_VerticalLineKeyword_2_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+// guard=Guard?
+protected class Trigger_GuardAssignment_3 extends AssignmentToken {
+
+ public Trigger_GuardAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getGuardAssignment_3();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Guard_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("guard",false)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("guard");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getGuardRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getTriggerAccess().getGuardGuardParserRuleCall_3_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Trigger_Group_2(lastRuleCallOrigin, next, actIndex, consumed);
+ case 1: return new Trigger_MsgFromIfPairsAssignment_1(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+// ">"
+protected class Trigger_GreaterThanSignKeyword_4 extends KeywordToken {
+
+ public Trigger_GreaterThanSignKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getTriggerAccess().getGreaterThanSignKeyword_4();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Trigger_GuardAssignment_3(lastRuleCallOrigin, this, 0, inst);
+ case 1: return new Trigger_Group_2(lastRuleCallOrigin, this, 1, inst);
+ case 2: return new Trigger_MsgFromIfPairsAssignment_1(lastRuleCallOrigin, this, 2, inst);
+ default: return null;
+ }
+ }
+
+}
+
+
+/************ end Rule Trigger ****************/
+
+
+/************ begin Rule MessageFromIf ****************
+ *
+ * MessageFromIf:
+ * message=[Message] ":" from=[InterfaceItem];
+ *
+ **/
+
+// message=[Message] ":" from=[InterfaceItem]
+protected class MessageFromIf_Group extends GroupToken {
+
+ public MessageFromIf_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getMessageFromIfAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageFromIf_FromAssignment_2(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getMessageFromIfRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// message=[Message]
+protected class MessageFromIf_MessageAssignment_0 extends AssignmentToken {
+
+ public MessageFromIf_MessageAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMessageFromIfAccess().getMessageAssignment_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("message",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("message");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+// ":"
+protected class MessageFromIf_ColonKeyword_1 extends KeywordToken {
+
+ public MessageFromIf_ColonKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getMessageFromIfAccess().getColonKeyword_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageFromIf_MessageAssignment_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+}
+
+// from=[InterfaceItem]
+protected class MessageFromIf_FromAssignment_2 extends AssignmentToken {
+
+ public MessageFromIf_FromAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getMessageFromIfAccess().getFromAssignment_2();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new MessageFromIf_ColonKeyword_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("from",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("from");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0().getType().getClassifier())) {
+ type = AssignmentType.CROSS_REFERENCE;
+ element = grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0();
+ return obj;
+ }
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule MessageFromIf ****************/
+
+
+/************ begin Rule Guard ****************
+ *
+ * Guard:
+ * "guard" guard=DetailCode;
+ *
+ **/
+
+// "guard" guard=DetailCode
+protected class Guard_Group extends GroupToken {
+
+ public Guard_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getGuardAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Guard_GuardAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getGuardRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "guard"
+protected class Guard_GuardKeyword_0 extends KeywordToken {
+
+ public Guard_GuardKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getGuardAccess().getGuardKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// guard=DetailCode
+protected class Guard_GuardAssignment_1 extends AssignmentToken {
+
+ public Guard_GuardAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getGuardAccess().getGuardAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new DetailCode_Group(this, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("guard",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("guard");
+ if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+ IEObjectConsumer param = createEObjectConsumer((EObject)value);
+ if(param.isInstanceOf(grammarAccess.getDetailCodeRule().getType().getClassifier())) {
+ type = AssignmentType.PARSER_RULE_CALL;
+ element = grammarAccess.getGuardAccess().getGuardDetailCodeParserRuleCall_1_0();
+ consumed = obj;
+ return param;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public AbstractToken createFollowerAfterReturn(AbstractToken next, int actIndex, int index, IEObjectConsumer inst) {
+ if(value == inst.getEObject() && !inst.isConsumed()) return null;
+ switch(index) {
+ case 0: return new Guard_GuardKeyword_0(lastRuleCallOrigin, next, actIndex, consumed);
+ default: return null;
+ }
+ }
+}
+
+
+/************ end Rule Guard ****************/
+
+
+/************ begin Rule Import ****************
+ *
+ * // **************************************************************
+ * // general
+ * Import:
+ * "import" importedNamespace=ImportedFQN;
+ *
+ **/
+
+// "import" importedNamespace=ImportedFQN
+protected class Import_Group extends GroupToken {
+
+ public Import_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Group getGrammarElement() {
+ return grammarAccess.getImportAccess().getGroup();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Import_ImportedNamespaceAssignment_1(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if(getEObject().eClass() != grammarAccess.getImportRule().getType().getClassifier())
+ return null;
+ return eObjectConsumer;
+ }
+
+}
+
+// "import"
+protected class Import_ImportKeyword_0 extends KeywordToken {
+
+ public Import_ImportKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Keyword getGrammarElement() {
+ return grammarAccess.getImportAccess().getImportKeyword_0();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+ }
+ }
+
+}
+
+// importedNamespace=ImportedFQN
+protected class Import_ImportedNamespaceAssignment_1 extends AssignmentToken {
+
+ public Import_ImportedNamespaceAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+ super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+ }
+
+ @Override
+ public Assignment getGrammarElement() {
+ return grammarAccess.getImportAccess().getImportedNamespaceAssignment_1();
+ }
+
+ @Override
+ public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+ switch(index) {
+ case 0: return new Import_ImportKeyword_0(lastRuleCallOrigin, this, 0, inst);
+ default: return null;
+ }
+ }
+
+ @Override
+ public IEObjectConsumer tryConsume() {
+ if((value = eObjectConsumer.getConsumable("importedNamespace",true)) == null) return null;
+ IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("importedNamespace");
+ if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0(), value, null)) {
+ type = AssignmentType.DATATYPE_RULE_CALL;
+ element = grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0();
+ return obj;
+ }
+ return null;
+ }
+
+}
+
+
+/************ end Rule Import ****************/
+
+
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomAntlrTokenFileProvider.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomAntlrTokenFileProvider.java
new file mode 100644
index 000000000..ae1af8d08
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomAntlrTokenFileProvider.java
@@ -0,0 +1,15 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.etrice.core.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class RoomAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+
+ public InputStream getAntlrTokenFile() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.tokens");
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomParser.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomParser.java
new file mode 100644
index 000000000..85cafd880
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/RoomParser.java
@@ -0,0 +1,56 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.etrice.core.parser.antlr;
+
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.TokenSource;
+import org.eclipse.xtext.parser.IParseResult;
+import org.eclipse.xtext.parser.ParseException;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+
+import com.google.inject.Inject;
+
+import org.eclipse.etrice.core.services.RoomGrammarAccess;
+
+public class RoomParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+
+ @Inject
+ private RoomGrammarAccess grammarAccess;
+
+ @Override
+ protected IParseResult parse(String ruleName, CharStream in) {
+ TokenSource tokenSource = createLexer(in);
+ XtextTokenStream tokenStream = createTokenStream(tokenSource);
+ tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+ org.eclipse.etrice.core.parser.antlr.internal.InternalRoomParser parser = createParser(tokenStream);
+ parser.setTokenTypeMap(getTokenDefProvider().getTokenDefMap());
+ parser.setSyntaxErrorProvider(getSyntaxErrorProvider());
+ parser.setUnorderedGroupHelper(getUnorderedGroupHelper().get());
+ try {
+ if(ruleName != null)
+ return parser.parse(ruleName);
+ return parser.parse();
+ } catch (Exception re) {
+ throw new ParseException(re.getMessage(),re);
+ }
+ }
+
+ protected org.eclipse.etrice.core.parser.antlr.internal.InternalRoomParser createParser(XtextTokenStream stream) {
+ return new org.eclipse.etrice.core.parser.antlr.internal.InternalRoomParser(stream, getElementFactory(), getGrammarAccess());
+ }
+
+ @Override
+ protected String getDefaultRuleName() {
+ return "RoomModel";
+ }
+
+ public RoomGrammarAccess getGrammarAccess() {
+ return this.grammarAccess;
+ }
+
+ public void setGrammarAccess(RoomGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g
new file mode 100644
index 000000000..d446975ea
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g
@@ -0,0 +1,6227 @@
+/*
+* generated by Xtext
+*/
+grammar InternalRoom;
+
+options {
+ superClass=AbstractInternalAntlrParser;
+
+}
+
+@lexer::header {
+package org.eclipse.etrice.core.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.eclipse.etrice.core.parser.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.xtext.parsetree.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.xtext.conversion.ValueConverterException;
+import org.eclipse.etrice.core.services.RoomGrammarAccess;
+
+}
+
+@parser::members {
+
+ private RoomGrammarAccess grammarAccess;
+
+ public InternalRoomParser(TokenStream input, IAstFactory factory, RoomGrammarAccess grammarAccess) {
+ this(input);
+ this.factory = factory;
+ registerRules(grammarAccess.getGrammar());
+ this.grammarAccess = grammarAccess;
+ }
+
+ @Override
+ protected InputStream getTokenFile() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.tokens");
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "RoomModel";
+ }
+
+ @Override
+ protected RoomGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+}
+
+@rulecatch {
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+}
+
+
+
+
+// Entry rule entryRuleRoomModel
+entryRuleRoomModel returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getRoomModelRule(), currentNode); }
+ iv_ruleRoomModel=ruleRoomModel
+ { $current=$iv_ruleRoomModel.current; }
+ EOF
+;
+
+// Rule RoomModel
+ruleRoomModel returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'RoomModel'
+ {
+ createLeafNode(grammarAccess.getRoomModelAccess().getRoomModelKeyword_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0(), currentNode);
+ }
+ lv_name_1_0=ruleFQN {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "FQN",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getRoomModelAccess().getLeftCurlyBracketKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getImportsImportParserRuleCall_3_0(), currentNode);
+ }
+ lv_imports_3_0=ruleImport {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "imports",
+ lv_imports_3_0,
+ "Import",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getDataClassesDataClassParserRuleCall_4_0_0(), currentNode);
+ }
+ lv_dataClasses_4_0=ruleDataClass {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "dataClasses",
+ lv_dataClasses_4_0,
+ "DataClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getProtocolClassesProtocolClassParserRuleCall_4_1_0(), currentNode);
+ }
+ lv_protocolClasses_5_0=ruleProtocolClass {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "protocolClasses",
+ lv_protocolClasses_5_0,
+ "ProtocolClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getActorClassesActorClassParserRuleCall_4_2_0(), currentNode);
+ }
+ lv_actorClasses_6_0=ruleActorClass {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "actorClasses",
+ lv_actorClasses_6_0,
+ "ActorClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getSubSystemClassesSubSystemClassParserRuleCall_4_3_0(), currentNode);
+ }
+ lv_subSystemClasses_7_0=ruleSubSystemClass {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "subSystemClasses",
+ lv_subSystemClasses_7_0,
+ "SubSystemClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getSystemsLogicalSystemParserRuleCall_4_4_0(), currentNode);
+ }
+ lv_systems_8_0=ruleLogicalSystem {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "systems",
+ lv_systems_8_0,
+ "LogicalSystem",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))+ '}'
+ {
+ createLeafNode(grammarAccess.getRoomModelAccess().getRightCurlyBracketKeyword_5(), null);
+ }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleStructureClass
+entryRuleStructureClass returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getStructureClassRule(), currentNode); }
+ iv_ruleStructureClass=ruleStructureClass
+ { $current=$iv_ruleStructureClass.current; }
+ EOF
+;
+
+// Rule StructureClass
+ruleStructureClass returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStructureClassAccess().getActorContainerClassParserRuleCall_0(), currentNode);
+ }
+ this_ActorContainerClass_0=ruleActorContainerClass
+ {
+ $current = $this_ActorContainerClass_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getStructureClassAccess().getLogicalSystemParserRuleCall_1(), currentNode);
+ }
+ this_LogicalSystem_1=ruleLogicalSystem
+ {
+ $current = $this_LogicalSystem_1.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleActorContainerClass
+entryRuleActorContainerClass returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getActorContainerClassRule(), currentNode); }
+ iv_ruleActorContainerClass=ruleActorContainerClass
+ { $current=$iv_ruleActorContainerClass.current; }
+ EOF
+;
+
+// Rule ActorContainerClass
+ruleActorContainerClass returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorContainerClassAccess().getActorClassParserRuleCall_0(), currentNode);
+ }
+ this_ActorClass_0=ruleActorClass
+ {
+ $current = $this_ActorClass_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorContainerClassAccess().getSubSystemClassParserRuleCall_1(), currentNode);
+ }
+ this_SubSystemClass_1=ruleSubSystemClass
+ {
+ $current = $this_SubSystemClass_1.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedID
+entryRuleTypedID returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTypedIDRule(), currentNode); }
+ iv_ruleTypedID=ruleTypedID
+ { $current=$iv_ruleTypedID.current; }
+ EOF
+;
+
+// Rule TypedID
+ruleTypedID returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ lv_name_0_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_0_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ':'
+ {
+ createLeafNode(grammarAccess.getTypedIDAccess().getColonKeyword_1(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTypedIDAccess().getTypeTypeParserRuleCall_2_0(), currentNode);
+ }
+ lv_type_2_0=ruleType {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "type",
+ lv_type_2_0,
+ "Type",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFreeTypedID
+entryRuleFreeTypedID returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getFreeTypedIDRule(), currentNode); }
+ iv_ruleFreeTypedID=ruleFreeTypedID
+ { $current=$iv_ruleFreeTypedID.current; }
+ EOF
+;
+
+// Rule FreeTypedID
+ruleFreeTypedID returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ lv_name_0_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getFreeTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_0_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ':'
+ {
+ createLeafNode(grammarAccess.getFreeTypedIDAccess().getColonKeyword_1(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getFreeTypedIDAccess().getTypeFreeTypeParserRuleCall_2_0(), currentNode);
+ }
+ lv_type_2_0=ruleFreeType {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getFreeTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "type",
+ lv_type_2_0,
+ "FreeType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleType
+entryRuleType returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTypeRule(), currentNode); }
+ iv_ruleType=ruleType
+ { $current=$iv_ruleType.current; }
+ EOF
+;
+
+// Rule Type
+ruleType returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0(), currentNode);
+ }
+ lv_prim_0_0=rulePrimitiveType {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "prim",
+ lv_prim_0_0,
+ "PrimitiveType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFreeType
+entryRuleFreeType returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getFreeTypeRule(), currentNode); }
+ iv_ruleFreeType=ruleFreeType
+ { $current=$iv_ruleFreeType.current; }
+ EOF
+;
+
+// Rule FreeType
+ruleFreeType returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0(), currentNode);
+ }
+ lv_prim_0_0=rulePrimitiveType {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getFreeTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "prim",
+ lv_prim_0_0,
+ "PrimitiveType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ lv_type_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0(), "type");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getFreeTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "type",
+ lv_type_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDataClass
+entryRuleDataClass returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getDataClassRule(), currentNode); }
+ iv_ruleDataClass=ruleDataClass
+ { $current=$iv_ruleDataClass.current; }
+ EOF
+;
+
+// Rule DataClass
+ruleDataClass returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'DataClass'
+ {
+ createLeafNode(grammarAccess.getDataClassAccess().getDataClassKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)( 'extends'
+ {
+ createLeafNode(grammarAccess.getDataClassAccess().getExtendsKeyword_2_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '{'
+ {
+ createLeafNode(grammarAccess.getDataClassAccess().getLeftCurlyBracketKeyword_3(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getImportsImportParserRuleCall_4_0(), currentNode);
+ }
+ lv_imports_5_0=ruleImport {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "imports",
+ lv_imports_5_0,
+ "Import",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getAttributesAttributeParserRuleCall_5_0(), currentNode);
+ }
+ lv_attributes_6_0=ruleAttribute {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "attributes",
+ lv_attributes_6_0,
+ "Attribute",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getOperationsOperationParserRuleCall_6_0(), currentNode);
+ }
+ lv_operations_7_0=ruleOperation {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "operations",
+ lv_operations_7_0,
+ "Operation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getDataClassAccess().getRightCurlyBracketKeyword_7(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAttribute
+entryRuleAttribute returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getAttributeRule(), currentNode); }
+ iv_ruleAttribute=ruleAttribute
+ { $current=$iv_ruleAttribute.current; }
+ EOF
+;
+
+// Rule Attribute
+ruleAttribute returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Attribute'
+ {
+ createLeafNode(grammarAccess.getAttributeAccess().getAttributeKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getAttributeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)( '['
+ {
+ createLeafNode(grammarAccess.getAttributeAccess().getLeftSquareBracketKeyword_2_0(), null);
+ }
+(
+(
+ lv_size_3_0=RULE_INT
+ {
+ createLeafNode(grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0(), "size");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getAttributeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "size",
+ lv_size_3_0,
+ "INT",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ']'
+ {
+ createLeafNode(grammarAccess.getAttributeAccess().getRightSquareBracketKeyword_2_2(), null);
+ }
+)? ':'
+ {
+ createLeafNode(grammarAccess.getAttributeAccess().getColonKeyword_3(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getAttributeAccess().getTypeTypeParserRuleCall_4_0(), currentNode);
+ }
+ lv_type_6_0=ruleType {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getAttributeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "type",
+ lv_type_6_0,
+ "Type",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleOperation
+entryRuleOperation returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getOperationRule(), currentNode); }
+ iv_ruleOperation=ruleOperation
+ { $current=$iv_ruleOperation.current; }
+ EOF
+;
+
+// Rule Operation
+ruleOperation returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Operation'
+ {
+ createLeafNode(grammarAccess.getOperationAccess().getOperationKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) '('
+ {
+ createLeafNode(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2(), null);
+ }
+((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_0_0(), currentNode);
+ }
+ lv_arguments_3_0=ruleFreeTypedID {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "arguments",
+ lv_arguments_3_0,
+ "FreeTypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)( ','
+ {
+ createLeafNode(grammarAccess.getOperationAccess().getCommaKeyword_3_1_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_1_1_0(), currentNode);
+ }
+ lv_arguments_5_0=ruleFreeTypedID {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "arguments",
+ lv_arguments_5_0,
+ "FreeTypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))*)? ')'
+ {
+ createLeafNode(grammarAccess.getOperationAccess().getRightParenthesisKeyword_4(), null);
+ }
+( ':'
+ {
+ createLeafNode(grammarAccess.getOperationAccess().getColonKeyword_5_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getReturntypeFreeTypeParserRuleCall_5_1_0(), currentNode);
+ }
+ lv_returntype_8_0=ruleFreeType {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "returntype",
+ lv_returntype_8_0,
+ "FreeType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getDetailCodeDetailCodeParserRuleCall_6_0(), currentNode);
+ }
+ lv_detailCode_9_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "detailCode",
+ lv_detailCode_9_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleProtocolClass
+entryRuleProtocolClass returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getProtocolClassRule(), currentNode); }
+ iv_ruleProtocolClass=ruleProtocolClass
+ { $current=$iv_ruleProtocolClass.current; }
+ EOF
+;
+
+// Rule ProtocolClass
+ruleProtocolClass returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'ProtocolClass'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getProtocolClassKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)( 'extends'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getExtendsKeyword_2_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '{'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_3(), null);
+ }
+( 'usercode1'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getUsercode1Keyword_4_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getUserCode1DetailCodeParserRuleCall_4_1_0(), currentNode);
+ }
+ lv_userCode1_6_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "userCode1",
+ lv_userCode1_6_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?( 'usercode2'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getUsercode2Keyword_5_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getUserCode2DetailCodeParserRuleCall_5_1_0(), currentNode);
+ }
+ lv_userCode2_8_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "userCode2",
+ lv_userCode2_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? 'incoming'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getIncomingKeyword_6(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_7(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getIncomingMessagesMessageParserRuleCall_8_0(), currentNode);
+ }
+ lv_incomingMessages_11_0=ruleMessage {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "incomingMessages",
+ lv_incomingMessages_11_0,
+ "Message",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_9(), null);
+ }
+ 'outgoing'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getOutgoingKeyword_10(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_11(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getOutgoingMessagesMessageParserRuleCall_12_0(), currentNode);
+ }
+ lv_outgoingMessages_15_0=ruleMessage {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "outgoingMessages",
+ lv_outgoingMessages_15_0,
+ "Message",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_13(), null);
+ }
+( 'regular'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRegularKeyword_14_0(), null);
+ }
+ 'PortClass'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getPortClassKeyword_14_1(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getRegularPortClassParserRuleCall_14_2_0(), currentNode);
+ }
+ lv_regular_19_0=rulePortClass {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "regular",
+ lv_regular_19_0,
+ "PortClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?( 'conjugate'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getConjugateKeyword_15_0(), null);
+ }
+ 'PortClass'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getPortClassKeyword_15_1(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getConjugatePortClassParserRuleCall_15_2_0(), currentNode);
+ }
+ lv_conjugate_22_0=rulePortClass {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "conjugate",
+ lv_conjugate_22_0,
+ "PortClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getSemanticsProtocolSemanticsParserRuleCall_16_0(), currentNode);
+ }
+ lv_semantics_23_0=ruleProtocolSemantics {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "semantics",
+ lv_semantics_23_0,
+ "ProtocolSemantics",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)? '}'
+ {
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_17(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMessage
+entryRuleMessage returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getMessageRule(), currentNode); }
+ iv_ruleMessage=ruleMessage
+ { $current=$iv_ruleMessage.current; }
+ EOF
+;
+
+// Rule Message
+ruleMessage returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Message'
+ {
+ createLeafNode(grammarAccess.getMessageAccess().getMessageKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getMessageRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) '('
+ {
+ createLeafNode(grammarAccess.getMessageAccess().getLeftParenthesisKeyword_2(), null);
+ }
+((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_0_0(), currentNode);
+ }
+ lv_arguments_3_0=ruleTypedID {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getMessageRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "arguments",
+ lv_arguments_3_0,
+ "TypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)( ','
+ {
+ createLeafNode(grammarAccess.getMessageAccess().getCommaKeyword_3_1_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_1_1_0(), currentNode);
+ }
+ lv_arguments_5_0=ruleTypedID {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getMessageRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "arguments",
+ lv_arguments_5_0,
+ "TypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))*)? ')'
+ {
+ createLeafNode(grammarAccess.getMessageAccess().getRightParenthesisKeyword_4(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePortClass
+entryRulePortClass returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getPortClassRule(), currentNode); }
+ iv_rulePortClass=rulePortClass
+ { $current=$iv_rulePortClass.current; }
+ EOF
+;
+
+// Rule PortClass
+rulePortClass returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( '{'
+ {
+ createLeafNode(grammarAccess.getPortClassAccess().getLeftCurlyBracketKeyword_0(), null);
+ }
+( 'usercode'
+ {
+ createLeafNode(grammarAccess.getPortClassAccess().getUsercodeKeyword_1_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getUserCodeDetailCodeParserRuleCall_1_1_0(), currentNode);
+ }
+ lv_userCode_2_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "userCode",
+ lv_userCode_2_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getAttributesAttributeParserRuleCall_2_0_0(), currentNode);
+ }
+ lv_attributes_3_0=ruleAttribute {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "attributes",
+ lv_attributes_3_0,
+ "Attribute",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getOperationsOperationParserRuleCall_2_1_0(), currentNode);
+ }
+ lv_operations_4_0=ruleOperation {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "operations",
+ lv_operations_4_0,
+ "Operation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getMsgHandlersMessageHandlerParserRuleCall_2_2_0(), currentNode);
+ }
+ lv_msgHandlers_5_0=ruleMessageHandler {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "msgHandlers",
+ lv_msgHandlers_5_0,
+ "MessageHandler",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))+ '}'
+ {
+ createLeafNode(grammarAccess.getPortClassAccess().getRightCurlyBracketKeyword_3(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMessageHandler
+entryRuleMessageHandler returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getMessageHandlerRule(), currentNode); }
+ iv_ruleMessageHandler=ruleMessageHandler
+ { $current=$iv_ruleMessageHandler.current; }
+ EOF
+;
+
+// Rule MessageHandler
+ruleMessageHandler returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'handle'
+ {
+ createLeafNode(grammarAccess.getMessageHandlerAccess().getHandleKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getMessageHandlerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0(), "msg");
+ }
+
+)
+)(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getMessageHandlerAccess().getDetailCodeDetailCodeParserRuleCall_2_0(), currentNode);
+ }
+ lv_detailCode_2_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getMessageHandlerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "detailCode",
+ lv_detailCode_2_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleProtocolSemantics
+entryRuleProtocolSemantics returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getProtocolSemanticsRule(), currentNode); }
+ iv_ruleProtocolSemantics=ruleProtocolSemantics
+ { $current=$iv_ruleProtocolSemantics.current; }
+ EOF
+;
+
+// Rule ProtocolSemantics
+ruleProtocolSemantics returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'semantics'
+ {
+ createLeafNode(grammarAccess.getProtocolSemanticsAccess().getSemanticsKeyword_0(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getProtocolSemanticsAccess().getLeftCurlyBracketKeyword_1(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getProtocolSemanticsAccess().getRulesSemanticsRuleParserRuleCall_2_0(), currentNode);
+ }
+ lv_rules_2_0=ruleSemanticsRule {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getProtocolSemanticsRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "rules",
+ lv_rules_2_0,
+ "SemanticsRule",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)+ '}'
+ {
+ createLeafNode(grammarAccess.getProtocolSemanticsAccess().getRightCurlyBracketKeyword_3(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSemanticsRule
+entryRuleSemanticsRule returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSemanticsRuleRule(), currentNode); }
+ iv_ruleSemanticsRule=ruleSemanticsRule
+ { $current=$iv_ruleSemanticsRule.current; }
+ EOF
+;
+
+// Rule SemanticsRule
+ruleSemanticsRule returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSemanticsRuleAccess().getSemanticsInRuleParserRuleCall_0(), currentNode);
+ }
+ this_SemanticsInRule_0=ruleSemanticsInRule
+ {
+ $current = $this_SemanticsInRule_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getSemanticsRuleAccess().getSemanticsOutRuleParserRuleCall_1(), currentNode);
+ }
+ this_SemanticsOutRule_1=ruleSemanticsOutRule
+ {
+ $current = $this_SemanticsOutRule_1.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSemanticsInRule
+entryRuleSemanticsInRule returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSemanticsInRuleRule(), currentNode); }
+ iv_ruleSemanticsInRule=ruleSemanticsInRule
+ { $current=$iv_ruleSemanticsInRule.current; }
+ EOF
+;
+
+// Rule SemanticsInRule
+ruleSemanticsInRule returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'in'
+ {
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getInKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSemanticsInRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0(), "msg");
+ }
+
+)
+) '->'
+ {
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getHyphenMinusGreaterThanSignKeyword_2(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getLeftCurlyBracketKeyword_3(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSemanticsInRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0(), currentNode);
+ }
+ lv_followUps_4_0=ruleSemanticsRule {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSemanticsInRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "followUps",
+ lv_followUps_4_0,
+ "SemanticsRule",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getRightCurlyBracketKeyword_5(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSemanticsOutRule
+entryRuleSemanticsOutRule returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSemanticsOutRuleRule(), currentNode); }
+ iv_ruleSemanticsOutRule=ruleSemanticsOutRule
+ { $current=$iv_ruleSemanticsOutRule.current; }
+ EOF
+;
+
+// Rule SemanticsOutRule
+ruleSemanticsOutRule returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'out'
+ {
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getOutKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSemanticsOutRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0(), "msg");
+ }
+
+)
+) '->'
+ {
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getHyphenMinusGreaterThanSignKeyword_2(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getLeftCurlyBracketKeyword_3(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0(), currentNode);
+ }
+ lv_followUps_4_0=ruleSemanticsRule {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSemanticsOutRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "followUps",
+ lv_followUps_4_0,
+ "SemanticsRule",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getRightCurlyBracketKeyword_5(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleActorClass
+entryRuleActorClass returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getActorClassRule(), currentNode); }
+ iv_ruleActorClass=ruleActorClass
+ { $current=$iv_ruleActorClass.current; }
+ EOF
+;
+
+// Rule ActorClass
+ruleActorClass returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ lv_abstract_0_0= 'abstract'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0(), "abstract");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ set($current, "abstract", true, "abstract", lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)? 'ActorClass'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getActorClassKeyword_1(), null);
+ }
+(
+(
+ lv_name_2_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)( 'extends'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getExtendsKeyword_3_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '{'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_4(), null);
+ }
+( 'Interface'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getInterfaceKeyword_5_0(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_5_1(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getIfPortsPortParserRuleCall_5_2_0(), currentNode);
+ }
+ lv_ifPorts_8_0=rulePort {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "ifPorts",
+ lv_ifPorts_8_0,
+ "Port",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getIfSPPsSPPRefParserRuleCall_5_3_0(), currentNode);
+ }
+ lv_ifSPPs_9_0=ruleSPPRef {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "ifSPPs",
+ lv_ifSPPs_9_0,
+ "SPPRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_5_4(), null);
+ }
+)?( 'Structure'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getStructureKeyword_6_0(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_6_1(), null);
+ }
+( 'usercode1'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getUsercode1Keyword_6_2_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getUserCode1DetailCodeParserRuleCall_6_2_1_0(), currentNode);
+ }
+ lv_userCode1_14_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "userCode1",
+ lv_userCode1_14_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?( 'usercode2'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getUsercode2Keyword_6_3_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getUserCode2DetailCodeParserRuleCall_6_3_1_0(), currentNode);
+ }
+ lv_userCode2_16_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "userCode2",
+ lv_userCode2_16_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getIntPortsPortParserRuleCall_6_4_0_0(), currentNode);
+ }
+ lv_intPorts_17_0=rulePort {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "intPorts",
+ lv_intPorts_17_0,
+ "Port",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getExtPortsExternalPortParserRuleCall_6_4_1_0(), currentNode);
+ }
+ lv_extPorts_18_0=ruleExternalPort {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "extPorts",
+ lv_extPorts_18_0,
+ "ExternalPort",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getServiceImplementationsServiceImplementationParserRuleCall_6_5_0(), currentNode);
+ }
+ lv_serviceImplementations_19_0=ruleServiceImplementation {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "serviceImplementations",
+ lv_serviceImplementations_19_0,
+ "ServiceImplementation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getStrSAPsSAPRefParserRuleCall_6_6_0(), currentNode);
+ }
+ lv_strSAPs_20_0=ruleSAPRef {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "strSAPs",
+ lv_strSAPs_20_0,
+ "SAPRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getAttributesAttributeParserRuleCall_6_7_0(), currentNode);
+ }
+ lv_attributes_21_0=ruleAttribute {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "attributes",
+ lv_attributes_21_0,
+ "Attribute",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getActorRefsActorRefParserRuleCall_6_8_0(), currentNode);
+ }
+ lv_actorRefs_22_0=ruleActorRef {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "actorRefs",
+ lv_actorRefs_22_0,
+ "ActorRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getBindingsBindingParserRuleCall_6_9_0(), currentNode);
+ }
+ lv_bindings_23_0=ruleBinding {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "bindings",
+ lv_bindings_23_0,
+ "Binding",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getConnectionsLayerConnectionParserRuleCall_6_10_0(), currentNode);
+ }
+ lv_connections_24_0=ruleLayerConnection {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "connections",
+ lv_connections_24_0,
+ "LayerConnection",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_6_11(), null);
+ }
+)?( 'Behavior'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getBehaviorKeyword_7_0(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_7_1(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getOperationsOperationParserRuleCall_7_2_0(), currentNode);
+ }
+ lv_operations_28_0=ruleOperation {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "operations",
+ lv_operations_28_0,
+ "Operation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getStateMachineStateMachineParserRuleCall_7_3_0(), currentNode);
+ }
+ lv_stateMachine_29_0=ruleStateMachine {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "stateMachine",
+ lv_stateMachine_29_0,
+ "StateMachine",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)? '}'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_7_4(), null);
+ }
+)? '}'
+ {
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_8(), null);
+ }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRulePort
+entryRulePort returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getPortRule(), currentNode); }
+ iv_rulePort=rulePort
+ { $current=$iv_rulePort.current; }
+ EOF
+;
+
+// Rule Port
+rulePort returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ lv_conjugated_0_0= 'conjugated'
+ {
+ createLeafNode(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0(), "conjugated");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ set($current, "conjugated", true, "conjugated", lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)? 'Port'
+ {
+ createLeafNode(grammarAccess.getPortAccess().getPortKeyword_1(), null);
+ }
+(
+(
+ lv_name_2_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)( '['
+ {
+ createLeafNode(grammarAccess.getPortAccess().getLeftSquareBracketKeyword_3_0(), null);
+ }
+(
+(
+ lv_multiplicity_4_0=RULE_INT
+ {
+ createLeafNode(grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0(), "multiplicity");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "multiplicity",
+ lv_multiplicity_4_0,
+ "INT",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ']'
+ {
+ createLeafNode(grammarAccess.getPortAccess().getRightSquareBracketKeyword_3_2(), null);
+ }
+)? ':'
+ {
+ createLeafNode(grammarAccess.getPortAccess().getColonKeyword_4(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleExternalPort
+entryRuleExternalPort returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getExternalPortRule(), currentNode); }
+ iv_ruleExternalPort=ruleExternalPort
+ { $current=$iv_ruleExternalPort.current; }
+ EOF
+;
+
+// Rule ExternalPort
+ruleExternalPort returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'external'
+ {
+ createLeafNode(grammarAccess.getExternalPortAccess().getExternalKeyword_0(), null);
+ }
+ 'Port'
+ {
+ createLeafNode(grammarAccess.getExternalPortAccess().getPortKeyword_1(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getExternalPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0(), "ifport");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSAPRef
+entryRuleSAPRef returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSAPRefRule(), currentNode); }
+ iv_ruleSAPRef=ruleSAPRef
+ { $current=$iv_ruleSAPRef.current; }
+ EOF
+;
+
+// Rule SAPRef
+ruleSAPRef returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'SAP'
+ {
+ createLeafNode(grammarAccess.getSAPRefAccess().getSAPKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSAPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ':'
+ {
+ createLeafNode(grammarAccess.getSAPRefAccess().getColonKeyword_2(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSAPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSPPRef
+entryRuleSPPRef returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSPPRefRule(), currentNode); }
+ iv_ruleSPPRef=ruleSPPRef
+ { $current=$iv_ruleSPPRef.current; }
+ EOF
+;
+
+// Rule SPPRef
+ruleSPPRef returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'SPP'
+ {
+ createLeafNode(grammarAccess.getSPPRefAccess().getSPPKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSPPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ':'
+ {
+ createLeafNode(grammarAccess.getSPPRefAccess().getColonKeyword_2(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSPPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleServiceImplementation
+entryRuleServiceImplementation returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getServiceImplementationRule(), currentNode); }
+ iv_ruleServiceImplementation=ruleServiceImplementation
+ { $current=$iv_ruleServiceImplementation.current; }
+ EOF
+;
+
+// Rule ServiceImplementation
+ruleServiceImplementation returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'ServiceImplementation'
+ {
+ createLeafNode(grammarAccess.getServiceImplementationAccess().getServiceImplementationKeyword_0(), null);
+ }
+ 'of'
+ {
+ createLeafNode(grammarAccess.getServiceImplementationAccess().getOfKeyword_1(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getServiceImplementationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0(), "spp");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLogicalSystem
+entryRuleLogicalSystem returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getLogicalSystemRule(), currentNode); }
+ iv_ruleLogicalSystem=ruleLogicalSystem
+ { $current=$iv_ruleLogicalSystem.current; }
+ EOF
+;
+
+// Rule LogicalSystem
+ruleLogicalSystem returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'LogicalSystem'
+ {
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getLogicalSystemKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getLeftCurlyBracketKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getLogicalSystemAccess().getSubSystemsSubSystemRefParserRuleCall_3_0(), currentNode);
+ }
+ lv_subSystems_3_0=ruleSubSystemRef {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "subSystems",
+ lv_subSystems_3_0,
+ "SubSystemRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getLogicalSystemAccess().getBindingsBindingParserRuleCall_4_0(), currentNode);
+ }
+ lv_bindings_4_0=ruleBinding {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "bindings",
+ lv_bindings_4_0,
+ "Binding",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getLogicalSystemAccess().getConnectionsLayerConnectionParserRuleCall_5_0(), currentNode);
+ }
+ lv_connections_5_0=ruleLayerConnection {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "connections",
+ lv_connections_5_0,
+ "LayerConnection",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getRightCurlyBracketKeyword_6(), null);
+ }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleSubSystemRef
+entryRuleSubSystemRef returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSubSystemRefRule(), currentNode); }
+ iv_ruleSubSystemRef=ruleSubSystemRef
+ { $current=$iv_ruleSubSystemRef.current; }
+ EOF
+;
+
+// Rule SubSystemRef
+ruleSubSystemRef returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'SubSystemRef'
+ {
+ createLeafNode(grammarAccess.getSubSystemRefAccess().getSubSystemRefKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ':'
+ {
+ createLeafNode(grammarAccess.getSubSystemRefAccess().getColonKeyword_2(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSubSystemClass
+entryRuleSubSystemClass returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSubSystemClassRule(), currentNode); }
+ iv_ruleSubSystemClass=ruleSubSystemClass
+ { $current=$iv_ruleSubSystemClass.current; }
+ EOF
+;
+
+// Rule SubSystemClass
+ruleSubSystemClass returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'SubSystemClass'
+ {
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getSubSystemClassKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getLeftCurlyBracketKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getRelayPortsPortParserRuleCall_3_0(), currentNode);
+ }
+ lv_relayPorts_3_0=rulePort {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "relayPorts",
+ lv_relayPorts_3_0,
+ "Port",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getIfSPPsSPPRefParserRuleCall_4_0(), currentNode);
+ }
+ lv_ifSPPs_4_0=ruleSPPRef {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "ifSPPs",
+ lv_ifSPPs_4_0,
+ "SPPRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getActorRefsActorRefParserRuleCall_5_0(), currentNode);
+ }
+ lv_actorRefs_5_0=ruleActorRef {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "actorRefs",
+ lv_actorRefs_5_0,
+ "ActorRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getBindingsBindingParserRuleCall_6_0(), currentNode);
+ }
+ lv_bindings_6_0=ruleBinding {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "bindings",
+ lv_bindings_6_0,
+ "Binding",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getConnectionsLayerConnectionParserRuleCall_7_0(), currentNode);
+ }
+ lv_connections_7_0=ruleLayerConnection {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "connections",
+ lv_connections_7_0,
+ "LayerConnection",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getThreadsLogicalThreadParserRuleCall_8_0(), currentNode);
+ }
+ lv_threads_8_0=ruleLogicalThread {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "threads",
+ lv_threads_8_0,
+ "LogicalThread",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)* '}'
+ {
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getRightCurlyBracketKeyword_9(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLogicalThread
+entryRuleLogicalThread returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getLogicalThreadRule(), currentNode); }
+ iv_ruleLogicalThread=ruleLogicalThread
+ { $current=$iv_ruleLogicalThread.current; }
+ EOF
+;
+
+// Rule LogicalThread
+ruleLogicalThread returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'LogicalThread'
+ {
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getLogicalThreadKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLogicalThreadRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getLeftCurlyBracketKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_3_0(), currentNode);
+ }
+ lv_instances_3_0=ruleActorInstancePath {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLogicalThreadRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "instances",
+ lv_instances_3_0,
+ "ActorInstancePath",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)( ','
+ {
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getCommaKeyword_4_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_4_1_0(), currentNode);
+ }
+ lv_instances_5_0=ruleActorInstancePath {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLogicalThreadRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "instances",
+ lv_instances_5_0,
+ "ActorInstancePath",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))* '}'
+ {
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getRightCurlyBracketKeyword_5(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleActorInstancePath
+entryRuleActorInstancePath returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getActorInstancePathRule(), currentNode); }
+ iv_ruleActorInstancePath=ruleActorInstancePath
+ { $current=$iv_ruleActorInstancePath.current; }
+ EOF
+;
+
+// Rule ActorInstancePath
+ruleActorInstancePath returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ lv_segments_0_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0(), "segments");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorInstancePathRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ add(
+ $current,
+ "segments",
+ lv_segments_0_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)( '.'
+ {
+ createLeafNode(grammarAccess.getActorInstancePathAccess().getFullStopKeyword_1_0(), null);
+ }
+(
+(
+ lv_segments_2_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0(), "segments");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorInstancePathRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ add(
+ $current,
+ "segments",
+ lv_segments_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleBinding
+entryRuleBinding returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getBindingRule(), currentNode); }
+ iv_ruleBinding=ruleBinding
+ { $current=$iv_ruleBinding.current; }
+ EOF
+;
+
+// Rule Binding
+ruleBinding returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Binding'
+ {
+ createLeafNode(grammarAccess.getBindingAccess().getBindingKeyword_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getBindingAccess().getEndpoint1BindingEndPointParserRuleCall_1_0(), currentNode);
+ }
+ lv_endpoint1_1_0=ruleBindingEndPoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBindingRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "endpoint1",
+ lv_endpoint1_1_0,
+ "BindingEndPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) 'and'
+ {
+ createLeafNode(grammarAccess.getBindingAccess().getAndKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getBindingAccess().getEndpoint2BindingEndPointParserRuleCall_3_0(), currentNode);
+ }
+ lv_endpoint2_3_0=ruleBindingEndPoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBindingRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "endpoint2",
+ lv_endpoint2_3_0,
+ "BindingEndPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleBindingEndPoint
+entryRuleBindingEndPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getBindingEndPointRule(), currentNode); }
+ iv_ruleBindingEndPoint=ruleBindingEndPoint
+ { $current=$iv_ruleBindingEndPoint.current; }
+ EOF
+;
+
+// Rule BindingEndPoint
+ruleBindingEndPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(((
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBindingEndPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0(), "actorRef");
+ }
+
+)
+) '.'
+ {
+ createLeafNode(grammarAccess.getBindingEndPointAccess().getFullStopKeyword_0_1(), null);
+ }
+)?(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBindingEndPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0(), "port");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLayerConnection
+entryRuleLayerConnection returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getLayerConnectionRule(), currentNode); }
+ iv_ruleLayerConnection=ruleLayerConnection
+ { $current=$iv_ruleLayerConnection.current; }
+ EOF
+;
+
+// Rule LayerConnection
+ruleLayerConnection returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'LayerConnection'
+ {
+ createLeafNode(grammarAccess.getLayerConnectionAccess().getLayerConnectionKeyword_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getLayerConnectionAccess().getFromSAPointParserRuleCall_1_0(), currentNode);
+ }
+ lv_from_1_0=ruleSAPoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLayerConnectionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "from",
+ lv_from_1_0,
+ "SAPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) 'satisfied_by'
+ {
+ createLeafNode(grammarAccess.getLayerConnectionAccess().getSatisfied_byKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getLayerConnectionAccess().getToSPPointParserRuleCall_3_0(), currentNode);
+ }
+ lv_to_3_0=ruleSPPoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getLayerConnectionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "to",
+ lv_to_3_0,
+ "SPPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSAPoint
+entryRuleSAPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSAPointRule(), currentNode); }
+ iv_ruleSAPoint=ruleSAPoint
+ { $current=$iv_ruleSAPoint.current; }
+ EOF
+;
+
+// Rule SAPoint
+ruleSAPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getSAPointAccess().getRefSAPointParserRuleCall_0(), currentNode);
+ }
+ this_RefSAPoint_0=ruleRefSAPoint
+ {
+ $current = $this_RefSAPoint_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getSAPointAccess().getRelaySAPointParserRuleCall_1(), currentNode);
+ }
+ this_RelaySAPoint_1=ruleRelaySAPoint
+ {
+ $current = $this_RelaySAPoint_1.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRefSAPoint
+entryRuleRefSAPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getRefSAPointRule(), currentNode); }
+ iv_ruleRefSAPoint=ruleRefSAPoint
+ { $current=$iv_ruleRefSAPoint.current; }
+ EOF
+;
+
+// Rule RefSAPoint
+ruleRefSAPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'ref'
+ {
+ createLeafNode(grammarAccess.getRefSAPointAccess().getRefKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRefSAPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0(), "ref");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleRelaySAPoint
+entryRuleRelaySAPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getRelaySAPointRule(), currentNode); }
+ iv_ruleRelaySAPoint=ruleRelaySAPoint
+ { $current=$iv_ruleRelaySAPoint.current; }
+ EOF
+;
+
+// Rule RelaySAPoint
+ruleRelaySAPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'relay_sap'
+ {
+ createLeafNode(grammarAccess.getRelaySAPointAccess().getRelay_sapKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRelaySAPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0(), "relay");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSPPoint
+entryRuleSPPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSPPointRule(), currentNode); }
+ iv_ruleSPPoint=ruleSPPoint
+ { $current=$iv_ruleSPPoint.current; }
+ EOF
+;
+
+// Rule SPPoint
+ruleSPPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSPPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0(), "ref");
+ }
+
+)
+) '.'
+ {
+ createLeafNode(grammarAccess.getSPPointAccess().getFullStopKeyword_1(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSPPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0(), "service");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleActorRef
+entryRuleActorRef returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getActorRefRule(), currentNode); }
+ iv_ruleActorRef=ruleActorRef
+ { $current=$iv_ruleActorRef.current; }
+ EOF
+;
+
+// Rule ActorRef
+ruleActorRef returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'ActorRef'
+ {
+ createLeafNode(grammarAccess.getActorRefAccess().getActorRefKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) ':'
+ {
+ createLeafNode(grammarAccess.getActorRefAccess().getColonKeyword_2(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getActorRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStateGraphNode
+entryRuleStateGraphNode returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getStateGraphNodeRule(), currentNode); }
+ iv_ruleStateGraphNode=ruleStateGraphNode
+ { $current=$iv_ruleStateGraphNode.current; }
+ EOF
+;
+
+// Rule StateGraphNode
+ruleStateGraphNode returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateGraphNodeAccess().getStateParserRuleCall_0(), currentNode);
+ }
+ this_State_0=ruleState
+ {
+ $current = $this_State_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateGraphNodeAccess().getChoicePointParserRuleCall_1(), currentNode);
+ }
+ this_ChoicePoint_1=ruleChoicePoint
+ {
+ $current = $this_ChoicePoint_1.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateGraphNodeAccess().getTrPointParserRuleCall_2(), currentNode);
+ }
+ this_TrPoint_2=ruleTrPoint
+ {
+ $current = $this_TrPoint_2.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleState
+entryRuleState returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getStateRule(), currentNode); }
+ iv_ruleState=ruleState
+ { $current=$iv_ruleState.current; }
+ EOF
+;
+
+// Rule State
+ruleState returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateAccess().getBaseStateParserRuleCall_0(), currentNode);
+ }
+ this_BaseState_0=ruleBaseState
+ {
+ $current = $this_BaseState_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateAccess().getRefinedStateParserRuleCall_1(), currentNode);
+ }
+ this_RefinedState_1=ruleRefinedState
+ {
+ $current = $this_RefinedState_1.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStateGraph
+entryRuleStateGraph returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getStateGraphRule(), currentNode); }
+ iv_ruleStateGraph=ruleStateGraph
+ { $current=$iv_ruleStateGraph.current; }
+ EOF
+;
+
+// Rule StateGraph
+ruleStateGraph returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( '{'
+ {
+ createLeafNode(grammarAccess.getStateGraphAccess().getLeftCurlyBracketKeyword_0(), null);
+ }
+((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getStatesStateParserRuleCall_1_0_0(), currentNode);
+ }
+ lv_states_1_0=ruleState {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "states",
+ lv_states_1_0,
+ "State",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getTrPointsTrPointParserRuleCall_1_1_0(), currentNode);
+ }
+ lv_trPoints_2_0=ruleTrPoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "trPoints",
+ lv_trPoints_2_0,
+ "TrPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getChPointsChoicePointParserRuleCall_1_2_0(), currentNode);
+ }
+ lv_chPoints_3_0=ruleChoicePoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "chPoints",
+ lv_chPoints_3_0,
+ "ChoicePoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getTransitionsTransitionParserRuleCall_1_3_0(), currentNode);
+ }
+ lv_transitions_4_0=ruleTransition {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "transitions",
+ lv_transitions_4_0,
+ "Transition",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))+ '}'
+ {
+ createLeafNode(grammarAccess.getStateGraphAccess().getRightCurlyBracketKeyword_2(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStateMachine
+entryRuleStateMachine returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getStateMachineRule(), currentNode); }
+ iv_ruleStateMachine=ruleStateMachine
+ { $current=$iv_ruleStateMachine.current; }
+ EOF
+;
+
+// Rule StateMachine
+ruleStateMachine returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'StateMachine'
+ {
+ createLeafNode(grammarAccess.getStateMachineAccess().getStateMachineKeyword_0(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_1(), null);
+ }
+((
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getStatesStateParserRuleCall_2_0_0(), currentNode);
+ }
+ lv_states_2_0=ruleState {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "states",
+ lv_states_2_0,
+ "State",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getTrPointsTrPointParserRuleCall_2_1_0(), currentNode);
+ }
+ lv_trPoints_3_0=ruleTrPoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "trPoints",
+ lv_trPoints_3_0,
+ "TrPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getChPointsChoicePointParserRuleCall_2_2_0(), currentNode);
+ }
+ lv_chPoints_4_0=ruleChoicePoint {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "chPoints",
+ lv_chPoints_4_0,
+ "ChoicePoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)
+ |(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_2_3_0(), currentNode);
+ }
+ lv_transitions_5_0=ruleTransition {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "transitions",
+ lv_transitions_5_0,
+ "Transition",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))+ '}'
+ {
+ createLeafNode(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_3(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBaseState
+entryRuleBaseState returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getBaseStateRule(), currentNode); }
+ iv_ruleBaseState=ruleBaseState
+ { $current=$iv_ruleBaseState.current; }
+ EOF
+;
+
+// Rule BaseState
+ruleBaseState returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'State'
+ {
+ createLeafNode(grammarAccess.getBaseStateAccess().getStateKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getBaseStateAccess().getLeftCurlyBracketKeyword_2(), null);
+ }
+( 'entry'
+ {
+ createLeafNode(grammarAccess.getBaseStateAccess().getEntryKeyword_3_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getBaseStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0(), currentNode);
+ }
+ lv_entryCode_4_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "entryCode",
+ lv_entryCode_4_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?( 'exit'
+ {
+ createLeafNode(grammarAccess.getBaseStateAccess().getExitKeyword_4_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getBaseStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0(), currentNode);
+ }
+ lv_exitCode_6_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "exitCode",
+ lv_exitCode_6_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?( 'subgraph'
+ {
+ createLeafNode(grammarAccess.getBaseStateAccess().getSubgraphKeyword_5_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getBaseStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0(), currentNode);
+ }
+ lv_subgraph_8_0=ruleStateGraph {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "subgraph",
+ lv_subgraph_8_0,
+ "StateGraph",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '}'
+ {
+ createLeafNode(grammarAccess.getBaseStateAccess().getRightCurlyBracketKeyword_6(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRefinedState
+entryRuleRefinedState returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getRefinedStateRule(), currentNode); }
+ iv_ruleRefinedState=ruleRefinedState
+ { $current=$iv_ruleRefinedState.current; }
+ EOF
+;
+
+// Rule RefinedState
+ruleRefinedState returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'RefinedState'
+ {
+ createLeafNode(grammarAccess.getRefinedStateAccess().getRefinedStateKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ {
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0(), currentNode);
+ }
+ ruleFQN {
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getRefinedStateAccess().getLeftCurlyBracketKeyword_2(), null);
+ }
+( 'entry'
+ {
+ createLeafNode(grammarAccess.getRefinedStateAccess().getEntryKeyword_3_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0(), currentNode);
+ }
+ lv_entryCode_4_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "entryCode",
+ lv_entryCode_4_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?( 'exit'
+ {
+ createLeafNode(grammarAccess.getRefinedStateAccess().getExitKeyword_4_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0(), currentNode);
+ }
+ lv_exitCode_6_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "exitCode",
+ lv_exitCode_6_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))?( 'subgraph'
+ {
+ createLeafNode(grammarAccess.getRefinedStateAccess().getSubgraphKeyword_5_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0(), currentNode);
+ }
+ lv_subgraph_8_0=ruleStateGraph {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "subgraph",
+ lv_subgraph_8_0,
+ "StateGraph",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '}'
+ {
+ createLeafNode(grammarAccess.getRefinedStateAccess().getRightCurlyBracketKeyword_6(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDetailCode
+entryRuleDetailCode returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getDetailCodeRule(), currentNode); }
+ iv_ruleDetailCode=ruleDetailCode
+ { $current=$iv_ruleDetailCode.current; }
+ EOF
+;
+
+// Rule DetailCode
+ruleDetailCode returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( '{'
+ {
+ createLeafNode(grammarAccess.getDetailCodeAccess().getLeftCurlyBracketKeyword_0(), null);
+ }
+(
+(
+ lv_commands_1_0=RULE_STRING
+ {
+ createLeafNode(grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0(), "commands");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getDetailCodeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ add(
+ $current,
+ "commands",
+ lv_commands_1_0,
+ "STRING",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)+ '}'
+ {
+ createLeafNode(grammarAccess.getDetailCodeAccess().getRightCurlyBracketKeyword_2(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTrPoint
+entryRuleTrPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTrPointRule(), currentNode); }
+ iv_ruleTrPoint=ruleTrPoint
+ { $current=$iv_ruleTrPoint.current; }
+ EOF
+;
+
+// Rule TrPoint
+ruleTrPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTrPointAccess().getTransitionPointParserRuleCall_0(), currentNode);
+ }
+ this_TransitionPoint_0=ruleTransitionPoint
+ {
+ $current = $this_TransitionPoint_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getTrPointAccess().getEntryPointParserRuleCall_1(), currentNode);
+ }
+ this_EntryPoint_1=ruleEntryPoint
+ {
+ $current = $this_EntryPoint_1.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getTrPointAccess().getExitPointParserRuleCall_2(), currentNode);
+ }
+ this_ExitPoint_2=ruleExitPoint
+ {
+ $current = $this_ExitPoint_2.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTransitionPoint
+entryRuleTransitionPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTransitionPointRule(), currentNode); }
+ iv_ruleTransitionPoint=ruleTransitionPoint
+ { $current=$iv_ruleTransitionPoint.current; }
+ EOF
+;
+
+// Rule TransitionPoint
+ruleTransitionPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ lv_handler_0_0= 'handler'
+ {
+ createLeafNode(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0(), "handler");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTransitionPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ set($current, "handler", true, "handler", lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)? 'TransitionPoint'
+ {
+ createLeafNode(grammarAccess.getTransitionPointAccess().getTransitionPointKeyword_1(), null);
+ }
+(
+(
+ lv_name_2_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTransitionPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleEntryPoint
+entryRuleEntryPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getEntryPointRule(), currentNode); }
+ iv_ruleEntryPoint=ruleEntryPoint
+ { $current=$iv_ruleEntryPoint.current; }
+ EOF
+;
+
+// Rule EntryPoint
+ruleEntryPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'EntryPoint'
+ {
+ createLeafNode(grammarAccess.getEntryPointAccess().getEntryPointKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getEntryPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleExitPoint
+entryRuleExitPoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getExitPointRule(), currentNode); }
+ iv_ruleExitPoint=ruleExitPoint
+ { $current=$iv_ruleExitPoint.current; }
+ EOF
+;
+
+// Rule ExitPoint
+ruleExitPoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'ExitPoint'
+ {
+ createLeafNode(grammarAccess.getExitPointAccess().getExitPointKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getExitPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleChoicePoint
+entryRuleChoicePoint returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getChoicePointRule(), currentNode); }
+ iv_ruleChoicePoint=ruleChoicePoint
+ { $current=$iv_ruleChoicePoint.current; }
+ EOF
+;
+
+// Rule ChoicePoint
+ruleChoicePoint returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'ChoicePoint'
+ {
+ createLeafNode(grammarAccess.getChoicePointAccess().getChoicePointKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getChoicePointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTransition
+entryRuleTransition returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTransitionRule(), currentNode); }
+ iv_ruleTransition=ruleTransition
+ { $current=$iv_ruleTransition.current; }
+ EOF
+;
+
+// Rule Transition
+ruleTransition returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTransitionAccess().getInitialTransitionParserRuleCall_0(), currentNode);
+ }
+ this_InitialTransition_0=ruleInitialTransition
+ {
+ $current = $this_InitialTransition_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getTransitionAccess().getNonInitialTransitionParserRuleCall_1(), currentNode);
+ }
+ this_NonInitialTransition_1=ruleNonInitialTransition
+ {
+ $current = $this_NonInitialTransition_1.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNonInitialTransition
+entryRuleNonInitialTransition returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getNonInitialTransitionRule(), currentNode); }
+ iv_ruleNonInitialTransition=ruleNonInitialTransition
+ { $current=$iv_ruleNonInitialTransition.current; }
+ EOF
+;
+
+// Rule NonInitialTransition
+ruleNonInitialTransition returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getNonInitialTransitionAccess().getTriggeredTransitionParserRuleCall_0(), currentNode);
+ }
+ this_TriggeredTransition_0=ruleTriggeredTransition
+ {
+ $current = $this_TriggeredTransition_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getNonInitialTransitionAccess().getContinuationTransitionParserRuleCall_1(), currentNode);
+ }
+ this_ContinuationTransition_1=ruleContinuationTransition
+ {
+ $current = $this_ContinuationTransition_1.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getNonInitialTransitionAccess().getCPBranchTransitionParserRuleCall_2(), currentNode);
+ }
+ this_CPBranchTransition_2=ruleCPBranchTransition
+ {
+ $current = $this_CPBranchTransition_2.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInitialTransition
+entryRuleInitialTransition returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getInitialTransitionRule(), currentNode); }
+ iv_ruleInitialTransition=ruleInitialTransition
+ { $current=$iv_ruleInitialTransition.current; }
+ EOF
+;
+
+// Rule InitialTransition
+ruleInitialTransition returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Transition'
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getTransitionKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getInitialTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)? ':'
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getColonKeyword_2(), null);
+ }
+ 'initial'
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getInitialKeyword_3(), null);
+ }
+ '->'
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getInitialTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+ }
+ lv_to_5_0=ruleTransitionTerminal {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getInitialTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+ }
+( 'action'
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getActionKeyword_7_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getInitialTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0(), currentNode);
+ }
+ lv_action_8_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getInitialTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "action",
+ lv_action_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '}'
+ {
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getRightCurlyBracketKeyword_8(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleContinuationTransition
+entryRuleContinuationTransition returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getContinuationTransitionRule(), currentNode); }
+ iv_ruleContinuationTransition=ruleContinuationTransition
+ { $current=$iv_ruleContinuationTransition.current; }
+ EOF
+;
+
+// Rule ContinuationTransition
+ruleContinuationTransition returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Transition'
+ {
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getTransitionKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)? ':'
+ {
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getColonKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getContinuationTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0(), currentNode);
+ }
+ lv_from_3_0=ruleTransitionTerminal {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "from",
+ lv_from_3_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '->'
+ {
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getContinuationTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+ }
+ lv_to_5_0=ruleTransitionTerminal {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+ }
+( 'action'
+ {
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getActionKeyword_7_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getContinuationTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0(), currentNode);
+ }
+ lv_action_8_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "action",
+ lv_action_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '}'
+ {
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getRightCurlyBracketKeyword_8(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTriggeredTransition
+entryRuleTriggeredTransition returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTriggeredTransitionRule(), currentNode); }
+ iv_ruleTriggeredTransition=ruleTriggeredTransition
+ { $current=$iv_ruleTriggeredTransition.current; }
+ EOF
+;
+
+// Rule TriggeredTransition
+ruleTriggeredTransition returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Transition'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getTransitionKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)? ':'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getColonKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0(), currentNode);
+ }
+ lv_from_3_0=ruleTransitionTerminal {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "from",
+ lv_from_3_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '->'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+ }
+ lv_to_5_0=ruleTransitionTerminal {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+ }
+ 'triggers'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getTriggersKeyword_7(), null);
+ }
+ '{'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_8(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_9_0(), currentNode);
+ }
+ lv_triggers_9_0=ruleTrigger {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "triggers",
+ lv_triggers_9_0,
+ "Trigger",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)( 'or'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getOrKeyword_10_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_10_1_0(), currentNode);
+ }
+ lv_triggers_11_0=ruleTrigger {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "triggers",
+ lv_triggers_11_0,
+ "Trigger",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))* '}'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_11(), null);
+ }
+( 'action'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getActionKeyword_12_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getActionDetailCodeParserRuleCall_12_1_0(), currentNode);
+ }
+ lv_action_14_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "action",
+ lv_action_14_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '}'
+ {
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_13(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCPBranchTransition
+entryRuleCPBranchTransition returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getCPBranchTransitionRule(), currentNode); }
+ iv_ruleCPBranchTransition=ruleCPBranchTransition
+ { $current=$iv_ruleCPBranchTransition.current; }
+ EOF
+;
+
+// Rule CPBranchTransition
+ruleCPBranchTransition returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'Transition'
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getTransitionKeyword_0(), null);
+ }
+(
+(
+ lv_name_1_0=RULE_ID
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+ }
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ try {
+ set(
+ $current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+)? ':'
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getColonKeyword_2(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0(), currentNode);
+ }
+ lv_from_3_0=ruleTransitionTerminal {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "from",
+ lv_from_3_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '->'
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+ }
+ lv_to_5_0=ruleTransitionTerminal {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+) '{'
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+ }
+ 'cond'
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getCondKeyword_7(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getConditionDetailCodeParserRuleCall_8_0(), currentNode);
+ }
+ lv_condition_8_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "condition",
+ lv_condition_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)( 'action'
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getActionKeyword_9_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getActionDetailCodeParserRuleCall_9_1_0(), currentNode);
+ }
+ lv_action_10_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "action",
+ lv_action_10_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))? '}'
+ {
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getRightCurlyBracketKeyword_10(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTransitionTerminal
+entryRuleTransitionTerminal returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTransitionTerminalRule(), currentNode); }
+ iv_ruleTransitionTerminal=ruleTransitionTerminal
+ { $current=$iv_ruleTransitionTerminal.current; }
+ EOF
+;
+
+// Rule TransitionTerminal
+ruleTransitionTerminal returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getStateTerminalParserRuleCall_0(), currentNode);
+ }
+ this_StateTerminal_0=ruleStateTerminal
+ {
+ $current = $this_StateTerminal_0.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getTrPointTerminalParserRuleCall_1(), currentNode);
+ }
+ this_TrPointTerminal_1=ruleTrPointTerminal
+ {
+ $current = $this_TrPointTerminal_1.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getSubStateTrPointTerminalParserRuleCall_2(), currentNode);
+ }
+ this_SubStateTrPointTerminal_2=ruleSubStateTrPointTerminal
+ {
+ $current = $this_SubStateTrPointTerminal_2.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getChoicepointTerminalParserRuleCall_3(), currentNode);
+ }
+ this_ChoicepointTerminal_3=ruleChoicepointTerminal
+ {
+ $current = $this_ChoicepointTerminal_3.current;
+ currentNode = currentNode.getParent();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStateTerminal
+entryRuleStateTerminal returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getStateTerminalRule(), currentNode); }
+ iv_ruleStateTerminal=ruleStateTerminal
+ { $current=$iv_ruleStateTerminal.current; }
+ EOF
+;
+
+// Rule StateTerminal
+ruleStateTerminal returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getStateTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0(), "state");
+ }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTrPointTerminal
+entryRuleTrPointTerminal returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTrPointTerminalRule(), currentNode); }
+ iv_ruleTrPointTerminal=ruleTrPointTerminal
+ { $current=$iv_ruleTrPointTerminal.current; }
+ EOF
+;
+
+// Rule TrPointTerminal
+ruleTrPointTerminal returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'my'
+ {
+ createLeafNode(grammarAccess.getTrPointTerminalAccess().getMyKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTrPointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0(), "trPoint");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSubStateTrPointTerminal
+entryRuleSubStateTrPointTerminal returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getSubStateTrPointTerminalRule(), currentNode); }
+ iv_ruleSubStateTrPointTerminal=ruleSubStateTrPointTerminal
+ { $current=$iv_ruleSubStateTrPointTerminal.current; }
+ EOF
+;
+
+// Rule SubStateTrPointTerminal
+ruleSubStateTrPointTerminal returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubStateTrPointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0(), "trPoint");
+ }
+
+)
+) 'of'
+ {
+ createLeafNode(grammarAccess.getSubStateTrPointTerminalAccess().getOfKeyword_1(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getSubStateTrPointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0(), "state");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleChoicepointTerminal
+entryRuleChoicepointTerminal returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getChoicepointTerminalRule(), currentNode); }
+ iv_ruleChoicepointTerminal=ruleChoicepointTerminal
+ { $current=$iv_ruleChoicepointTerminal.current; }
+ EOF
+;
+
+// Rule ChoicepointTerminal
+ruleChoicepointTerminal returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'cp'
+ {
+ createLeafNode(grammarAccess.getChoicepointTerminalAccess().getCpKeyword_0(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getChoicepointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0(), "cp");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTrigger
+entryRuleTrigger returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getTriggerRule(), currentNode); }
+ iv_ruleTrigger=ruleTrigger
+ { $current=$iv_ruleTrigger.current; }
+ EOF
+;
+
+// Rule Trigger
+ruleTrigger returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( '<'
+ {
+ createLeafNode(grammarAccess.getTriggerAccess().getLessThanSignKeyword_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_1_0(), currentNode);
+ }
+ lv_msgFromIfPairs_1_0=ruleMessageFromIf {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "msgFromIfPairs",
+ lv_msgFromIfPairs_1_0,
+ "MessageFromIf",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)( '|'
+ {
+ createLeafNode(grammarAccess.getTriggerAccess().getVerticalLineKeyword_2_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0(), currentNode);
+ }
+ lv_msgFromIfPairs_3_0=ruleMessageFromIf {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ add(
+ $current,
+ "msgFromIfPairs",
+ lv_msgFromIfPairs_3_0,
+ "MessageFromIf",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))*(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getGuardGuardParserRuleCall_3_0(), currentNode);
+ }
+ lv_guard_4_0=ruleGuard {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "guard",
+ lv_guard_4_0,
+ "Guard",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+)? '>'
+ {
+ createLeafNode(grammarAccess.getTriggerAccess().getGreaterThanSignKeyword_4(), null);
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMessageFromIf
+entryRuleMessageFromIf returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getMessageFromIfRule(), currentNode); }
+ iv_ruleMessageFromIf=ruleMessageFromIf
+ { $current=$iv_ruleMessageFromIf.current; }
+ EOF
+;
+
+// Rule MessageFromIf
+ruleMessageFromIf returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+((
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getMessageFromIfRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0(), "message");
+ }
+
+)
+) ':'
+ {
+ createLeafNode(grammarAccess.getMessageFromIfAccess().getColonKeyword_1(), null);
+ }
+(
+(
+ {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getMessageFromIfRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+ RULE_ID
+ {
+ createLeafNode(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0(), "from");
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleGuard
+entryRuleGuard returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getGuardRule(), currentNode); }
+ iv_ruleGuard=ruleGuard
+ { $current=$iv_ruleGuard.current; }
+ EOF
+;
+
+// Rule Guard
+ruleGuard returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'guard'
+ {
+ createLeafNode(grammarAccess.getGuardAccess().getGuardKeyword_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getGuardAccess().getGuardDetailCodeParserRuleCall_1_0(), currentNode);
+ }
+ lv_guard_1_0=ruleDetailCode {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getGuardRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "guard",
+ lv_guard_1_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport returns [EObject current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getImportRule(), currentNode); }
+ iv_ruleImport=ruleImport
+ { $current=$iv_ruleImport.current; }
+ EOF
+;
+
+// Rule Import
+ruleImport returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( 'import'
+ {
+ createLeafNode(grammarAccess.getImportAccess().getImportKeyword_0(), null);
+ }
+(
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0(), currentNode);
+ }
+ lv_importedNamespace_1_0=ruleImportedFQN {
+ if ($current==null) {
+ $current = factory.create(grammarAccess.getImportRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+ try {
+ set(
+ $current,
+ "importedNamespace",
+ lv_importedNamespace_1_0,
+ "ImportedFQN",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleImportedFQN
+entryRuleImportedFQN returns [String current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getImportedFQNRule(), currentNode); }
+ iv_ruleImportedFQN=ruleImportedFQN
+ { $current=$iv_ruleImportedFQN.current.getText(); }
+ EOF
+;
+
+// Rule ImportedFQN
+ruleImportedFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+ @init { setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(
+ {
+ currentNode=createCompositeNode(grammarAccess.getImportedFQNAccess().getFQNParserRuleCall_0(), currentNode);
+ }
+ this_FQN_0=ruleFQN {
+ $current.merge(this_FQN_0);
+ }
+
+ {
+ currentNode = currentNode.getParent();
+ }
+(
+ kw='.'
+ {
+ $current.merge(kw);
+ createLeafNode(grammarAccess.getImportedFQNAccess().getFullStopKeyword_1_0(), null);
+ }
+
+ kw='*'
+ {
+ $current.merge(kw);
+ createLeafNode(grammarAccess.getImportedFQNAccess().getAsteriskKeyword_1_1(), null);
+ }
+)?)
+ ;
+
+
+
+
+
+// Entry rule entryRuleFQN
+entryRuleFQN returns [String current=null]
+ :
+ { currentNode = createCompositeNode(grammarAccess.getFQNRule(), currentNode); }
+ iv_ruleFQN=ruleFQN
+ { $current=$iv_ruleFQN.current.getText(); }
+ EOF
+;
+
+// Rule FQN
+ruleFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+ @init { setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+( this_ID_0=RULE_ID {
+ $current.merge(this_ID_0);
+ }
+
+ {
+ createLeafNode(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0(), null);
+ }
+(
+ kw='.'
+ {
+ $current.merge(kw);
+ createLeafNode(grammarAccess.getFQNAccess().getFullStopKeyword_1_0(), null);
+ }
+ this_ID_2=RULE_ID {
+ $current.merge(this_ID_2);
+ }
+
+ {
+ createLeafNode(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1(), null);
+ }
+)*)
+ ;
+
+
+
+
+
+// Rule PrimitiveType
+rulePrimitiveType returns [Enumerator current=null]
+ @init { setCurrentLookahead(); resetLookahead(); }
+ @after { resetLookahead();
+ lastConsumedNode = currentNode;
+ }:
+(( 'void'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0(), null);
+ }
+)
+ |( 'int8'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1(), null);
+ }
+)
+ |( 'int16'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2(), null);
+ }
+)
+ |( 'int32'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3(), null);
+ }
+)
+ |( 'uint8'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4(), null);
+ }
+)
+ |( 'uint16'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5(), null);
+ }
+)
+ |( 'uint32'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6(), null);
+ }
+)
+ |( 'float32'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7(), null);
+ }
+)
+ |( 'float64'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8(), null);
+ }
+)
+ |( 'boolean'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9(), null);
+ }
+)
+ |( 'string'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10(), null);
+ }
+)
+ |( 'char'
+ {
+ $current = grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11(), null);
+ }
+));
+
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.tokens b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.tokens
new file mode 100644
index 000000000..53b814110
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.tokens
@@ -0,0 +1,96 @@
+RULE_ID=4
+RULE_STRING=6
+RULE_ANY_OTHER=10
+RULE_INT=5
+RULE_WS=9
+RULE_SL_COMMENT=8
+RULE_ML_COMMENT=7
+'semantics'=35
+'usercode1'=25
+'out'=38
+'satisfied_by'=59
+'ProtocolClass'=24
+'string'=98
+'Message'=32
+'SubSystemClass'=53
+'>'=84
+'int16'=90
+'Transition'=74
+'TransitionPoint'=70
+'SubSystemRef'=52
+'LayerConnection'=58
+'.'=55
+'regular'=29
+'import'=86
+'Structure'=42
+'SPP'=48
+'extends'=16
+'Behavior'=43
+'and'=57
+'action'=76
+'{'=12
+'StateMachine'=63
+'void'=88
+'ExitPoint'=72
+'Operation'=20
+'Interface'=41
+'ActorClass'=40
+'my'=80
+'ref'=60
+':'=14
+'('=21
+'guard'=85
+'exit'=66
+'ActorRef'=62
+'conjugated'=44
+'cp'=81
+','=22
+'of'=50
+'in'=36
+'incoming'=27
+']'=19
+'|'=83
+'State'=64
+'int8'=89
+'LogicalSystem'=51
+'LogicalThread'=54
+'DataClass'=15
+'usercode'=33
+'conjugate'=31
+'float64'=96
+'uint16'=93
+'RoomModel'=11
+'relay_sap'=61
+'Port'=45
+'uint32'=94
+'subgraph'=67
+')'=23
+'handle'=34
+'initial'=75
+'entry'=65
+'->'=37
+'ServiceImplementation'=49
+'Binding'=56
+'char'=99
+'triggers'=77
+'boolean'=97
+'ChoicePoint'=73
+'}'=13
+'SAP'=47
+'usercode2'=26
+'abstract'=39
+'EntryPoint'=71
+'int32'=91
+'uint8'=92
+'cond'=79
+'handler'=69
+'external'=46
+'<'=82
+'outgoing'=28
+'float32'=95
+'*'=87
+'or'=78
+'RefinedState'=68
+'['=18
+'PortClass'=30
+'Attribute'=17
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomLexer.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomLexer.java
new file mode 100644
index 000000000..e021666eb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomLexer.java
@@ -0,0 +1,6574 @@
+package org.eclipse.etrice.core.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRoomLexer extends Lexer {
+ public static final int RULE_ID=4;
+ public static final int RULE_ANY_OTHER=10;
+ public static final int T29=29;
+ public static final int T28=28;
+ public static final int T27=27;
+ public static final int T26=26;
+ public static final int T25=25;
+ public static final int T24=24;
+ public static final int EOF=-1;
+ public static final int T23=23;
+ public static final int T22=22;
+ public static final int T21=21;
+ public static final int T20=20;
+ public static final int T38=38;
+ public static final int T37=37;
+ public static final int T39=39;
+ public static final int T34=34;
+ public static final int T33=33;
+ public static final int T36=36;
+ public static final int T35=35;
+ public static final int T30=30;
+ public static final int T32=32;
+ public static final int T31=31;
+ public static final int T49=49;
+ public static final int T48=48;
+ public static final int T43=43;
+ public static final int T42=42;
+ public static final int T41=41;
+ public static final int T40=40;
+ public static final int T47=47;
+ public static final int T46=46;
+ public static final int RULE_ML_COMMENT=7;
+ public static final int T45=45;
+ public static final int T44=44;
+ public static final int RULE_STRING=6;
+ public static final int T50=50;
+ public static final int T59=59;
+ public static final int T52=52;
+ public static final int T51=51;
+ public static final int T54=54;
+ public static final int T53=53;
+ public static final int T56=56;
+ public static final int T55=55;
+ public static final int T58=58;
+ public static final int T57=57;
+ public static final int T75=75;
+ public static final int T76=76;
+ public static final int T73=73;
+ public static final int T74=74;
+ public static final int T79=79;
+ public static final int T77=77;
+ public static final int T78=78;
+ public static final int T72=72;
+ public static final int T71=71;
+ public static final int T70=70;
+ public static final int T62=62;
+ public static final int T63=63;
+ public static final int T64=64;
+ public static final int T65=65;
+ public static final int T66=66;
+ public static final int T67=67;
+ public static final int T68=68;
+ public static final int T69=69;
+ public static final int RULE_INT=5;
+ public static final int T61=61;
+ public static final int T60=60;
+ public static final int T99=99;
+ public static final int T97=97;
+ public static final int T98=98;
+ public static final int T95=95;
+ public static final int T96=96;
+ public static final int T94=94;
+ public static final int Tokens=100;
+ public static final int T93=93;
+ public static final int RULE_SL_COMMENT=8;
+ public static final int T92=92;
+ public static final int T91=91;
+ public static final int T90=90;
+ public static final int T88=88;
+ public static final int T89=89;
+ public static final int T84=84;
+ public static final int T85=85;
+ public static final int T86=86;
+ public static final int T87=87;
+ public static final int T11=11;
+ public static final int T12=12;
+ public static final int T13=13;
+ public static final int T14=14;
+ public static final int RULE_WS=9;
+ public static final int T15=15;
+ public static final int T81=81;
+ public static final int T16=16;
+ public static final int T80=80;
+ public static final int T17=17;
+ public static final int T83=83;
+ public static final int T18=18;
+ public static final int T82=82;
+ public static final int T19=19;
+ public InternalRoomLexer() {;}
+ public InternalRoomLexer(CharStream input) {
+ super(input);
+ }
+ public String getGrammarFileName() { return "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g"; }
+
+ // $ANTLR start T11
+ public final void mT11() throws RecognitionException {
+ try {
+ int _type = T11;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:10:5: ( 'RoomModel' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:10:7: 'RoomModel'
+ {
+ match("RoomModel");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T11
+
+ // $ANTLR start T12
+ public final void mT12() throws RecognitionException {
+ try {
+ int _type = T12;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:11:5: ( '{' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:11:7: '{'
+ {
+ match('{');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T12
+
+ // $ANTLR start T13
+ public final void mT13() throws RecognitionException {
+ try {
+ int _type = T13;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:12:5: ( '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:12:7: '}'
+ {
+ match('}');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T13
+
+ // $ANTLR start T14
+ public final void mT14() throws RecognitionException {
+ try {
+ int _type = T14;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:13:5: ( ':' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:13:7: ':'
+ {
+ match(':');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T14
+
+ // $ANTLR start T15
+ public final void mT15() throws RecognitionException {
+ try {
+ int _type = T15;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:14:5: ( 'DataClass' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:14:7: 'DataClass'
+ {
+ match("DataClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T15
+
+ // $ANTLR start T16
+ public final void mT16() throws RecognitionException {
+ try {
+ int _type = T16;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:15:5: ( 'extends' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:15:7: 'extends'
+ {
+ match("extends");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T16
+
+ // $ANTLR start T17
+ public final void mT17() throws RecognitionException {
+ try {
+ int _type = T17;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:16:5: ( 'Attribute' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:16:7: 'Attribute'
+ {
+ match("Attribute");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T17
+
+ // $ANTLR start T18
+ public final void mT18() throws RecognitionException {
+ try {
+ int _type = T18;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:17:5: ( '[' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:17:7: '['
+ {
+ match('[');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T18
+
+ // $ANTLR start T19
+ public final void mT19() throws RecognitionException {
+ try {
+ int _type = T19;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:18:5: ( ']' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:18:7: ']'
+ {
+ match(']');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T19
+
+ // $ANTLR start T20
+ public final void mT20() throws RecognitionException {
+ try {
+ int _type = T20;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:19:5: ( 'Operation' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:19:7: 'Operation'
+ {
+ match("Operation");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T20
+
+ // $ANTLR start T21
+ public final void mT21() throws RecognitionException {
+ try {
+ int _type = T21;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:20:5: ( '(' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:20:7: '('
+ {
+ match('(');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T21
+
+ // $ANTLR start T22
+ public final void mT22() throws RecognitionException {
+ try {
+ int _type = T22;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:21:5: ( ',' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:21:7: ','
+ {
+ match(',');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T22
+
+ // $ANTLR start T23
+ public final void mT23() throws RecognitionException {
+ try {
+ int _type = T23;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:22:5: ( ')' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:22:7: ')'
+ {
+ match(')');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T23
+
+ // $ANTLR start T24
+ public final void mT24() throws RecognitionException {
+ try {
+ int _type = T24;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:23:5: ( 'ProtocolClass' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:23:7: 'ProtocolClass'
+ {
+ match("ProtocolClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T24
+
+ // $ANTLR start T25
+ public final void mT25() throws RecognitionException {
+ try {
+ int _type = T25;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:24:5: ( 'usercode1' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:24:7: 'usercode1'
+ {
+ match("usercode1");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T25
+
+ // $ANTLR start T26
+ public final void mT26() throws RecognitionException {
+ try {
+ int _type = T26;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:25:5: ( 'usercode2' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:25:7: 'usercode2'
+ {
+ match("usercode2");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T26
+
+ // $ANTLR start T27
+ public final void mT27() throws RecognitionException {
+ try {
+ int _type = T27;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:26:5: ( 'incoming' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:26:7: 'incoming'
+ {
+ match("incoming");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T27
+
+ // $ANTLR start T28
+ public final void mT28() throws RecognitionException {
+ try {
+ int _type = T28;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:27:5: ( 'outgoing' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:27:7: 'outgoing'
+ {
+ match("outgoing");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T28
+
+ // $ANTLR start T29
+ public final void mT29() throws RecognitionException {
+ try {
+ int _type = T29;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:28:5: ( 'regular' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:28:7: 'regular'
+ {
+ match("regular");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T29
+
+ // $ANTLR start T30
+ public final void mT30() throws RecognitionException {
+ try {
+ int _type = T30;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:29:5: ( 'PortClass' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:29:7: 'PortClass'
+ {
+ match("PortClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T30
+
+ // $ANTLR start T31
+ public final void mT31() throws RecognitionException {
+ try {
+ int _type = T31;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:30:5: ( 'conjugate' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:30:7: 'conjugate'
+ {
+ match("conjugate");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T31
+
+ // $ANTLR start T32
+ public final void mT32() throws RecognitionException {
+ try {
+ int _type = T32;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:31:5: ( 'Message' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:31:7: 'Message'
+ {
+ match("Message");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T32
+
+ // $ANTLR start T33
+ public final void mT33() throws RecognitionException {
+ try {
+ int _type = T33;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:32:5: ( 'usercode' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:32:7: 'usercode'
+ {
+ match("usercode");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T33
+
+ // $ANTLR start T34
+ public final void mT34() throws RecognitionException {
+ try {
+ int _type = T34;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:33:5: ( 'handle' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:33:7: 'handle'
+ {
+ match("handle");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T34
+
+ // $ANTLR start T35
+ public final void mT35() throws RecognitionException {
+ try {
+ int _type = T35;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:34:5: ( 'semantics' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:34:7: 'semantics'
+ {
+ match("semantics");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T35
+
+ // $ANTLR start T36
+ public final void mT36() throws RecognitionException {
+ try {
+ int _type = T36;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:35:5: ( 'in' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:35:7: 'in'
+ {
+ match("in");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T36
+
+ // $ANTLR start T37
+ public final void mT37() throws RecognitionException {
+ try {
+ int _type = T37;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:36:5: ( '->' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:36:7: '->'
+ {
+ match("->");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T37
+
+ // $ANTLR start T38
+ public final void mT38() throws RecognitionException {
+ try {
+ int _type = T38;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:37:5: ( 'out' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:37:7: 'out'
+ {
+ match("out");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T38
+
+ // $ANTLR start T39
+ public final void mT39() throws RecognitionException {
+ try {
+ int _type = T39;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:38:5: ( 'abstract' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:38:7: 'abstract'
+ {
+ match("abstract");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T39
+
+ // $ANTLR start T40
+ public final void mT40() throws RecognitionException {
+ try {
+ int _type = T40;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:39:5: ( 'ActorClass' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:39:7: 'ActorClass'
+ {
+ match("ActorClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T40
+
+ // $ANTLR start T41
+ public final void mT41() throws RecognitionException {
+ try {
+ int _type = T41;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:40:5: ( 'Interface' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:40:7: 'Interface'
+ {
+ match("Interface");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T41
+
+ // $ANTLR start T42
+ public final void mT42() throws RecognitionException {
+ try {
+ int _type = T42;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:41:5: ( 'Structure' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:41:7: 'Structure'
+ {
+ match("Structure");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T42
+
+ // $ANTLR start T43
+ public final void mT43() throws RecognitionException {
+ try {
+ int _type = T43;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:42:5: ( 'Behavior' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:42:7: 'Behavior'
+ {
+ match("Behavior");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T43
+
+ // $ANTLR start T44
+ public final void mT44() throws RecognitionException {
+ try {
+ int _type = T44;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:43:5: ( 'conjugated' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:43:7: 'conjugated'
+ {
+ match("conjugated");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T44
+
+ // $ANTLR start T45
+ public final void mT45() throws RecognitionException {
+ try {
+ int _type = T45;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:44:5: ( 'Port' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:44:7: 'Port'
+ {
+ match("Port");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T45
+
+ // $ANTLR start T46
+ public final void mT46() throws RecognitionException {
+ try {
+ int _type = T46;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:45:5: ( 'external' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:45:7: 'external'
+ {
+ match("external");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T46
+
+ // $ANTLR start T47
+ public final void mT47() throws RecognitionException {
+ try {
+ int _type = T47;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:46:5: ( 'SAP' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:46:7: 'SAP'
+ {
+ match("SAP");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T47
+
+ // $ANTLR start T48
+ public final void mT48() throws RecognitionException {
+ try {
+ int _type = T48;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:47:5: ( 'SPP' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:47:7: 'SPP'
+ {
+ match("SPP");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T48
+
+ // $ANTLR start T49
+ public final void mT49() throws RecognitionException {
+ try {
+ int _type = T49;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:48:5: ( 'ServiceImplementation' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:48:7: 'ServiceImplementation'
+ {
+ match("ServiceImplementation");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T49
+
+ // $ANTLR start T50
+ public final void mT50() throws RecognitionException {
+ try {
+ int _type = T50;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:49:5: ( 'of' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:49:7: 'of'
+ {
+ match("of");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T50
+
+ // $ANTLR start T51
+ public final void mT51() throws RecognitionException {
+ try {
+ int _type = T51;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:50:5: ( 'LogicalSystem' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:50:7: 'LogicalSystem'
+ {
+ match("LogicalSystem");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T51
+
+ // $ANTLR start T52
+ public final void mT52() throws RecognitionException {
+ try {
+ int _type = T52;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:51:5: ( 'SubSystemRef' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:51:7: 'SubSystemRef'
+ {
+ match("SubSystemRef");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T52
+
+ // $ANTLR start T53
+ public final void mT53() throws RecognitionException {
+ try {
+ int _type = T53;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:52:5: ( 'SubSystemClass' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:52:7: 'SubSystemClass'
+ {
+ match("SubSystemClass");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T53
+
+ // $ANTLR start T54
+ public final void mT54() throws RecognitionException {
+ try {
+ int _type = T54;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:53:5: ( 'LogicalThread' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:53:7: 'LogicalThread'
+ {
+ match("LogicalThread");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T54
+
+ // $ANTLR start T55
+ public final void mT55() throws RecognitionException {
+ try {
+ int _type = T55;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:54:5: ( '.' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:54:7: '.'
+ {
+ match('.');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T55
+
+ // $ANTLR start T56
+ public final void mT56() throws RecognitionException {
+ try {
+ int _type = T56;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:55:5: ( 'Binding' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:55:7: 'Binding'
+ {
+ match("Binding");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T56
+
+ // $ANTLR start T57
+ public final void mT57() throws RecognitionException {
+ try {
+ int _type = T57;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:56:5: ( 'and' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:56:7: 'and'
+ {
+ match("and");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T57
+
+ // $ANTLR start T58
+ public final void mT58() throws RecognitionException {
+ try {
+ int _type = T58;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:57:5: ( 'LayerConnection' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:57:7: 'LayerConnection'
+ {
+ match("LayerConnection");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T58
+
+ // $ANTLR start T59
+ public final void mT59() throws RecognitionException {
+ try {
+ int _type = T59;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:58:5: ( 'satisfied_by' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:58:7: 'satisfied_by'
+ {
+ match("satisfied_by");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T59
+
+ // $ANTLR start T60
+ public final void mT60() throws RecognitionException {
+ try {
+ int _type = T60;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:59:5: ( 'ref' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:59:7: 'ref'
+ {
+ match("ref");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T60
+
+ // $ANTLR start T61
+ public final void mT61() throws RecognitionException {
+ try {
+ int _type = T61;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:60:5: ( 'relay_sap' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:60:7: 'relay_sap'
+ {
+ match("relay_sap");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T61
+
+ // $ANTLR start T62
+ public final void mT62() throws RecognitionException {
+ try {
+ int _type = T62;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:61:5: ( 'ActorRef' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:61:7: 'ActorRef'
+ {
+ match("ActorRef");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T62
+
+ // $ANTLR start T63
+ public final void mT63() throws RecognitionException {
+ try {
+ int _type = T63;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:62:5: ( 'StateMachine' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:62:7: 'StateMachine'
+ {
+ match("StateMachine");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T63
+
+ // $ANTLR start T64
+ public final void mT64() throws RecognitionException {
+ try {
+ int _type = T64;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:63:5: ( 'State' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:63:7: 'State'
+ {
+ match("State");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T64
+
+ // $ANTLR start T65
+ public final void mT65() throws RecognitionException {
+ try {
+ int _type = T65;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:64:5: ( 'entry' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:64:7: 'entry'
+ {
+ match("entry");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T65
+
+ // $ANTLR start T66
+ public final void mT66() throws RecognitionException {
+ try {
+ int _type = T66;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:65:5: ( 'exit' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:65:7: 'exit'
+ {
+ match("exit");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T66
+
+ // $ANTLR start T67
+ public final void mT67() throws RecognitionException {
+ try {
+ int _type = T67;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:66:5: ( 'subgraph' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:66:7: 'subgraph'
+ {
+ match("subgraph");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T67
+
+ // $ANTLR start T68
+ public final void mT68() throws RecognitionException {
+ try {
+ int _type = T68;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:67:5: ( 'RefinedState' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:67:7: 'RefinedState'
+ {
+ match("RefinedState");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T68
+
+ // $ANTLR start T69
+ public final void mT69() throws RecognitionException {
+ try {
+ int _type = T69;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:68:5: ( 'handler' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:68:7: 'handler'
+ {
+ match("handler");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T69
+
+ // $ANTLR start T70
+ public final void mT70() throws RecognitionException {
+ try {
+ int _type = T70;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:69:5: ( 'TransitionPoint' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:69:7: 'TransitionPoint'
+ {
+ match("TransitionPoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T70
+
+ // $ANTLR start T71
+ public final void mT71() throws RecognitionException {
+ try {
+ int _type = T71;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:70:5: ( 'EntryPoint' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:70:7: 'EntryPoint'
+ {
+ match("EntryPoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T71
+
+ // $ANTLR start T72
+ public final void mT72() throws RecognitionException {
+ try {
+ int _type = T72;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:71:5: ( 'ExitPoint' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:71:7: 'ExitPoint'
+ {
+ match("ExitPoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T72
+
+ // $ANTLR start T73
+ public final void mT73() throws RecognitionException {
+ try {
+ int _type = T73;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:72:5: ( 'ChoicePoint' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:72:7: 'ChoicePoint'
+ {
+ match("ChoicePoint");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T73
+
+ // $ANTLR start T74
+ public final void mT74() throws RecognitionException {
+ try {
+ int _type = T74;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:73:5: ( 'Transition' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:73:7: 'Transition'
+ {
+ match("Transition");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T74
+
+ // $ANTLR start T75
+ public final void mT75() throws RecognitionException {
+ try {
+ int _type = T75;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:74:5: ( 'initial' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:74:7: 'initial'
+ {
+ match("initial");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T75
+
+ // $ANTLR start T76
+ public final void mT76() throws RecognitionException {
+ try {
+ int _type = T76;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:75:5: ( 'action' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:75:7: 'action'
+ {
+ match("action");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T76
+
+ // $ANTLR start T77
+ public final void mT77() throws RecognitionException {
+ try {
+ int _type = T77;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:76:5: ( 'triggers' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:76:7: 'triggers'
+ {
+ match("triggers");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T77
+
+ // $ANTLR start T78
+ public final void mT78() throws RecognitionException {
+ try {
+ int _type = T78;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:77:5: ( 'or' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:77:7: 'or'
+ {
+ match("or");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T78
+
+ // $ANTLR start T79
+ public final void mT79() throws RecognitionException {
+ try {
+ int _type = T79;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:78:5: ( 'cond' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:78:7: 'cond'
+ {
+ match("cond");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T79
+
+ // $ANTLR start T80
+ public final void mT80() throws RecognitionException {
+ try {
+ int _type = T80;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:79:5: ( 'my' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:79:7: 'my'
+ {
+ match("my");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T80
+
+ // $ANTLR start T81
+ public final void mT81() throws RecognitionException {
+ try {
+ int _type = T81;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:80:5: ( 'cp' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:80:7: 'cp'
+ {
+ match("cp");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T81
+
+ // $ANTLR start T82
+ public final void mT82() throws RecognitionException {
+ try {
+ int _type = T82;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:81:5: ( '<' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:81:7: '<'
+ {
+ match('<');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T82
+
+ // $ANTLR start T83
+ public final void mT83() throws RecognitionException {
+ try {
+ int _type = T83;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:82:5: ( '|' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:82:7: '|'
+ {
+ match('|');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T83
+
+ // $ANTLR start T84
+ public final void mT84() throws RecognitionException {
+ try {
+ int _type = T84;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:83:5: ( '>' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:83:7: '>'
+ {
+ match('>');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T84
+
+ // $ANTLR start T85
+ public final void mT85() throws RecognitionException {
+ try {
+ int _type = T85;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:84:5: ( 'guard' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:84:7: 'guard'
+ {
+ match("guard");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T85
+
+ // $ANTLR start T86
+ public final void mT86() throws RecognitionException {
+ try {
+ int _type = T86;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:85:5: ( 'import' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:85:7: 'import'
+ {
+ match("import");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T86
+
+ // $ANTLR start T87
+ public final void mT87() throws RecognitionException {
+ try {
+ int _type = T87;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:86:5: ( '*' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:86:7: '*'
+ {
+ match('*');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T87
+
+ // $ANTLR start T88
+ public final void mT88() throws RecognitionException {
+ try {
+ int _type = T88;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:87:5: ( 'void' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:87:7: 'void'
+ {
+ match("void");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T88
+
+ // $ANTLR start T89
+ public final void mT89() throws RecognitionException {
+ try {
+ int _type = T89;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:88:5: ( 'int8' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:88:7: 'int8'
+ {
+ match("int8");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T89
+
+ // $ANTLR start T90
+ public final void mT90() throws RecognitionException {
+ try {
+ int _type = T90;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:89:5: ( 'int16' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:89:7: 'int16'
+ {
+ match("int16");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T90
+
+ // $ANTLR start T91
+ public final void mT91() throws RecognitionException {
+ try {
+ int _type = T91;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:90:5: ( 'int32' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:90:7: 'int32'
+ {
+ match("int32");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T91
+
+ // $ANTLR start T92
+ public final void mT92() throws RecognitionException {
+ try {
+ int _type = T92;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:91:5: ( 'uint8' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:91:7: 'uint8'
+ {
+ match("uint8");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T92
+
+ // $ANTLR start T93
+ public final void mT93() throws RecognitionException {
+ try {
+ int _type = T93;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:92:5: ( 'uint16' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:92:7: 'uint16'
+ {
+ match("uint16");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T93
+
+ // $ANTLR start T94
+ public final void mT94() throws RecognitionException {
+ try {
+ int _type = T94;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:93:5: ( 'uint32' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:93:7: 'uint32'
+ {
+ match("uint32");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T94
+
+ // $ANTLR start T95
+ public final void mT95() throws RecognitionException {
+ try {
+ int _type = T95;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:94:5: ( 'float32' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:94:7: 'float32'
+ {
+ match("float32");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T95
+
+ // $ANTLR start T96
+ public final void mT96() throws RecognitionException {
+ try {
+ int _type = T96;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:95:5: ( 'float64' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:95:7: 'float64'
+ {
+ match("float64");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T96
+
+ // $ANTLR start T97
+ public final void mT97() throws RecognitionException {
+ try {
+ int _type = T97;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:96:5: ( 'boolean' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:96:7: 'boolean'
+ {
+ match("boolean");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T97
+
+ // $ANTLR start T98
+ public final void mT98() throws RecognitionException {
+ try {
+ int _type = T98;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:97:5: ( 'string' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:97:7: 'string'
+ {
+ match("string");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T98
+
+ // $ANTLR start T99
+ public final void mT99() throws RecognitionException {
+ try {
+ int _type = T99;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:98:5: ( 'char' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:98:7: 'char'
+ {
+ match("char");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T99
+
+ // $ANTLR start RULE_ID
+ public final void mRULE_ID() throws RecognitionException {
+ try {
+ int _type = RULE_ID;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6213:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6213:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6213:11: ( '^' )?
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='^') ) {
+ alt1=1;
+ }
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6213:11: '^'
+ {
+ match('^');
+
+ }
+ break;
+
+ }
+
+ if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6213:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop2;
+ }
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ID
+
+ // $ANTLR start RULE_INT
+ public final void mRULE_INT() throws RecognitionException {
+ try {
+ int _type = RULE_INT;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6215:10: ( ( '0' .. '9' )+ )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6215:12: ( '0' .. '9' )+
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6215:12: ( '0' .. '9' )+
+ int cnt3=0;
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6215:13: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt3 >= 1 ) break loop3;
+ EarlyExitException eee =
+ new EarlyExitException(3, input);
+ throw eee;
+ }
+ cnt3++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_INT
+
+ // $ANTLR start RULE_STRING
+ public final void mRULE_STRING() throws RecognitionException {
+ try {
+ int _type = RULE_STRING;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0=='\"') ) {
+ alt6=1;
+ }
+ else if ( (LA6_0=='\'') ) {
+ alt6=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("6217:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+ {
+ match('\"');
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+ loop4:
+ do {
+ int alt4=3;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0=='\\') ) {
+ alt4=1;
+ }
+ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFE')) ) {
+ alt4=2;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:62: ~ ( ( '\\\\' | '\"' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+ match('\"');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:82: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+ {
+ match('\'');
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:87: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+ loop5:
+ do {
+ int alt5=3;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0=='\\') ) {
+ alt5=1;
+ }
+ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFE')) ) {
+ alt5=2;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:88: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6217:129: ~ ( ( '\\\\' | '\\'' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop5;
+ }
+ } while (true);
+
+ match('\'');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_STRING
+
+ // $ANTLR start RULE_ML_COMMENT
+ public final void mRULE_ML_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_ML_COMMENT;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6219:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6219:19: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*");
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6219:24: ( options {greedy=false; } : . )*
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0=='*') ) {
+ int LA7_1 = input.LA(2);
+
+ if ( (LA7_1=='/') ) {
+ alt7=2;
+ }
+ else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFE')) ) {
+ alt7=1;
+ }
+
+
+ }
+ else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFE')) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6219:52: .
+ {
+ matchAny();
+
+ }
+ break;
+
+ default :
+ break loop7;
+ }
+ } while (true);
+
+ match("*/");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ML_COMMENT
+
+ // $ANTLR start RULE_SL_COMMENT
+ public final void mRULE_SL_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_SL_COMMENT;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+ {
+ match("//");
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:24: (~ ( ( '\\n' | '\\r' ) ) )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFE')) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:24: ~ ( ( '\\n' | '\\r' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:40: ( ( '\\r' )? '\\n' )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:41: ( '\\r' )? '\\n'
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:41: ( '\\r' )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0=='\r') ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6221:41: '\\r'
+ {
+ match('\r');
+
+ }
+ break;
+
+ }
+
+ match('\n');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_SL_COMMENT
+
+ // $ANTLR start RULE_WS
+ public final void mRULE_WS() throws RecognitionException {
+ try {
+ int _type = RULE_WS;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6223:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6223:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6223:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ int cnt11=0;
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:
+ {
+ if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt11 >= 1 ) break loop11;
+ EarlyExitException eee =
+ new EarlyExitException(11, input);
+ throw eee;
+ }
+ cnt11++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_WS
+
+ // $ANTLR start RULE_ANY_OTHER
+ public final void mRULE_ANY_OTHER() throws RecognitionException {
+ try {
+ int _type = RULE_ANY_OTHER;
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6225:16: ( . )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6225:18: .
+ {
+ matchAny();
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ANY_OTHER
+
+ public void mTokens() throws RecognitionException {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:8: ( T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt12=96;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0=='R') ) {
+ switch ( input.LA(2) ) {
+ case 'o':
+ {
+ int LA12_51 = input.LA(3);
+
+ if ( (LA12_51=='o') ) {
+ int LA12_121 = input.LA(4);
+
+ if ( (LA12_121=='m') ) {
+ int LA12_178 = input.LA(5);
+
+ if ( (LA12_178=='M') ) {
+ int LA12_234 = input.LA(6);
+
+ if ( (LA12_234=='o') ) {
+ int LA12_289 = input.LA(7);
+
+ if ( (LA12_289=='d') ) {
+ int LA12_341 = input.LA(8);
+
+ if ( (LA12_341=='e') ) {
+ int LA12_388 = input.LA(9);
+
+ if ( (LA12_388=='l') ) {
+ int LA12_430 = input.LA(10);
+
+ if ( ((LA12_430>='0' && LA12_430<='9')||(LA12_430>='A' && LA12_430<='Z')||LA12_430=='_'||(LA12_430>='a' && LA12_430<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=1;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'e':
+ {
+ int LA12_52 = input.LA(3);
+
+ if ( (LA12_52=='f') ) {
+ int LA12_122 = input.LA(4);
+
+ if ( (LA12_122=='i') ) {
+ int LA12_179 = input.LA(5);
+
+ if ( (LA12_179=='n') ) {
+ int LA12_235 = input.LA(6);
+
+ if ( (LA12_235=='e') ) {
+ int LA12_290 = input.LA(7);
+
+ if ( (LA12_290=='d') ) {
+ int LA12_342 = input.LA(8);
+
+ if ( (LA12_342=='S') ) {
+ int LA12_389 = input.LA(9);
+
+ if ( (LA12_389=='t') ) {
+ int LA12_431 = input.LA(10);
+
+ if ( (LA12_431=='a') ) {
+ int LA12_466 = input.LA(11);
+
+ if ( (LA12_466=='t') ) {
+ int LA12_493 = input.LA(12);
+
+ if ( (LA12_493=='e') ) {
+ int LA12_509 = input.LA(13);
+
+ if ( ((LA12_509>='0' && LA12_509<='9')||(LA12_509>='A' && LA12_509<='Z')||LA12_509=='_'||(LA12_509>='a' && LA12_509<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=58;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='{') ) {
+ alt12=2;
+ }
+ else if ( (LA12_0=='}') ) {
+ alt12=3;
+ }
+ else if ( (LA12_0==':') ) {
+ alt12=4;
+ }
+ else if ( (LA12_0=='D') ) {
+ int LA12_5 = input.LA(2);
+
+ if ( (LA12_5=='a') ) {
+ int LA12_57 = input.LA(3);
+
+ if ( (LA12_57=='t') ) {
+ int LA12_123 = input.LA(4);
+
+ if ( (LA12_123=='a') ) {
+ int LA12_180 = input.LA(5);
+
+ if ( (LA12_180=='C') ) {
+ int LA12_236 = input.LA(6);
+
+ if ( (LA12_236=='l') ) {
+ int LA12_291 = input.LA(7);
+
+ if ( (LA12_291=='a') ) {
+ int LA12_343 = input.LA(8);
+
+ if ( (LA12_343=='s') ) {
+ int LA12_390 = input.LA(9);
+
+ if ( (LA12_390=='s') ) {
+ int LA12_432 = input.LA(10);
+
+ if ( ((LA12_432>='0' && LA12_432<='9')||(LA12_432>='A' && LA12_432<='Z')||LA12_432=='_'||(LA12_432>='a' && LA12_432<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=5;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='e') ) {
+ switch ( input.LA(2) ) {
+ case 'x':
+ {
+ switch ( input.LA(3) ) {
+ case 't':
+ {
+ int LA12_124 = input.LA(4);
+
+ if ( (LA12_124=='e') ) {
+ switch ( input.LA(5) ) {
+ case 'r':
+ {
+ int LA12_237 = input.LA(6);
+
+ if ( (LA12_237=='n') ) {
+ int LA12_292 = input.LA(7);
+
+ if ( (LA12_292=='a') ) {
+ int LA12_344 = input.LA(8);
+
+ if ( (LA12_344=='l') ) {
+ int LA12_391 = input.LA(9);
+
+ if ( ((LA12_391>='0' && LA12_391<='9')||(LA12_391>='A' && LA12_391<='Z')||LA12_391=='_'||(LA12_391>='a' && LA12_391<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=36;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_238 = input.LA(6);
+
+ if ( (LA12_238=='d') ) {
+ int LA12_293 = input.LA(7);
+
+ if ( (LA12_293=='s') ) {
+ int LA12_345 = input.LA(8);
+
+ if ( ((LA12_345>='0' && LA12_345<='9')||(LA12_345>='A' && LA12_345<='Z')||LA12_345=='_'||(LA12_345>='a' && LA12_345<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=6;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'i':
+ {
+ int LA12_125 = input.LA(4);
+
+ if ( (LA12_125=='t') ) {
+ int LA12_182 = input.LA(5);
+
+ if ( ((LA12_182>='0' && LA12_182<='9')||(LA12_182>='A' && LA12_182<='Z')||LA12_182=='_'||(LA12_182>='a' && LA12_182<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=56;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ break;
+ case 'n':
+ {
+ int LA12_59 = input.LA(3);
+
+ if ( (LA12_59=='t') ) {
+ int LA12_126 = input.LA(4);
+
+ if ( (LA12_126=='r') ) {
+ int LA12_183 = input.LA(5);
+
+ if ( (LA12_183=='y') ) {
+ int LA12_240 = input.LA(6);
+
+ if ( ((LA12_240>='0' && LA12_240<='9')||(LA12_240>='A' && LA12_240<='Z')||LA12_240=='_'||(LA12_240>='a' && LA12_240<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=55;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='A') ) {
+ switch ( input.LA(2) ) {
+ case 't':
+ {
+ int LA12_60 = input.LA(3);
+
+ if ( (LA12_60=='t') ) {
+ int LA12_127 = input.LA(4);
+
+ if ( (LA12_127=='r') ) {
+ int LA12_184 = input.LA(5);
+
+ if ( (LA12_184=='i') ) {
+ int LA12_241 = input.LA(6);
+
+ if ( (LA12_241=='b') ) {
+ int LA12_295 = input.LA(7);
+
+ if ( (LA12_295=='u') ) {
+ int LA12_346 = input.LA(8);
+
+ if ( (LA12_346=='t') ) {
+ int LA12_393 = input.LA(9);
+
+ if ( (LA12_393=='e') ) {
+ int LA12_434 = input.LA(10);
+
+ if ( ((LA12_434>='0' && LA12_434<='9')||(LA12_434>='A' && LA12_434<='Z')||LA12_434=='_'||(LA12_434>='a' && LA12_434<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=7;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'c':
+ {
+ int LA12_61 = input.LA(3);
+
+ if ( (LA12_61=='t') ) {
+ int LA12_128 = input.LA(4);
+
+ if ( (LA12_128=='o') ) {
+ int LA12_185 = input.LA(5);
+
+ if ( (LA12_185=='r') ) {
+ switch ( input.LA(6) ) {
+ case 'C':
+ {
+ int LA12_296 = input.LA(7);
+
+ if ( (LA12_296=='l') ) {
+ int LA12_347 = input.LA(8);
+
+ if ( (LA12_347=='a') ) {
+ int LA12_394 = input.LA(9);
+
+ if ( (LA12_394=='s') ) {
+ int LA12_435 = input.LA(10);
+
+ if ( (LA12_435=='s') ) {
+ int LA12_469 = input.LA(11);
+
+ if ( ((LA12_469>='0' && LA12_469<='9')||(LA12_469>='A' && LA12_469<='Z')||LA12_469=='_'||(LA12_469>='a' && LA12_469<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=30;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'R':
+ {
+ int LA12_297 = input.LA(7);
+
+ if ( (LA12_297=='e') ) {
+ int LA12_348 = input.LA(8);
+
+ if ( (LA12_348=='f') ) {
+ int LA12_395 = input.LA(9);
+
+ if ( ((LA12_395>='0' && LA12_395<='9')||(LA12_395>='A' && LA12_395<='Z')||LA12_395=='_'||(LA12_395>='a' && LA12_395<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=52;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='[') ) {
+ alt12=8;
+ }
+ else if ( (LA12_0==']') ) {
+ alt12=9;
+ }
+ else if ( (LA12_0=='O') ) {
+ int LA12_10 = input.LA(2);
+
+ if ( (LA12_10=='p') ) {
+ int LA12_64 = input.LA(3);
+
+ if ( (LA12_64=='e') ) {
+ int LA12_129 = input.LA(4);
+
+ if ( (LA12_129=='r') ) {
+ int LA12_186 = input.LA(5);
+
+ if ( (LA12_186=='a') ) {
+ int LA12_243 = input.LA(6);
+
+ if ( (LA12_243=='t') ) {
+ int LA12_298 = input.LA(7);
+
+ if ( (LA12_298=='i') ) {
+ int LA12_349 = input.LA(8);
+
+ if ( (LA12_349=='o') ) {
+ int LA12_396 = input.LA(9);
+
+ if ( (LA12_396=='n') ) {
+ int LA12_437 = input.LA(10);
+
+ if ( ((LA12_437>='0' && LA12_437<='9')||(LA12_437>='A' && LA12_437<='Z')||LA12_437=='_'||(LA12_437>='a' && LA12_437<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=10;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='(') ) {
+ alt12=11;
+ }
+ else if ( (LA12_0==',') ) {
+ alt12=12;
+ }
+ else if ( (LA12_0==')') ) {
+ alt12=13;
+ }
+ else if ( (LA12_0=='P') ) {
+ switch ( input.LA(2) ) {
+ case 'r':
+ {
+ int LA12_68 = input.LA(3);
+
+ if ( (LA12_68=='o') ) {
+ int LA12_130 = input.LA(4);
+
+ if ( (LA12_130=='t') ) {
+ int LA12_187 = input.LA(5);
+
+ if ( (LA12_187=='o') ) {
+ int LA12_244 = input.LA(6);
+
+ if ( (LA12_244=='c') ) {
+ int LA12_299 = input.LA(7);
+
+ if ( (LA12_299=='o') ) {
+ int LA12_350 = input.LA(8);
+
+ if ( (LA12_350=='l') ) {
+ int LA12_397 = input.LA(9);
+
+ if ( (LA12_397=='C') ) {
+ int LA12_438 = input.LA(10);
+
+ if ( (LA12_438=='l') ) {
+ int LA12_471 = input.LA(11);
+
+ if ( (LA12_471=='a') ) {
+ int LA12_495 = input.LA(12);
+
+ if ( (LA12_495=='s') ) {
+ int LA12_510 = input.LA(13);
+
+ if ( (LA12_510=='s') ) {
+ int LA12_522 = input.LA(14);
+
+ if ( ((LA12_522>='0' && LA12_522<='9')||(LA12_522>='A' && LA12_522<='Z')||LA12_522=='_'||(LA12_522>='a' && LA12_522<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=14;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'o':
+ {
+ int LA12_69 = input.LA(3);
+
+ if ( (LA12_69=='r') ) {
+ int LA12_131 = input.LA(4);
+
+ if ( (LA12_131=='t') ) {
+ switch ( input.LA(5) ) {
+ case 'C':
+ {
+ int LA12_245 = input.LA(6);
+
+ if ( (LA12_245=='l') ) {
+ int LA12_300 = input.LA(7);
+
+ if ( (LA12_300=='a') ) {
+ int LA12_351 = input.LA(8);
+
+ if ( (LA12_351=='s') ) {
+ int LA12_398 = input.LA(9);
+
+ if ( (LA12_398=='s') ) {
+ int LA12_439 = input.LA(10);
+
+ if ( ((LA12_439>='0' && LA12_439<='9')||(LA12_439>='A' && LA12_439<='Z')||LA12_439=='_'||(LA12_439>='a' && LA12_439<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=20;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=35;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='u') ) {
+ switch ( input.LA(2) ) {
+ case 'i':
+ {
+ int LA12_70 = input.LA(3);
+
+ if ( (LA12_70=='n') ) {
+ int LA12_132 = input.LA(4);
+
+ if ( (LA12_132=='t') ) {
+ switch ( input.LA(5) ) {
+ case '1':
+ {
+ int LA12_247 = input.LA(6);
+
+ if ( (LA12_247=='6') ) {
+ int LA12_301 = input.LA(7);
+
+ if ( ((LA12_301>='0' && LA12_301<='9')||(LA12_301>='A' && LA12_301<='Z')||LA12_301=='_'||(LA12_301>='a' && LA12_301<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=83;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '8':
+ {
+ int LA12_248 = input.LA(6);
+
+ if ( ((LA12_248>='0' && LA12_248<='9')||(LA12_248>='A' && LA12_248<='Z')||LA12_248=='_'||(LA12_248>='a' && LA12_248<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=82;}
+ }
+ break;
+ case '3':
+ {
+ int LA12_249 = input.LA(6);
+
+ if ( (LA12_249=='2') ) {
+ int LA12_303 = input.LA(7);
+
+ if ( ((LA12_303>='0' && LA12_303<='9')||(LA12_303>='A' && LA12_303<='Z')||LA12_303=='_'||(LA12_303>='a' && LA12_303<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=84;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 's':
+ {
+ int LA12_71 = input.LA(3);
+
+ if ( (LA12_71=='e') ) {
+ int LA12_133 = input.LA(4);
+
+ if ( (LA12_133=='r') ) {
+ int LA12_190 = input.LA(5);
+
+ if ( (LA12_190=='c') ) {
+ int LA12_250 = input.LA(6);
+
+ if ( (LA12_250=='o') ) {
+ int LA12_304 = input.LA(7);
+
+ if ( (LA12_304=='d') ) {
+ int LA12_354 = input.LA(8);
+
+ if ( (LA12_354=='e') ) {
+ switch ( input.LA(9) ) {
+ case '1':
+ {
+ int LA12_440 = input.LA(10);
+
+ if ( ((LA12_440>='0' && LA12_440<='9')||(LA12_440>='A' && LA12_440<='Z')||LA12_440=='_'||(LA12_440>='a' && LA12_440<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=15;}
+ }
+ break;
+ case '2':
+ {
+ int LA12_441 = input.LA(10);
+
+ if ( ((LA12_441>='0' && LA12_441<='9')||(LA12_441>='A' && LA12_441<='Z')||LA12_441=='_'||(LA12_441>='a' && LA12_441<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=16;}
+ }
+ break;
+ case '0':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=23;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='i') ) {
+ switch ( input.LA(2) ) {
+ case 'n':
+ {
+ switch ( input.LA(3) ) {
+ case 'c':
+ {
+ int LA12_134 = input.LA(4);
+
+ if ( (LA12_134=='o') ) {
+ int LA12_191 = input.LA(5);
+
+ if ( (LA12_191=='m') ) {
+ int LA12_251 = input.LA(6);
+
+ if ( (LA12_251=='i') ) {
+ int LA12_305 = input.LA(7);
+
+ if ( (LA12_305=='n') ) {
+ int LA12_355 = input.LA(8);
+
+ if ( (LA12_355=='g') ) {
+ int LA12_400 = input.LA(9);
+
+ if ( ((LA12_400>='0' && LA12_400<='9')||(LA12_400>='A' && LA12_400<='Z')||LA12_400=='_'||(LA12_400>='a' && LA12_400<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=17;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 't':
+ {
+ switch ( input.LA(4) ) {
+ case '3':
+ {
+ int LA12_192 = input.LA(5);
+
+ if ( (LA12_192=='2') ) {
+ int LA12_252 = input.LA(6);
+
+ if ( ((LA12_252>='0' && LA12_252<='9')||(LA12_252>='A' && LA12_252<='Z')||LA12_252=='_'||(LA12_252>='a' && LA12_252<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=81;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '1':
+ {
+ int LA12_193 = input.LA(5);
+
+ if ( (LA12_193=='6') ) {
+ int LA12_253 = input.LA(6);
+
+ if ( ((LA12_253>='0' && LA12_253<='9')||(LA12_253>='A' && LA12_253<='Z')||LA12_253=='_'||(LA12_253>='a' && LA12_253<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=80;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '8':
+ {
+ int LA12_194 = input.LA(5);
+
+ if ( ((LA12_194>='0' && LA12_194<='9')||(LA12_194>='A' && LA12_194<='Z')||LA12_194=='_'||(LA12_194>='a' && LA12_194<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=79;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ break;
+ case 'i':
+ {
+ int LA12_136 = input.LA(4);
+
+ if ( (LA12_136=='t') ) {
+ int LA12_195 = input.LA(5);
+
+ if ( (LA12_195=='i') ) {
+ int LA12_255 = input.LA(6);
+
+ if ( (LA12_255=='a') ) {
+ int LA12_308 = input.LA(7);
+
+ if ( (LA12_308=='l') ) {
+ int LA12_356 = input.LA(8);
+
+ if ( ((LA12_356>='0' && LA12_356<='9')||(LA12_356>='A' && LA12_356<='Z')||LA12_356=='_'||(LA12_356>='a' && LA12_356<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=65;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=26;}
+
+ }
+ break;
+ case 'm':
+ {
+ int LA12_73 = input.LA(3);
+
+ if ( (LA12_73=='p') ) {
+ int LA12_138 = input.LA(4);
+
+ if ( (LA12_138=='o') ) {
+ int LA12_196 = input.LA(5);
+
+ if ( (LA12_196=='r') ) {
+ int LA12_256 = input.LA(6);
+
+ if ( (LA12_256=='t') ) {
+ int LA12_309 = input.LA(7);
+
+ if ( ((LA12_309>='0' && LA12_309<='9')||(LA12_309>='A' && LA12_309<='Z')||LA12_309=='_'||(LA12_309>='a' && LA12_309<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=76;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='o') ) {
+ switch ( input.LA(2) ) {
+ case 'r':
+ {
+ int LA12_74 = input.LA(3);
+
+ if ( ((LA12_74>='0' && LA12_74<='9')||(LA12_74>='A' && LA12_74<='Z')||LA12_74=='_'||(LA12_74>='a' && LA12_74<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=68;}
+ }
+ break;
+ case 'u':
+ {
+ int LA12_75 = input.LA(3);
+
+ if ( (LA12_75=='t') ) {
+ switch ( input.LA(4) ) {
+ case 'g':
+ {
+ int LA12_197 = input.LA(5);
+
+ if ( (LA12_197=='o') ) {
+ int LA12_257 = input.LA(6);
+
+ if ( (LA12_257=='i') ) {
+ int LA12_310 = input.LA(7);
+
+ if ( (LA12_310=='n') ) {
+ int LA12_358 = input.LA(8);
+
+ if ( (LA12_358=='g') ) {
+ int LA12_402 = input.LA(9);
+
+ if ( ((LA12_402>='0' && LA12_402<='9')||(LA12_402>='A' && LA12_402<='Z')||LA12_402=='_'||(LA12_402>='a' && LA12_402<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=18;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=28;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'f':
+ {
+ int LA12_76 = input.LA(3);
+
+ if ( ((LA12_76>='0' && LA12_76<='9')||(LA12_76>='A' && LA12_76<='Z')||LA12_76=='_'||(LA12_76>='a' && LA12_76<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=40;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='r') ) {
+ int LA12_18 = input.LA(2);
+
+ if ( (LA12_18=='e') ) {
+ switch ( input.LA(3) ) {
+ case 'f':
+ {
+ int LA12_142 = input.LA(4);
+
+ if ( ((LA12_142>='0' && LA12_142<='9')||(LA12_142>='A' && LA12_142<='Z')||LA12_142=='_'||(LA12_142>='a' && LA12_142<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=50;}
+ }
+ break;
+ case 'g':
+ {
+ int LA12_143 = input.LA(4);
+
+ if ( (LA12_143=='u') ) {
+ int LA12_200 = input.LA(5);
+
+ if ( (LA12_200=='l') ) {
+ int LA12_258 = input.LA(6);
+
+ if ( (LA12_258=='a') ) {
+ int LA12_311 = input.LA(7);
+
+ if ( (LA12_311=='r') ) {
+ int LA12_359 = input.LA(8);
+
+ if ( ((LA12_359>='0' && LA12_359<='9')||(LA12_359>='A' && LA12_359<='Z')||LA12_359=='_'||(LA12_359>='a' && LA12_359<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=19;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'l':
+ {
+ int LA12_144 = input.LA(4);
+
+ if ( (LA12_144=='a') ) {
+ int LA12_201 = input.LA(5);
+
+ if ( (LA12_201=='y') ) {
+ int LA12_259 = input.LA(6);
+
+ if ( (LA12_259=='_') ) {
+ int LA12_312 = input.LA(7);
+
+ if ( (LA12_312=='s') ) {
+ int LA12_360 = input.LA(8);
+
+ if ( (LA12_360=='a') ) {
+ int LA12_404 = input.LA(9);
+
+ if ( (LA12_404=='p') ) {
+ int LA12_445 = input.LA(10);
+
+ if ( ((LA12_445>='0' && LA12_445<='9')||(LA12_445>='A' && LA12_445<='Z')||LA12_445=='_'||(LA12_445>='a' && LA12_445<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=51;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='c') ) {
+ switch ( input.LA(2) ) {
+ case 'h':
+ {
+ int LA12_78 = input.LA(3);
+
+ if ( (LA12_78=='a') ) {
+ int LA12_145 = input.LA(4);
+
+ if ( (LA12_145=='r') ) {
+ int LA12_202 = input.LA(5);
+
+ if ( ((LA12_202>='0' && LA12_202<='9')||(LA12_202>='A' && LA12_202<='Z')||LA12_202=='_'||(LA12_202>='a' && LA12_202<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=89;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'o':
+ {
+ int LA12_79 = input.LA(3);
+
+ if ( (LA12_79=='n') ) {
+ switch ( input.LA(4) ) {
+ case 'j':
+ {
+ int LA12_203 = input.LA(5);
+
+ if ( (LA12_203=='u') ) {
+ int LA12_261 = input.LA(6);
+
+ if ( (LA12_261=='g') ) {
+ int LA12_313 = input.LA(7);
+
+ if ( (LA12_313=='a') ) {
+ int LA12_361 = input.LA(8);
+
+ if ( (LA12_361=='t') ) {
+ int LA12_405 = input.LA(9);
+
+ if ( (LA12_405=='e') ) {
+ switch ( input.LA(10) ) {
+ case 'd':
+ {
+ int LA12_476 = input.LA(11);
+
+ if ( ((LA12_476>='0' && LA12_476<='9')||(LA12_476>='A' && LA12_476<='Z')||LA12_476=='_'||(LA12_476>='a' && LA12_476<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=34;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=21;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'd':
+ {
+ int LA12_204 = input.LA(5);
+
+ if ( ((LA12_204>='0' && LA12_204<='9')||(LA12_204>='A' && LA12_204<='Z')||LA12_204=='_'||(LA12_204>='a' && LA12_204<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=69;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'p':
+ {
+ int LA12_80 = input.LA(3);
+
+ if ( ((LA12_80>='0' && LA12_80<='9')||(LA12_80>='A' && LA12_80<='Z')||LA12_80=='_'||(LA12_80>='a' && LA12_80<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=71;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='M') ) {
+ int LA12_20 = input.LA(2);
+
+ if ( (LA12_20=='e') ) {
+ int LA12_81 = input.LA(3);
+
+ if ( (LA12_81=='s') ) {
+ int LA12_148 = input.LA(4);
+
+ if ( (LA12_148=='s') ) {
+ int LA12_205 = input.LA(5);
+
+ if ( (LA12_205=='a') ) {
+ int LA12_263 = input.LA(6);
+
+ if ( (LA12_263=='g') ) {
+ int LA12_314 = input.LA(7);
+
+ if ( (LA12_314=='e') ) {
+ int LA12_362 = input.LA(8);
+
+ if ( ((LA12_362>='0' && LA12_362<='9')||(LA12_362>='A' && LA12_362<='Z')||LA12_362=='_'||(LA12_362>='a' && LA12_362<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=22;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='h') ) {
+ int LA12_21 = input.LA(2);
+
+ if ( (LA12_21=='a') ) {
+ int LA12_82 = input.LA(3);
+
+ if ( (LA12_82=='n') ) {
+ int LA12_149 = input.LA(4);
+
+ if ( (LA12_149=='d') ) {
+ int LA12_206 = input.LA(5);
+
+ if ( (LA12_206=='l') ) {
+ int LA12_264 = input.LA(6);
+
+ if ( (LA12_264=='e') ) {
+ switch ( input.LA(7) ) {
+ case 'r':
+ {
+ int LA12_363 = input.LA(8);
+
+ if ( ((LA12_363>='0' && LA12_363<='9')||(LA12_363>='A' && LA12_363<='Z')||LA12_363=='_'||(LA12_363>='a' && LA12_363<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=59;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=24;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='s') ) {
+ switch ( input.LA(2) ) {
+ case 't':
+ {
+ int LA12_83 = input.LA(3);
+
+ if ( (LA12_83=='r') ) {
+ int LA12_150 = input.LA(4);
+
+ if ( (LA12_150=='i') ) {
+ int LA12_207 = input.LA(5);
+
+ if ( (LA12_207=='n') ) {
+ int LA12_265 = input.LA(6);
+
+ if ( (LA12_265=='g') ) {
+ int LA12_316 = input.LA(7);
+
+ if ( ((LA12_316>='0' && LA12_316<='9')||(LA12_316>='A' && LA12_316<='Z')||LA12_316=='_'||(LA12_316>='a' && LA12_316<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=88;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'e':
+ {
+ int LA12_84 = input.LA(3);
+
+ if ( (LA12_84=='m') ) {
+ int LA12_151 = input.LA(4);
+
+ if ( (LA12_151=='a') ) {
+ int LA12_208 = input.LA(5);
+
+ if ( (LA12_208=='n') ) {
+ int LA12_266 = input.LA(6);
+
+ if ( (LA12_266=='t') ) {
+ int LA12_317 = input.LA(7);
+
+ if ( (LA12_317=='i') ) {
+ int LA12_366 = input.LA(8);
+
+ if ( (LA12_366=='c') ) {
+ int LA12_408 = input.LA(9);
+
+ if ( (LA12_408=='s') ) {
+ int LA12_447 = input.LA(10);
+
+ if ( ((LA12_447>='0' && LA12_447<='9')||(LA12_447>='A' && LA12_447<='Z')||LA12_447=='_'||(LA12_447>='a' && LA12_447<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=25;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'a':
+ {
+ int LA12_85 = input.LA(3);
+
+ if ( (LA12_85=='t') ) {
+ int LA12_152 = input.LA(4);
+
+ if ( (LA12_152=='i') ) {
+ int LA12_209 = input.LA(5);
+
+ if ( (LA12_209=='s') ) {
+ int LA12_267 = input.LA(6);
+
+ if ( (LA12_267=='f') ) {
+ int LA12_318 = input.LA(7);
+
+ if ( (LA12_318=='i') ) {
+ int LA12_367 = input.LA(8);
+
+ if ( (LA12_367=='e') ) {
+ int LA12_409 = input.LA(9);
+
+ if ( (LA12_409=='d') ) {
+ int LA12_448 = input.LA(10);
+
+ if ( (LA12_448=='_') ) {
+ int LA12_479 = input.LA(11);
+
+ if ( (LA12_479=='b') ) {
+ int LA12_497 = input.LA(12);
+
+ if ( (LA12_497=='y') ) {
+ int LA12_511 = input.LA(13);
+
+ if ( ((LA12_511>='0' && LA12_511<='9')||(LA12_511>='A' && LA12_511<='Z')||LA12_511=='_'||(LA12_511>='a' && LA12_511<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=49;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'u':
+ {
+ int LA12_86 = input.LA(3);
+
+ if ( (LA12_86=='b') ) {
+ int LA12_153 = input.LA(4);
+
+ if ( (LA12_153=='g') ) {
+ int LA12_210 = input.LA(5);
+
+ if ( (LA12_210=='r') ) {
+ int LA12_268 = input.LA(6);
+
+ if ( (LA12_268=='a') ) {
+ int LA12_319 = input.LA(7);
+
+ if ( (LA12_319=='p') ) {
+ int LA12_368 = input.LA(8);
+
+ if ( (LA12_368=='h') ) {
+ int LA12_410 = input.LA(9);
+
+ if ( ((LA12_410>='0' && LA12_410<='9')||(LA12_410>='A' && LA12_410<='Z')||LA12_410=='_'||(LA12_410>='a' && LA12_410<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=57;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='-') ) {
+ int LA12_23 = input.LA(2);
+
+ if ( (LA12_23=='>') ) {
+ alt12=27;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( (LA12_0=='a') ) {
+ switch ( input.LA(2) ) {
+ case 'c':
+ {
+ int LA12_88 = input.LA(3);
+
+ if ( (LA12_88=='t') ) {
+ int LA12_154 = input.LA(4);
+
+ if ( (LA12_154=='i') ) {
+ int LA12_211 = input.LA(5);
+
+ if ( (LA12_211=='o') ) {
+ int LA12_269 = input.LA(6);
+
+ if ( (LA12_269=='n') ) {
+ int LA12_320 = input.LA(7);
+
+ if ( ((LA12_320>='0' && LA12_320<='9')||(LA12_320>='A' && LA12_320<='Z')||LA12_320=='_'||(LA12_320>='a' && LA12_320<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=66;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'b':
+ {
+ int LA12_89 = input.LA(3);
+
+ if ( (LA12_89=='s') ) {
+ int LA12_155 = input.LA(4);
+
+ if ( (LA12_155=='t') ) {
+ int LA12_212 = input.LA(5);
+
+ if ( (LA12_212=='r') ) {
+ int LA12_270 = input.LA(6);
+
+ if ( (LA12_270=='a') ) {
+ int LA12_321 = input.LA(7);
+
+ if ( (LA12_321=='c') ) {
+ int LA12_370 = input.LA(8);
+
+ if ( (LA12_370=='t') ) {
+ int LA12_411 = input.LA(9);
+
+ if ( ((LA12_411>='0' && LA12_411<='9')||(LA12_411>='A' && LA12_411<='Z')||LA12_411=='_'||(LA12_411>='a' && LA12_411<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=29;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_90 = input.LA(3);
+
+ if ( (LA12_90=='d') ) {
+ int LA12_156 = input.LA(4);
+
+ if ( ((LA12_156>='0' && LA12_156<='9')||(LA12_156>='A' && LA12_156<='Z')||LA12_156=='_'||(LA12_156>='a' && LA12_156<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='I') ) {
+ int LA12_25 = input.LA(2);
+
+ if ( (LA12_25=='n') ) {
+ int LA12_91 = input.LA(3);
+
+ if ( (LA12_91=='t') ) {
+ int LA12_157 = input.LA(4);
+
+ if ( (LA12_157=='e') ) {
+ int LA12_214 = input.LA(5);
+
+ if ( (LA12_214=='r') ) {
+ int LA12_271 = input.LA(6);
+
+ if ( (LA12_271=='f') ) {
+ int LA12_322 = input.LA(7);
+
+ if ( (LA12_322=='a') ) {
+ int LA12_371 = input.LA(8);
+
+ if ( (LA12_371=='c') ) {
+ int LA12_412 = input.LA(9);
+
+ if ( (LA12_412=='e') ) {
+ int LA12_451 = input.LA(10);
+
+ if ( ((LA12_451>='0' && LA12_451<='9')||(LA12_451>='A' && LA12_451<='Z')||LA12_451=='_'||(LA12_451>='a' && LA12_451<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=31;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='S') ) {
+ switch ( input.LA(2) ) {
+ case 't':
+ {
+ switch ( input.LA(3) ) {
+ case 'a':
+ {
+ int LA12_158 = input.LA(4);
+
+ if ( (LA12_158=='t') ) {
+ int LA12_215 = input.LA(5);
+
+ if ( (LA12_215=='e') ) {
+ switch ( input.LA(6) ) {
+ case 'M':
+ {
+ int LA12_323 = input.LA(7);
+
+ if ( (LA12_323=='a') ) {
+ int LA12_372 = input.LA(8);
+
+ if ( (LA12_372=='c') ) {
+ int LA12_413 = input.LA(9);
+
+ if ( (LA12_413=='h') ) {
+ int LA12_452 = input.LA(10);
+
+ if ( (LA12_452=='i') ) {
+ int LA12_481 = input.LA(11);
+
+ if ( (LA12_481=='n') ) {
+ int LA12_498 = input.LA(12);
+
+ if ( (LA12_498=='e') ) {
+ int LA12_512 = input.LA(13);
+
+ if ( ((LA12_512>='0' && LA12_512<='9')||(LA12_512>='A' && LA12_512<='Z')||LA12_512=='_'||(LA12_512>='a' && LA12_512<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=53;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=54;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'r':
+ {
+ int LA12_159 = input.LA(4);
+
+ if ( (LA12_159=='u') ) {
+ int LA12_216 = input.LA(5);
+
+ if ( (LA12_216=='c') ) {
+ int LA12_273 = input.LA(6);
+
+ if ( (LA12_273=='t') ) {
+ int LA12_325 = input.LA(7);
+
+ if ( (LA12_325=='u') ) {
+ int LA12_373 = input.LA(8);
+
+ if ( (LA12_373=='r') ) {
+ int LA12_414 = input.LA(9);
+
+ if ( (LA12_414=='e') ) {
+ int LA12_453 = input.LA(10);
+
+ if ( ((LA12_453>='0' && LA12_453<='9')||(LA12_453>='A' && LA12_453<='Z')||LA12_453=='_'||(LA12_453>='a' && LA12_453<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=32;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ break;
+ case 'u':
+ {
+ int LA12_93 = input.LA(3);
+
+ if ( (LA12_93=='b') ) {
+ int LA12_160 = input.LA(4);
+
+ if ( (LA12_160=='S') ) {
+ int LA12_217 = input.LA(5);
+
+ if ( (LA12_217=='y') ) {
+ int LA12_274 = input.LA(6);
+
+ if ( (LA12_274=='s') ) {
+ int LA12_326 = input.LA(7);
+
+ if ( (LA12_326=='t') ) {
+ int LA12_374 = input.LA(8);
+
+ if ( (LA12_374=='e') ) {
+ int LA12_415 = input.LA(9);
+
+ if ( (LA12_415=='m') ) {
+ switch ( input.LA(10) ) {
+ case 'C':
+ {
+ int LA12_483 = input.LA(11);
+
+ if ( (LA12_483=='l') ) {
+ int LA12_499 = input.LA(12);
+
+ if ( (LA12_499=='a') ) {
+ int LA12_513 = input.LA(13);
+
+ if ( (LA12_513=='s') ) {
+ int LA12_525 = input.LA(14);
+
+ if ( (LA12_525=='s') ) {
+ int LA12_533 = input.LA(15);
+
+ if ( ((LA12_533>='0' && LA12_533<='9')||(LA12_533>='A' && LA12_533<='Z')||LA12_533=='_'||(LA12_533>='a' && LA12_533<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=43;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'R':
+ {
+ int LA12_484 = input.LA(11);
+
+ if ( (LA12_484=='e') ) {
+ int LA12_500 = input.LA(12);
+
+ if ( (LA12_500=='f') ) {
+ int LA12_514 = input.LA(13);
+
+ if ( ((LA12_514>='0' && LA12_514<='9')||(LA12_514>='A' && LA12_514<='Z')||LA12_514=='_'||(LA12_514>='a' && LA12_514<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=42;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'A':
+ {
+ int LA12_94 = input.LA(3);
+
+ if ( (LA12_94=='P') ) {
+ int LA12_161 = input.LA(4);
+
+ if ( ((LA12_161>='0' && LA12_161<='9')||(LA12_161>='A' && LA12_161<='Z')||LA12_161=='_'||(LA12_161>='a' && LA12_161<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=37;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'P':
+ {
+ int LA12_95 = input.LA(3);
+
+ if ( (LA12_95=='P') ) {
+ int LA12_162 = input.LA(4);
+
+ if ( ((LA12_162>='0' && LA12_162<='9')||(LA12_162>='A' && LA12_162<='Z')||LA12_162=='_'||(LA12_162>='a' && LA12_162<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=38;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'e':
+ {
+ int LA12_96 = input.LA(3);
+
+ if ( (LA12_96=='r') ) {
+ int LA12_163 = input.LA(4);
+
+ if ( (LA12_163=='v') ) {
+ int LA12_220 = input.LA(5);
+
+ if ( (LA12_220=='i') ) {
+ int LA12_275 = input.LA(6);
+
+ if ( (LA12_275=='c') ) {
+ int LA12_327 = input.LA(7);
+
+ if ( (LA12_327=='e') ) {
+ int LA12_375 = input.LA(8);
+
+ if ( (LA12_375=='I') ) {
+ int LA12_416 = input.LA(9);
+
+ if ( (LA12_416=='m') ) {
+ int LA12_455 = input.LA(10);
+
+ if ( (LA12_455=='p') ) {
+ int LA12_485 = input.LA(11);
+
+ if ( (LA12_485=='l') ) {
+ int LA12_501 = input.LA(12);
+
+ if ( (LA12_501=='e') ) {
+ int LA12_515 = input.LA(13);
+
+ if ( (LA12_515=='m') ) {
+ int LA12_527 = input.LA(14);
+
+ if ( (LA12_527=='e') ) {
+ int LA12_534 = input.LA(15);
+
+ if ( (LA12_534=='n') ) {
+ int LA12_540 = input.LA(16);
+
+ if ( (LA12_540=='t') ) {
+ int LA12_543 = input.LA(17);
+
+ if ( (LA12_543=='a') ) {
+ int LA12_546 = input.LA(18);
+
+ if ( (LA12_546=='t') ) {
+ int LA12_547 = input.LA(19);
+
+ if ( (LA12_547=='i') ) {
+ int LA12_548 = input.LA(20);
+
+ if ( (LA12_548=='o') ) {
+ int LA12_549 = input.LA(21);
+
+ if ( (LA12_549=='n') ) {
+ int LA12_550 = input.LA(22);
+
+ if ( ((LA12_550>='0' && LA12_550<='9')||(LA12_550>='A' && LA12_550<='Z')||LA12_550=='_'||(LA12_550>='a' && LA12_550<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=39;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='B') ) {
+ switch ( input.LA(2) ) {
+ case 'e':
+ {
+ int LA12_97 = input.LA(3);
+
+ if ( (LA12_97=='h') ) {
+ int LA12_164 = input.LA(4);
+
+ if ( (LA12_164=='a') ) {
+ int LA12_221 = input.LA(5);
+
+ if ( (LA12_221=='v') ) {
+ int LA12_276 = input.LA(6);
+
+ if ( (LA12_276=='i') ) {
+ int LA12_328 = input.LA(7);
+
+ if ( (LA12_328=='o') ) {
+ int LA12_376 = input.LA(8);
+
+ if ( (LA12_376=='r') ) {
+ int LA12_417 = input.LA(9);
+
+ if ( ((LA12_417>='0' && LA12_417<='9')||(LA12_417>='A' && LA12_417<='Z')||LA12_417=='_'||(LA12_417>='a' && LA12_417<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=33;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'i':
+ {
+ int LA12_98 = input.LA(3);
+
+ if ( (LA12_98=='n') ) {
+ int LA12_165 = input.LA(4);
+
+ if ( (LA12_165=='d') ) {
+ int LA12_222 = input.LA(5);
+
+ if ( (LA12_222=='i') ) {
+ int LA12_277 = input.LA(6);
+
+ if ( (LA12_277=='n') ) {
+ int LA12_329 = input.LA(7);
+
+ if ( (LA12_329=='g') ) {
+ int LA12_377 = input.LA(8);
+
+ if ( ((LA12_377>='0' && LA12_377<='9')||(LA12_377>='A' && LA12_377<='Z')||LA12_377=='_'||(LA12_377>='a' && LA12_377<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=46;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='L') ) {
+ switch ( input.LA(2) ) {
+ case 'o':
+ {
+ int LA12_99 = input.LA(3);
+
+ if ( (LA12_99=='g') ) {
+ int LA12_166 = input.LA(4);
+
+ if ( (LA12_166=='i') ) {
+ int LA12_223 = input.LA(5);
+
+ if ( (LA12_223=='c') ) {
+ int LA12_278 = input.LA(6);
+
+ if ( (LA12_278=='a') ) {
+ int LA12_330 = input.LA(7);
+
+ if ( (LA12_330=='l') ) {
+ switch ( input.LA(8) ) {
+ case 'T':
+ {
+ int LA12_419 = input.LA(9);
+
+ if ( (LA12_419=='h') ) {
+ int LA12_457 = input.LA(10);
+
+ if ( (LA12_457=='r') ) {
+ int LA12_486 = input.LA(11);
+
+ if ( (LA12_486=='e') ) {
+ int LA12_502 = input.LA(12);
+
+ if ( (LA12_502=='a') ) {
+ int LA12_516 = input.LA(13);
+
+ if ( (LA12_516=='d') ) {
+ int LA12_528 = input.LA(14);
+
+ if ( ((LA12_528>='0' && LA12_528<='9')||(LA12_528>='A' && LA12_528<='Z')||LA12_528=='_'||(LA12_528>='a' && LA12_528<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=44;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'S':
+ {
+ int LA12_420 = input.LA(9);
+
+ if ( (LA12_420=='y') ) {
+ int LA12_458 = input.LA(10);
+
+ if ( (LA12_458=='s') ) {
+ int LA12_487 = input.LA(11);
+
+ if ( (LA12_487=='t') ) {
+ int LA12_503 = input.LA(12);
+
+ if ( (LA12_503=='e') ) {
+ int LA12_517 = input.LA(13);
+
+ if ( (LA12_517=='m') ) {
+ int LA12_529 = input.LA(14);
+
+ if ( ((LA12_529>='0' && LA12_529<='9')||(LA12_529>='A' && LA12_529<='Z')||LA12_529=='_'||(LA12_529>='a' && LA12_529<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=41;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'a':
+ {
+ int LA12_100 = input.LA(3);
+
+ if ( (LA12_100=='y') ) {
+ int LA12_167 = input.LA(4);
+
+ if ( (LA12_167=='e') ) {
+ int LA12_224 = input.LA(5);
+
+ if ( (LA12_224=='r') ) {
+ int LA12_279 = input.LA(6);
+
+ if ( (LA12_279=='C') ) {
+ int LA12_331 = input.LA(7);
+
+ if ( (LA12_331=='o') ) {
+ int LA12_379 = input.LA(8);
+
+ if ( (LA12_379=='n') ) {
+ int LA12_421 = input.LA(9);
+
+ if ( (LA12_421=='n') ) {
+ int LA12_459 = input.LA(10);
+
+ if ( (LA12_459=='e') ) {
+ int LA12_488 = input.LA(11);
+
+ if ( (LA12_488=='c') ) {
+ int LA12_504 = input.LA(12);
+
+ if ( (LA12_504=='t') ) {
+ int LA12_518 = input.LA(13);
+
+ if ( (LA12_518=='i') ) {
+ int LA12_530 = input.LA(14);
+
+ if ( (LA12_530=='o') ) {
+ int LA12_537 = input.LA(15);
+
+ if ( (LA12_537=='n') ) {
+ int LA12_541 = input.LA(16);
+
+ if ( ((LA12_541>='0' && LA12_541<='9')||(LA12_541>='A' && LA12_541<='Z')||LA12_541=='_'||(LA12_541>='a' && LA12_541<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=48;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='.') ) {
+ alt12=45;
+ }
+ else if ( (LA12_0=='T') ) {
+ int LA12_30 = input.LA(2);
+
+ if ( (LA12_30=='r') ) {
+ int LA12_102 = input.LA(3);
+
+ if ( (LA12_102=='a') ) {
+ int LA12_168 = input.LA(4);
+
+ if ( (LA12_168=='n') ) {
+ int LA12_225 = input.LA(5);
+
+ if ( (LA12_225=='s') ) {
+ int LA12_280 = input.LA(6);
+
+ if ( (LA12_280=='i') ) {
+ int LA12_332 = input.LA(7);
+
+ if ( (LA12_332=='t') ) {
+ int LA12_380 = input.LA(8);
+
+ if ( (LA12_380=='i') ) {
+ int LA12_422 = input.LA(9);
+
+ if ( (LA12_422=='o') ) {
+ int LA12_460 = input.LA(10);
+
+ if ( (LA12_460=='n') ) {
+ switch ( input.LA(11) ) {
+ case 'P':
+ {
+ int LA12_505 = input.LA(12);
+
+ if ( (LA12_505=='o') ) {
+ int LA12_519 = input.LA(13);
+
+ if ( (LA12_519=='i') ) {
+ int LA12_531 = input.LA(14);
+
+ if ( (LA12_531=='n') ) {
+ int LA12_538 = input.LA(15);
+
+ if ( (LA12_538=='t') ) {
+ int LA12_542 = input.LA(16);
+
+ if ( ((LA12_542>='0' && LA12_542<='9')||(LA12_542>='A' && LA12_542<='Z')||LA12_542=='_'||(LA12_542>='a' && LA12_542<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=60;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ {
+ alt12=90;
+ }
+ break;
+ default:
+ alt12=64;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='E') ) {
+ switch ( input.LA(2) ) {
+ case 'x':
+ {
+ int LA12_103 = input.LA(3);
+
+ if ( (LA12_103=='i') ) {
+ int LA12_169 = input.LA(4);
+
+ if ( (LA12_169=='t') ) {
+ int LA12_226 = input.LA(5);
+
+ if ( (LA12_226=='P') ) {
+ int LA12_281 = input.LA(6);
+
+ if ( (LA12_281=='o') ) {
+ int LA12_333 = input.LA(7);
+
+ if ( (LA12_333=='i') ) {
+ int LA12_381 = input.LA(8);
+
+ if ( (LA12_381=='n') ) {
+ int LA12_423 = input.LA(9);
+
+ if ( (LA12_423=='t') ) {
+ int LA12_461 = input.LA(10);
+
+ if ( ((LA12_461>='0' && LA12_461<='9')||(LA12_461>='A' && LA12_461<='Z')||LA12_461=='_'||(LA12_461>='a' && LA12_461<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=62;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_104 = input.LA(3);
+
+ if ( (LA12_104=='t') ) {
+ int LA12_170 = input.LA(4);
+
+ if ( (LA12_170=='r') ) {
+ int LA12_227 = input.LA(5);
+
+ if ( (LA12_227=='y') ) {
+ int LA12_282 = input.LA(6);
+
+ if ( (LA12_282=='P') ) {
+ int LA12_334 = input.LA(7);
+
+ if ( (LA12_334=='o') ) {
+ int LA12_382 = input.LA(8);
+
+ if ( (LA12_382=='i') ) {
+ int LA12_424 = input.LA(9);
+
+ if ( (LA12_424=='n') ) {
+ int LA12_462 = input.LA(10);
+
+ if ( (LA12_462=='t') ) {
+ int LA12_491 = input.LA(11);
+
+ if ( ((LA12_491>='0' && LA12_491<='9')||(LA12_491>='A' && LA12_491<='Z')||LA12_491=='_'||(LA12_491>='a' && LA12_491<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=61;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else if ( (LA12_0=='C') ) {
+ int LA12_32 = input.LA(2);
+
+ if ( (LA12_32=='h') ) {
+ int LA12_105 = input.LA(3);
+
+ if ( (LA12_105=='o') ) {
+ int LA12_171 = input.LA(4);
+
+ if ( (LA12_171=='i') ) {
+ int LA12_228 = input.LA(5);
+
+ if ( (LA12_228=='c') ) {
+ int LA12_283 = input.LA(6);
+
+ if ( (LA12_283=='e') ) {
+ int LA12_335 = input.LA(7);
+
+ if ( (LA12_335=='P') ) {
+ int LA12_383 = input.LA(8);
+
+ if ( (LA12_383=='o') ) {
+ int LA12_425 = input.LA(9);
+
+ if ( (LA12_425=='i') ) {
+ int LA12_463 = input.LA(10);
+
+ if ( (LA12_463=='n') ) {
+ int LA12_492 = input.LA(11);
+
+ if ( (LA12_492=='t') ) {
+ int LA12_508 = input.LA(12);
+
+ if ( ((LA12_508>='0' && LA12_508<='9')||(LA12_508>='A' && LA12_508<='Z')||LA12_508=='_'||(LA12_508>='a' && LA12_508<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=63;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='t') ) {
+ int LA12_33 = input.LA(2);
+
+ if ( (LA12_33=='r') ) {
+ int LA12_106 = input.LA(3);
+
+ if ( (LA12_106=='i') ) {
+ int LA12_172 = input.LA(4);
+
+ if ( (LA12_172=='g') ) {
+ int LA12_229 = input.LA(5);
+
+ if ( (LA12_229=='g') ) {
+ int LA12_284 = input.LA(6);
+
+ if ( (LA12_284=='e') ) {
+ int LA12_336 = input.LA(7);
+
+ if ( (LA12_336=='r') ) {
+ int LA12_384 = input.LA(8);
+
+ if ( (LA12_384=='s') ) {
+ int LA12_426 = input.LA(9);
+
+ if ( ((LA12_426>='0' && LA12_426<='9')||(LA12_426>='A' && LA12_426<='Z')||LA12_426=='_'||(LA12_426>='a' && LA12_426<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=67;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='m') ) {
+ int LA12_34 = input.LA(2);
+
+ if ( (LA12_34=='y') ) {
+ int LA12_107 = input.LA(3);
+
+ if ( ((LA12_107>='0' && LA12_107<='9')||(LA12_107>='A' && LA12_107<='Z')||LA12_107=='_'||(LA12_107>='a' && LA12_107<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=70;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='<') ) {
+ alt12=72;
+ }
+ else if ( (LA12_0=='|') ) {
+ alt12=73;
+ }
+ else if ( (LA12_0=='>') ) {
+ alt12=74;
+ }
+ else if ( (LA12_0=='g') ) {
+ int LA12_38 = input.LA(2);
+
+ if ( (LA12_38=='u') ) {
+ int LA12_111 = input.LA(3);
+
+ if ( (LA12_111=='a') ) {
+ int LA12_174 = input.LA(4);
+
+ if ( (LA12_174=='r') ) {
+ int LA12_230 = input.LA(5);
+
+ if ( (LA12_230=='d') ) {
+ int LA12_285 = input.LA(6);
+
+ if ( ((LA12_285>='0' && LA12_285<='9')||(LA12_285>='A' && LA12_285<='Z')||LA12_285=='_'||(LA12_285>='a' && LA12_285<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=75;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='*') ) {
+ alt12=77;
+ }
+ else if ( (LA12_0=='v') ) {
+ int LA12_40 = input.LA(2);
+
+ if ( (LA12_40=='o') ) {
+ int LA12_113 = input.LA(3);
+
+ if ( (LA12_113=='i') ) {
+ int LA12_175 = input.LA(4);
+
+ if ( (LA12_175=='d') ) {
+ int LA12_231 = input.LA(5);
+
+ if ( ((LA12_231>='0' && LA12_231<='9')||(LA12_231>='A' && LA12_231<='Z')||LA12_231=='_'||(LA12_231>='a' && LA12_231<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=78;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='f') ) {
+ int LA12_41 = input.LA(2);
+
+ if ( (LA12_41=='l') ) {
+ int LA12_114 = input.LA(3);
+
+ if ( (LA12_114=='o') ) {
+ int LA12_176 = input.LA(4);
+
+ if ( (LA12_176=='a') ) {
+ int LA12_232 = input.LA(5);
+
+ if ( (LA12_232=='t') ) {
+ switch ( input.LA(6) ) {
+ case '6':
+ {
+ int LA12_338 = input.LA(7);
+
+ if ( (LA12_338=='4') ) {
+ int LA12_385 = input.LA(8);
+
+ if ( ((LA12_385>='0' && LA12_385<='9')||(LA12_385>='A' && LA12_385<='Z')||LA12_385=='_'||(LA12_385>='a' && LA12_385<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=86;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ case '3':
+ {
+ int LA12_339 = input.LA(7);
+
+ if ( (LA12_339=='2') ) {
+ int LA12_386 = input.LA(8);
+
+ if ( ((LA12_386>='0' && LA12_386<='9')||(LA12_386>='A' && LA12_386<='Z')||LA12_386=='_'||(LA12_386>='a' && LA12_386<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=85;}
+ }
+ else {
+ alt12=90;}
+ }
+ break;
+ default:
+ alt12=90;}
+
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='b') ) {
+ int LA12_42 = input.LA(2);
+
+ if ( (LA12_42=='o') ) {
+ int LA12_115 = input.LA(3);
+
+ if ( (LA12_115=='o') ) {
+ int LA12_177 = input.LA(4);
+
+ if ( (LA12_177=='l') ) {
+ int LA12_233 = input.LA(5);
+
+ if ( (LA12_233=='e') ) {
+ int LA12_288 = input.LA(6);
+
+ if ( (LA12_288=='a') ) {
+ int LA12_340 = input.LA(7);
+
+ if ( (LA12_340=='n') ) {
+ int LA12_387 = input.LA(8);
+
+ if ( ((LA12_387>='0' && LA12_387<='9')||(LA12_387>='A' && LA12_387<='Z')||LA12_387=='_'||(LA12_387>='a' && LA12_387<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=87;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else {
+ alt12=90;}
+ }
+ else if ( (LA12_0=='^') ) {
+ int LA12_43 = input.LA(2);
+
+ if ( ((LA12_43>='A' && LA12_43<='Z')||LA12_43=='_'||(LA12_43>='a' && LA12_43<='z')) ) {
+ alt12=90;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( ((LA12_0>='F' && LA12_0<='H')||(LA12_0>='J' && LA12_0<='K')||LA12_0=='N'||LA12_0=='Q'||(LA12_0>='U' && LA12_0<='Z')||LA12_0=='_'||LA12_0=='d'||(LA12_0>='j' && LA12_0<='l')||LA12_0=='n'||(LA12_0>='p' && LA12_0<='q')||(LA12_0>='w' && LA12_0<='z')) ) {
+ alt12=90;
+ }
+ else if ( ((LA12_0>='0' && LA12_0<='9')) ) {
+ alt12=91;
+ }
+ else if ( (LA12_0=='\"') ) {
+ int LA12_46 = input.LA(2);
+
+ if ( ((LA12_46>='\u0000' && LA12_46<='\uFFFE')) ) {
+ alt12=92;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( (LA12_0=='\'') ) {
+ int LA12_47 = input.LA(2);
+
+ if ( ((LA12_47>='\u0000' && LA12_47<='\uFFFE')) ) {
+ alt12=92;
+ }
+ else {
+ alt12=96;}
+ }
+ else if ( (LA12_0=='/') ) {
+ switch ( input.LA(2) ) {
+ case '*':
+ {
+ alt12=93;
+ }
+ break;
+ case '/':
+ {
+ alt12=94;
+ }
+ break;
+ default:
+ alt12=96;}
+
+ }
+ else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {
+ alt12=95;
+ }
+ else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='#' && LA12_0<='&')||LA12_0=='+'||LA12_0==';'||LA12_0=='='||(LA12_0>='?' && LA12_0<='@')||LA12_0=='\\'||LA12_0=='`'||(LA12_0>='~' && LA12_0<='\uFFFE')) ) {
+ alt12=96;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1:1: Tokens : ( T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );", 12, 0, input);
+
+ throw nvae;
+ }
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:10: T11
+ {
+ mT11();
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:14: T12
+ {
+ mT12();
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:18: T13
+ {
+ mT13();
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:22: T14
+ {
+ mT14();
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:26: T15
+ {
+ mT15();
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:30: T16
+ {
+ mT16();
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:34: T17
+ {
+ mT17();
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:38: T18
+ {
+ mT18();
+
+ }
+ break;
+ case 9 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:42: T19
+ {
+ mT19();
+
+ }
+ break;
+ case 10 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:46: T20
+ {
+ mT20();
+
+ }
+ break;
+ case 11 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:50: T21
+ {
+ mT21();
+
+ }
+ break;
+ case 12 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:54: T22
+ {
+ mT22();
+
+ }
+ break;
+ case 13 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:58: T23
+ {
+ mT23();
+
+ }
+ break;
+ case 14 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:62: T24
+ {
+ mT24();
+
+ }
+ break;
+ case 15 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:66: T25
+ {
+ mT25();
+
+ }
+ break;
+ case 16 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:70: T26
+ {
+ mT26();
+
+ }
+ break;
+ case 17 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:74: T27
+ {
+ mT27();
+
+ }
+ break;
+ case 18 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:78: T28
+ {
+ mT28();
+
+ }
+ break;
+ case 19 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:82: T29
+ {
+ mT29();
+
+ }
+ break;
+ case 20 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:86: T30
+ {
+ mT30();
+
+ }
+ break;
+ case 21 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:90: T31
+ {
+ mT31();
+
+ }
+ break;
+ case 22 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:94: T32
+ {
+ mT32();
+
+ }
+ break;
+ case 23 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:98: T33
+ {
+ mT33();
+
+ }
+ break;
+ case 24 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:102: T34
+ {
+ mT34();
+
+ }
+ break;
+ case 25 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:106: T35
+ {
+ mT35();
+
+ }
+ break;
+ case 26 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:110: T36
+ {
+ mT36();
+
+ }
+ break;
+ case 27 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:114: T37
+ {
+ mT37();
+
+ }
+ break;
+ case 28 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:118: T38
+ {
+ mT38();
+
+ }
+ break;
+ case 29 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:122: T39
+ {
+ mT39();
+
+ }
+ break;
+ case 30 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:126: T40
+ {
+ mT40();
+
+ }
+ break;
+ case 31 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:130: T41
+ {
+ mT41();
+
+ }
+ break;
+ case 32 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:134: T42
+ {
+ mT42();
+
+ }
+ break;
+ case 33 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:138: T43
+ {
+ mT43();
+
+ }
+ break;
+ case 34 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:142: T44
+ {
+ mT44();
+
+ }
+ break;
+ case 35 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:146: T45
+ {
+ mT45();
+
+ }
+ break;
+ case 36 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:150: T46
+ {
+ mT46();
+
+ }
+ break;
+ case 37 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:154: T47
+ {
+ mT47();
+
+ }
+ break;
+ case 38 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:158: T48
+ {
+ mT48();
+
+ }
+ break;
+ case 39 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:162: T49
+ {
+ mT49();
+
+ }
+ break;
+ case 40 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:166: T50
+ {
+ mT50();
+
+ }
+ break;
+ case 41 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:170: T51
+ {
+ mT51();
+
+ }
+ break;
+ case 42 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:174: T52
+ {
+ mT52();
+
+ }
+ break;
+ case 43 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:178: T53
+ {
+ mT53();
+
+ }
+ break;
+ case 44 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:182: T54
+ {
+ mT54();
+
+ }
+ break;
+ case 45 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:186: T55
+ {
+ mT55();
+
+ }
+ break;
+ case 46 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:190: T56
+ {
+ mT56();
+
+ }
+ break;
+ case 47 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:194: T57
+ {
+ mT57();
+
+ }
+ break;
+ case 48 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:198: T58
+ {
+ mT58();
+
+ }
+ break;
+ case 49 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:202: T59
+ {
+ mT59();
+
+ }
+ break;
+ case 50 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:206: T60
+ {
+ mT60();
+
+ }
+ break;
+ case 51 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:210: T61
+ {
+ mT61();
+
+ }
+ break;
+ case 52 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:214: T62
+ {
+ mT62();
+
+ }
+ break;
+ case 53 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:218: T63
+ {
+ mT63();
+
+ }
+ break;
+ case 54 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:222: T64
+ {
+ mT64();
+
+ }
+ break;
+ case 55 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:226: T65
+ {
+ mT65();
+
+ }
+ break;
+ case 56 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:230: T66
+ {
+ mT66();
+
+ }
+ break;
+ case 57 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:234: T67
+ {
+ mT67();
+
+ }
+ break;
+ case 58 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:238: T68
+ {
+ mT68();
+
+ }
+ break;
+ case 59 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:242: T69
+ {
+ mT69();
+
+ }
+ break;
+ case 60 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:246: T70
+ {
+ mT70();
+
+ }
+ break;
+ case 61 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:250: T71
+ {
+ mT71();
+
+ }
+ break;
+ case 62 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:254: T72
+ {
+ mT72();
+
+ }
+ break;
+ case 63 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:258: T73
+ {
+ mT73();
+
+ }
+ break;
+ case 64 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:262: T74
+ {
+ mT74();
+
+ }
+ break;
+ case 65 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:266: T75
+ {
+ mT75();
+
+ }
+ break;
+ case 66 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:270: T76
+ {
+ mT76();
+
+ }
+ break;
+ case 67 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:274: T77
+ {
+ mT77();
+
+ }
+ break;
+ case 68 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:278: T78
+ {
+ mT78();
+
+ }
+ break;
+ case 69 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:282: T79
+ {
+ mT79();
+
+ }
+ break;
+ case 70 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:286: T80
+ {
+ mT80();
+
+ }
+ break;
+ case 71 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:290: T81
+ {
+ mT81();
+
+ }
+ break;
+ case 72 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:294: T82
+ {
+ mT82();
+
+ }
+ break;
+ case 73 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:298: T83
+ {
+ mT83();
+
+ }
+ break;
+ case 74 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:302: T84
+ {
+ mT84();
+
+ }
+ break;
+ case 75 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:306: T85
+ {
+ mT85();
+
+ }
+ break;
+ case 76 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:310: T86
+ {
+ mT86();
+
+ }
+ break;
+ case 77 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:314: T87
+ {
+ mT87();
+
+ }
+ break;
+ case 78 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:318: T88
+ {
+ mT88();
+
+ }
+ break;
+ case 79 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:322: T89
+ {
+ mT89();
+
+ }
+ break;
+ case 80 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:326: T90
+ {
+ mT90();
+
+ }
+ break;
+ case 81 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:330: T91
+ {
+ mT91();
+
+ }
+ break;
+ case 82 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:334: T92
+ {
+ mT92();
+
+ }
+ break;
+ case 83 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:338: T93
+ {
+ mT93();
+
+ }
+ break;
+ case 84 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:342: T94
+ {
+ mT94();
+
+ }
+ break;
+ case 85 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:346: T95
+ {
+ mT95();
+
+ }
+ break;
+ case 86 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:350: T96
+ {
+ mT96();
+
+ }
+ break;
+ case 87 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:354: T97
+ {
+ mT97();
+
+ }
+ break;
+ case 88 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:358: T98
+ {
+ mT98();
+
+ }
+ break;
+ case 89 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:362: T99
+ {
+ mT99();
+
+ }
+ break;
+ case 90 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:366: RULE_ID
+ {
+ mRULE_ID();
+
+ }
+ break;
+ case 91 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:374: RULE_INT
+ {
+ mRULE_INT();
+
+ }
+ break;
+ case 92 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:383: RULE_STRING
+ {
+ mRULE_STRING();
+
+ }
+ break;
+ case 93 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:395: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 94 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:411: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 95 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:427: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 96 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1:435: RULE_ANY_OTHER
+ {
+ mRULE_ANY_OTHER();
+
+ }
+ break;
+
+ }
+
+ }
+
+
+
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomParser.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomParser.java
new file mode 100644
index 000000000..ce9885097
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomParser.java
@@ -0,0 +1,15967 @@
+package org.eclipse.etrice.core.parser.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.xtext.parsetree.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.xtext.conversion.ValueConverterException;
+import org.eclipse.etrice.core.services.RoomGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRoomParser extends AbstractInternalAntlrParser {
+ public static final String[] tokenNames = new String[] {
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'RoomModel'", "'{'", "'}'", "':'", "'DataClass'", "'extends'", "'Attribute'", "'['", "']'", "'Operation'", "'('", "','", "')'", "'ProtocolClass'", "'usercode1'", "'usercode2'", "'incoming'", "'outgoing'", "'regular'", "'PortClass'", "'conjugate'", "'Message'", "'usercode'", "'handle'", "'semantics'", "'in'", "'->'", "'out'", "'abstract'", "'ActorClass'", "'Interface'", "'Structure'", "'Behavior'", "'conjugated'", "'Port'", "'external'", "'SAP'", "'SPP'", "'ServiceImplementation'", "'of'", "'LogicalSystem'", "'SubSystemRef'", "'SubSystemClass'", "'LogicalThread'", "'.'", "'Binding'", "'and'", "'LayerConnection'", "'satisfied_by'", "'ref'", "'relay_sap'", "'ActorRef'", "'StateMachine'", "'State'", "'entry'", "'exit'", "'subgraph'", "'RefinedState'", "'handler'", "'TransitionPoint'", "'EntryPoint'", "'ExitPoint'", "'ChoicePoint'", "'Transition'", "'initial'", "'action'", "'triggers'", "'or'", "'cond'", "'my'", "'cp'", "'<'", "'|'", "'>'", "'guard'", "'import'", "'*'", "'void'", "'int8'", "'int16'", "'int32'", "'uint8'", "'uint16'", "'uint32'", "'float32'", "'float64'", "'boolean'", "'string'", "'char'"
+ };
+ public static final int RULE_ID=4;
+ public static final int RULE_STRING=6;
+ public static final int RULE_ANY_OTHER=10;
+ public static final int RULE_INT=5;
+ public static final int RULE_WS=9;
+ public static final int RULE_SL_COMMENT=8;
+ public static final int EOF=-1;
+ public static final int RULE_ML_COMMENT=7;
+
+ public InternalRoomParser(TokenStream input) {
+ super(input);
+ }
+
+
+ public String[] getTokenNames() { return tokenNames; }
+ public String getGrammarFileName() { return "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g"; }
+
+
+
+ private RoomGrammarAccess grammarAccess;
+
+ public InternalRoomParser(TokenStream input, IAstFactory factory, RoomGrammarAccess grammarAccess) {
+ this(input);
+ this.factory = factory;
+ registerRules(grammarAccess.getGrammar());
+ this.grammarAccess = grammarAccess;
+ }
+
+ @Override
+ protected InputStream getTokenFile() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.tokens");
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "RoomModel";
+ }
+
+ @Override
+ protected RoomGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+
+
+
+ // $ANTLR start entryRuleRoomModel
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:78:1: entryRuleRoomModel returns [EObject current=null] : iv_ruleRoomModel= ruleRoomModel EOF ;
+ public final EObject entryRuleRoomModel() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleRoomModel = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:79:2: (iv_ruleRoomModel= ruleRoomModel EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:80:2: iv_ruleRoomModel= ruleRoomModel EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getRoomModelRule(), currentNode);
+ pushFollow(FOLLOW_ruleRoomModel_in_entryRuleRoomModel75);
+ iv_ruleRoomModel=ruleRoomModel();
+ _fsp--;
+
+ current =iv_ruleRoomModel;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRoomModel85);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleRoomModel
+
+
+ // $ANTLR start ruleRoomModel
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:87:1: ruleRoomModel returns [EObject current=null] : ( 'RoomModel' ( (lv_name_1_0= ruleFQN ) ) '{' ( (lv_imports_3_0= ruleImport ) )* ( ( (lv_dataClasses_4_0= ruleDataClass ) ) | ( (lv_protocolClasses_5_0= ruleProtocolClass ) ) | ( (lv_actorClasses_6_0= ruleActorClass ) ) | ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) ) | ( (lv_systems_8_0= ruleLogicalSystem ) ) )+ '}' ) ;
+ public final EObject ruleRoomModel() throws RecognitionException {
+ EObject current = null;
+
+ AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+ EObject lv_imports_3_0 = null;
+
+ EObject lv_dataClasses_4_0 = null;
+
+ EObject lv_protocolClasses_5_0 = null;
+
+ EObject lv_actorClasses_6_0 = null;
+
+ EObject lv_subSystemClasses_7_0 = null;
+
+ EObject lv_systems_8_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:92:6: ( ( 'RoomModel' ( (lv_name_1_0= ruleFQN ) ) '{' ( (lv_imports_3_0= ruleImport ) )* ( ( (lv_dataClasses_4_0= ruleDataClass ) ) | ( (lv_protocolClasses_5_0= ruleProtocolClass ) ) | ( (lv_actorClasses_6_0= ruleActorClass ) ) | ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) ) | ( (lv_systems_8_0= ruleLogicalSystem ) ) )+ '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:93:1: ( 'RoomModel' ( (lv_name_1_0= ruleFQN ) ) '{' ( (lv_imports_3_0= ruleImport ) )* ( ( (lv_dataClasses_4_0= ruleDataClass ) ) | ( (lv_protocolClasses_5_0= ruleProtocolClass ) ) | ( (lv_actorClasses_6_0= ruleActorClass ) ) | ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) ) | ( (lv_systems_8_0= ruleLogicalSystem ) ) )+ '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:93:1: ( 'RoomModel' ( (lv_name_1_0= ruleFQN ) ) '{' ( (lv_imports_3_0= ruleImport ) )* ( ( (lv_dataClasses_4_0= ruleDataClass ) ) | ( (lv_protocolClasses_5_0= ruleProtocolClass ) ) | ( (lv_actorClasses_6_0= ruleActorClass ) ) | ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) ) | ( (lv_systems_8_0= ruleLogicalSystem ) ) )+ '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:93:3: 'RoomModel' ( (lv_name_1_0= ruleFQN ) ) '{' ( (lv_imports_3_0= ruleImport ) )* ( ( (lv_dataClasses_4_0= ruleDataClass ) ) | ( (lv_protocolClasses_5_0= ruleProtocolClass ) ) | ( (lv_actorClasses_6_0= ruleActorClass ) ) | ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) ) | ( (lv_systems_8_0= ruleLogicalSystem ) ) )+ '}'
+ {
+ match(input,11,FOLLOW_11_in_ruleRoomModel120);
+
+ createLeafNode(grammarAccess.getRoomModelAccess().getRoomModelKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:97:1: ( (lv_name_1_0= ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:98:1: (lv_name_1_0= ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:98:1: (lv_name_1_0= ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:99:3: lv_name_1_0= ruleFQN
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getNameFQNParserRuleCall_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleRoomModel141);
+ lv_name_1_0=ruleFQN();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "FQN",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleRoomModel151);
+
+ createLeafNode(grammarAccess.getRoomModelAccess().getLeftCurlyBracketKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:125:1: ( (lv_imports_3_0= ruleImport ) )*
+ loop1:
+ do {
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0==86) ) {
+ alt1=1;
+ }
+
+
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:126:1: (lv_imports_3_0= ruleImport )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:126:1: (lv_imports_3_0= ruleImport )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:127:3: lv_imports_3_0= ruleImport
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getImportsImportParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleImport_in_ruleRoomModel172);
+ lv_imports_3_0=ruleImport();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "imports",
+ lv_imports_3_0,
+ "Import",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop1;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:149:3: ( ( (lv_dataClasses_4_0= ruleDataClass ) ) | ( (lv_protocolClasses_5_0= ruleProtocolClass ) ) | ( (lv_actorClasses_6_0= ruleActorClass ) ) | ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) ) | ( (lv_systems_8_0= ruleLogicalSystem ) ) )+
+ int cnt2=0;
+ loop2:
+ do {
+ int alt2=6;
+ switch ( input.LA(1) ) {
+ case 15:
+ {
+ alt2=1;
+ }
+ break;
+ case 24:
+ {
+ alt2=2;
+ }
+ break;
+ case 39:
+ case 40:
+ {
+ alt2=3;
+ }
+ break;
+ case 53:
+ {
+ alt2=4;
+ }
+ break;
+ case 51:
+ {
+ alt2=5;
+ }
+ break;
+
+ }
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:149:4: ( (lv_dataClasses_4_0= ruleDataClass ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:149:4: ( (lv_dataClasses_4_0= ruleDataClass ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:150:1: (lv_dataClasses_4_0= ruleDataClass )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:150:1: (lv_dataClasses_4_0= ruleDataClass )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:151:3: lv_dataClasses_4_0= ruleDataClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getDataClassesDataClassParserRuleCall_4_0_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDataClass_in_ruleRoomModel195);
+ lv_dataClasses_4_0=ruleDataClass();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "dataClasses",
+ lv_dataClasses_4_0,
+ "DataClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:174:6: ( (lv_protocolClasses_5_0= ruleProtocolClass ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:174:6: ( (lv_protocolClasses_5_0= ruleProtocolClass ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:175:1: (lv_protocolClasses_5_0= ruleProtocolClass )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:175:1: (lv_protocolClasses_5_0= ruleProtocolClass )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:176:3: lv_protocolClasses_5_0= ruleProtocolClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getProtocolClassesProtocolClassParserRuleCall_4_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleProtocolClass_in_ruleRoomModel222);
+ lv_protocolClasses_5_0=ruleProtocolClass();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "protocolClasses",
+ lv_protocolClasses_5_0,
+ "ProtocolClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:199:6: ( (lv_actorClasses_6_0= ruleActorClass ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:199:6: ( (lv_actorClasses_6_0= ruleActorClass ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:200:1: (lv_actorClasses_6_0= ruleActorClass )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:200:1: (lv_actorClasses_6_0= ruleActorClass )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:201:3: lv_actorClasses_6_0= ruleActorClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getActorClassesActorClassParserRuleCall_4_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleActorClass_in_ruleRoomModel249);
+ lv_actorClasses_6_0=ruleActorClass();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "actorClasses",
+ lv_actorClasses_6_0,
+ "ActorClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:224:6: ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:224:6: ( (lv_subSystemClasses_7_0= ruleSubSystemClass ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:225:1: (lv_subSystemClasses_7_0= ruleSubSystemClass )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:225:1: (lv_subSystemClasses_7_0= ruleSubSystemClass )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:226:3: lv_subSystemClasses_7_0= ruleSubSystemClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getSubSystemClassesSubSystemClassParserRuleCall_4_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSubSystemClass_in_ruleRoomModel276);
+ lv_subSystemClasses_7_0=ruleSubSystemClass();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "subSystemClasses",
+ lv_subSystemClasses_7_0,
+ "SubSystemClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:249:6: ( (lv_systems_8_0= ruleLogicalSystem ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:249:6: ( (lv_systems_8_0= ruleLogicalSystem ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:250:1: (lv_systems_8_0= ruleLogicalSystem )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:250:1: (lv_systems_8_0= ruleLogicalSystem )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:251:3: lv_systems_8_0= ruleLogicalSystem
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRoomModelAccess().getSystemsLogicalSystemParserRuleCall_4_4_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleLogicalSystem_in_ruleRoomModel303);
+ lv_systems_8_0=ruleLogicalSystem();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRoomModelRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "systems",
+ lv_systems_8_0,
+ "LogicalSystem",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt2 >= 1 ) break loop2;
+ EarlyExitException eee =
+ new EarlyExitException(2, input);
+ throw eee;
+ }
+ cnt2++;
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleRoomModel315);
+
+ createLeafNode(grammarAccess.getRoomModelAccess().getRightCurlyBracketKeyword_5(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleRoomModel
+
+
+ // $ANTLR start entryRuleStructureClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:287:1: entryRuleStructureClass returns [EObject current=null] : iv_ruleStructureClass= ruleStructureClass EOF ;
+ public final EObject entryRuleStructureClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleStructureClass = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:288:2: (iv_ruleStructureClass= ruleStructureClass EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:289:2: iv_ruleStructureClass= ruleStructureClass EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getStructureClassRule(), currentNode);
+ pushFollow(FOLLOW_ruleStructureClass_in_entryRuleStructureClass353);
+ iv_ruleStructureClass=ruleStructureClass();
+ _fsp--;
+
+ current =iv_ruleStructureClass;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStructureClass363);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleStructureClass
+
+
+ // $ANTLR start ruleStructureClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:296:1: ruleStructureClass returns [EObject current=null] : (this_ActorContainerClass_0= ruleActorContainerClass | this_LogicalSystem_1= ruleLogicalSystem ) ;
+ public final EObject ruleStructureClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_ActorContainerClass_0 = null;
+
+ EObject this_LogicalSystem_1 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:301:6: ( (this_ActorContainerClass_0= ruleActorContainerClass | this_LogicalSystem_1= ruleLogicalSystem ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:302:1: (this_ActorContainerClass_0= ruleActorContainerClass | this_LogicalSystem_1= ruleLogicalSystem )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:302:1: (this_ActorContainerClass_0= ruleActorContainerClass | this_LogicalSystem_1= ruleLogicalSystem )
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( ((LA3_0>=39 && LA3_0<=40)||LA3_0==53) ) {
+ alt3=1;
+ }
+ else if ( (LA3_0==51) ) {
+ alt3=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("302:1: (this_ActorContainerClass_0= ruleActorContainerClass | this_LogicalSystem_1= ruleLogicalSystem )", 3, 0, input);
+
+ throw nvae;
+ }
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:303:5: this_ActorContainerClass_0= ruleActorContainerClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStructureClassAccess().getActorContainerClassParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleActorContainerClass_in_ruleStructureClass410);
+ this_ActorContainerClass_0=ruleActorContainerClass();
+ _fsp--;
+
+
+ current = this_ActorContainerClass_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:313:5: this_LogicalSystem_1= ruleLogicalSystem
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStructureClassAccess().getLogicalSystemParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleLogicalSystem_in_ruleStructureClass437);
+ this_LogicalSystem_1=ruleLogicalSystem();
+ _fsp--;
+
+
+ current = this_LogicalSystem_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleStructureClass
+
+
+ // $ANTLR start entryRuleActorContainerClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:329:1: entryRuleActorContainerClass returns [EObject current=null] : iv_ruleActorContainerClass= ruleActorContainerClass EOF ;
+ public final EObject entryRuleActorContainerClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleActorContainerClass = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:330:2: (iv_ruleActorContainerClass= ruleActorContainerClass EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:331:2: iv_ruleActorContainerClass= ruleActorContainerClass EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getActorContainerClassRule(), currentNode);
+ pushFollow(FOLLOW_ruleActorContainerClass_in_entryRuleActorContainerClass472);
+ iv_ruleActorContainerClass=ruleActorContainerClass();
+ _fsp--;
+
+ current =iv_ruleActorContainerClass;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorContainerClass482);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleActorContainerClass
+
+
+ // $ANTLR start ruleActorContainerClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:338:1: ruleActorContainerClass returns [EObject current=null] : (this_ActorClass_0= ruleActorClass | this_SubSystemClass_1= ruleSubSystemClass ) ;
+ public final EObject ruleActorContainerClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_ActorClass_0 = null;
+
+ EObject this_SubSystemClass_1 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:343:6: ( (this_ActorClass_0= ruleActorClass | this_SubSystemClass_1= ruleSubSystemClass ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:344:1: (this_ActorClass_0= ruleActorClass | this_SubSystemClass_1= ruleSubSystemClass )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:344:1: (this_ActorClass_0= ruleActorClass | this_SubSystemClass_1= ruleSubSystemClass )
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( ((LA4_0>=39 && LA4_0<=40)) ) {
+ alt4=1;
+ }
+ else if ( (LA4_0==53) ) {
+ alt4=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("344:1: (this_ActorClass_0= ruleActorClass | this_SubSystemClass_1= ruleSubSystemClass )", 4, 0, input);
+
+ throw nvae;
+ }
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:345:5: this_ActorClass_0= ruleActorClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorContainerClassAccess().getActorClassParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleActorClass_in_ruleActorContainerClass529);
+ this_ActorClass_0=ruleActorClass();
+ _fsp--;
+
+
+ current = this_ActorClass_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:355:5: this_SubSystemClass_1= ruleSubSystemClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorContainerClassAccess().getSubSystemClassParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleSubSystemClass_in_ruleActorContainerClass556);
+ this_SubSystemClass_1=ruleSubSystemClass();
+ _fsp--;
+
+
+ current = this_SubSystemClass_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleActorContainerClass
+
+
+ // $ANTLR start entryRuleTypedID
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:371:1: entryRuleTypedID returns [EObject current=null] : iv_ruleTypedID= ruleTypedID EOF ;
+ public final EObject entryRuleTypedID() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTypedID = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:372:2: (iv_ruleTypedID= ruleTypedID EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:373:2: iv_ruleTypedID= ruleTypedID EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTypedIDRule(), currentNode);
+ pushFollow(FOLLOW_ruleTypedID_in_entryRuleTypedID591);
+ iv_ruleTypedID=ruleTypedID();
+ _fsp--;
+
+ current =iv_ruleTypedID;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTypedID601);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTypedID
+
+
+ // $ANTLR start ruleTypedID
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:380:1: ruleTypedID returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleType ) ) ) ;
+ public final EObject ruleTypedID() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_0_0=null;
+ EObject lv_type_2_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:385:6: ( ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleType ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:386:1: ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleType ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:386:1: ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleType ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:386:2: ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleType ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:386:2: ( (lv_name_0_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:387:1: (lv_name_0_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:387:1: (lv_name_0_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:388:3: lv_name_0_0= RULE_ID
+ {
+ lv_name_0_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTypedID643);
+
+ createLeafNode(grammarAccess.getTypedIDAccess().getNameIDTerminalRuleCall_0_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_0_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleTypedID658);
+
+ createLeafNode(grammarAccess.getTypedIDAccess().getColonKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:414:1: ( (lv_type_2_0= ruleType ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:415:1: (lv_type_2_0= ruleType )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:415:1: (lv_type_2_0= ruleType )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:416:3: lv_type_2_0= ruleType
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTypedIDAccess().getTypeTypeParserRuleCall_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleType_in_ruleTypedID679);
+ lv_type_2_0=ruleType();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "type",
+ lv_type_2_0,
+ "Type",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTypedID
+
+
+ // $ANTLR start entryRuleFreeTypedID
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:446:1: entryRuleFreeTypedID returns [EObject current=null] : iv_ruleFreeTypedID= ruleFreeTypedID EOF ;
+ public final EObject entryRuleFreeTypedID() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleFreeTypedID = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:447:2: (iv_ruleFreeTypedID= ruleFreeTypedID EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:448:2: iv_ruleFreeTypedID= ruleFreeTypedID EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getFreeTypedIDRule(), currentNode);
+ pushFollow(FOLLOW_ruleFreeTypedID_in_entryRuleFreeTypedID715);
+ iv_ruleFreeTypedID=ruleFreeTypedID();
+ _fsp--;
+
+ current =iv_ruleFreeTypedID;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFreeTypedID725);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleFreeTypedID
+
+
+ // $ANTLR start ruleFreeTypedID
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:455:1: ruleFreeTypedID returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleFreeType ) ) ) ;
+ public final EObject ruleFreeTypedID() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_0_0=null;
+ EObject lv_type_2_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:460:6: ( ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleFreeType ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:461:1: ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleFreeType ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:461:1: ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleFreeType ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:461:2: ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleFreeType ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:461:2: ( (lv_name_0_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:462:1: (lv_name_0_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:462:1: (lv_name_0_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:463:3: lv_name_0_0= RULE_ID
+ {
+ lv_name_0_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFreeTypedID767);
+
+ createLeafNode(grammarAccess.getFreeTypedIDAccess().getNameIDTerminalRuleCall_0_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getFreeTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_0_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleFreeTypedID782);
+
+ createLeafNode(grammarAccess.getFreeTypedIDAccess().getColonKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:489:1: ( (lv_type_2_0= ruleFreeType ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:490:1: (lv_type_2_0= ruleFreeType )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:490:1: (lv_type_2_0= ruleFreeType )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:491:3: lv_type_2_0= ruleFreeType
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getFreeTypedIDAccess().getTypeFreeTypeParserRuleCall_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFreeType_in_ruleFreeTypedID803);
+ lv_type_2_0=ruleFreeType();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getFreeTypedIDRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "type",
+ lv_type_2_0,
+ "FreeType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleFreeTypedID
+
+
+ // $ANTLR start entryRuleType
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:521:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
+ public final EObject entryRuleType() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleType = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:522:2: (iv_ruleType= ruleType EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:523:2: iv_ruleType= ruleType EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTypeRule(), currentNode);
+ pushFollow(FOLLOW_ruleType_in_entryRuleType839);
+ iv_ruleType=ruleType();
+ _fsp--;
+
+ current =iv_ruleType;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleType849);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleType
+
+
+ // $ANTLR start ruleType
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:530:1: ruleType returns [EObject current=null] : ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( ( ruleFQN ) ) ) ;
+ public final EObject ruleType() throws RecognitionException {
+ EObject current = null;
+
+ Enumerator lv_prim_0_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:535:6: ( ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( ( ruleFQN ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:536:1: ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( ( ruleFQN ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:536:1: ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( ( ruleFQN ) ) )
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( ((LA5_0>=88 && LA5_0<=99)) ) {
+ alt5=1;
+ }
+ else if ( (LA5_0==RULE_ID) ) {
+ alt5=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("536:1: ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( ( ruleFQN ) ) )", 5, 0, input);
+
+ throw nvae;
+ }
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:536:2: ( (lv_prim_0_0= rulePrimitiveType ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:536:2: ( (lv_prim_0_0= rulePrimitiveType ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:537:1: (lv_prim_0_0= rulePrimitiveType )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:537:1: (lv_prim_0_0= rulePrimitiveType )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:538:3: lv_prim_0_0= rulePrimitiveType
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0(), currentNode);
+
+ pushFollow(FOLLOW_rulePrimitiveType_in_ruleType895);
+ lv_prim_0_0=rulePrimitiveType();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "prim",
+ lv_prim_0_0,
+ "PrimitiveType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:561:6: ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:561:6: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:562:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:562:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:563:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getTypeAccess().getTypeDataClassCrossReference_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleType924);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleType
+
+
+ // $ANTLR start entryRuleFreeType
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:585:1: entryRuleFreeType returns [EObject current=null] : iv_ruleFreeType= ruleFreeType EOF ;
+ public final EObject entryRuleFreeType() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleFreeType = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:586:2: (iv_ruleFreeType= ruleFreeType EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:587:2: iv_ruleFreeType= ruleFreeType EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getFreeTypeRule(), currentNode);
+ pushFollow(FOLLOW_ruleFreeType_in_entryRuleFreeType960);
+ iv_ruleFreeType=ruleFreeType();
+ _fsp--;
+
+ current =iv_ruleFreeType;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFreeType970);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleFreeType
+
+
+ // $ANTLR start ruleFreeType
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:594:1: ruleFreeType returns [EObject current=null] : ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( (lv_type_1_0= RULE_ID ) ) ) ;
+ public final EObject ruleFreeType() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_type_1_0=null;
+ Enumerator lv_prim_0_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:599:6: ( ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( (lv_type_1_0= RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:600:1: ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( (lv_type_1_0= RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:600:1: ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( (lv_type_1_0= RULE_ID ) ) )
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( ((LA6_0>=88 && LA6_0<=99)) ) {
+ alt6=1;
+ }
+ else if ( (LA6_0==RULE_ID) ) {
+ alt6=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("600:1: ( ( (lv_prim_0_0= rulePrimitiveType ) ) | ( (lv_type_1_0= RULE_ID ) ) )", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:600:2: ( (lv_prim_0_0= rulePrimitiveType ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:600:2: ( (lv_prim_0_0= rulePrimitiveType ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:601:1: (lv_prim_0_0= rulePrimitiveType )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:601:1: (lv_prim_0_0= rulePrimitiveType )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:602:3: lv_prim_0_0= rulePrimitiveType
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getFreeTypeAccess().getPrimPrimitiveTypeEnumRuleCall_0_0(), currentNode);
+
+ pushFollow(FOLLOW_rulePrimitiveType_in_ruleFreeType1016);
+ lv_prim_0_0=rulePrimitiveType();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getFreeTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "prim",
+ lv_prim_0_0,
+ "PrimitiveType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:625:6: ( (lv_type_1_0= RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:625:6: ( (lv_type_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:626:1: (lv_type_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:626:1: (lv_type_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:627:3: lv_type_1_0= RULE_ID
+ {
+ lv_type_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFreeType1039);
+
+ createLeafNode(grammarAccess.getFreeTypeAccess().getTypeIDTerminalRuleCall_1_0(), "type");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getFreeTypeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "type",
+ lv_type_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleFreeType
+
+
+ // $ANTLR start entryRuleDataClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:657:1: entryRuleDataClass returns [EObject current=null] : iv_ruleDataClass= ruleDataClass EOF ;
+ public final EObject entryRuleDataClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDataClass = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:658:2: (iv_ruleDataClass= ruleDataClass EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:659:2: iv_ruleDataClass= ruleDataClass EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getDataClassRule(), currentNode);
+ pushFollow(FOLLOW_ruleDataClass_in_entryRuleDataClass1080);
+ iv_ruleDataClass=ruleDataClass();
+ _fsp--;
+
+ current =iv_ruleDataClass;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDataClass1090);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleDataClass
+
+
+ // $ANTLR start ruleDataClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:666:1: ruleDataClass returns [EObject current=null] : ( 'DataClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( (lv_imports_5_0= ruleImport ) )* ( (lv_attributes_6_0= ruleAttribute ) )+ ( (lv_operations_7_0= ruleOperation ) )* '}' ) ;
+ public final EObject ruleDataClass() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_imports_5_0 = null;
+
+ EObject lv_attributes_6_0 = null;
+
+ EObject lv_operations_7_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:671:6: ( ( 'DataClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( (lv_imports_5_0= ruleImport ) )* ( (lv_attributes_6_0= ruleAttribute ) )+ ( (lv_operations_7_0= ruleOperation ) )* '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:672:1: ( 'DataClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( (lv_imports_5_0= ruleImport ) )* ( (lv_attributes_6_0= ruleAttribute ) )+ ( (lv_operations_7_0= ruleOperation ) )* '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:672:1: ( 'DataClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( (lv_imports_5_0= ruleImport ) )* ( (lv_attributes_6_0= ruleAttribute ) )+ ( (lv_operations_7_0= ruleOperation ) )* '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:672:3: 'DataClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( (lv_imports_5_0= ruleImport ) )* ( (lv_attributes_6_0= ruleAttribute ) )+ ( (lv_operations_7_0= ruleOperation ) )* '}'
+ {
+ match(input,15,FOLLOW_15_in_ruleDataClass1125);
+
+ createLeafNode(grammarAccess.getDataClassAccess().getDataClassKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:676:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:677:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:677:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:678:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDataClass1142);
+
+ createLeafNode(grammarAccess.getDataClassAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:700:2: ( 'extends' ( ( ruleFQN ) ) )?
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0==16) ) {
+ alt7=1;
+ }
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:700:4: 'extends' ( ( ruleFQN ) )
+ {
+ match(input,16,FOLLOW_16_in_ruleDataClass1158);
+
+ createLeafNode(grammarAccess.getDataClassAccess().getExtendsKeyword_2_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:704:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:705:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:705:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:706:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getBaseDataClassCrossReference_2_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleDataClass1181);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleDataClass1193);
+
+ createLeafNode(grammarAccess.getDataClassAccess().getLeftCurlyBracketKeyword_3(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:724:1: ( (lv_imports_5_0= ruleImport ) )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0==86) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:725:1: (lv_imports_5_0= ruleImport )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:725:1: (lv_imports_5_0= ruleImport )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:726:3: lv_imports_5_0= ruleImport
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getImportsImportParserRuleCall_4_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleImport_in_ruleDataClass1214);
+ lv_imports_5_0=ruleImport();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "imports",
+ lv_imports_5_0,
+ "Import",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:748:3: ( (lv_attributes_6_0= ruleAttribute ) )+
+ int cnt9=0;
+ loop9:
+ do {
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==17) ) {
+ alt9=1;
+ }
+
+
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:749:1: (lv_attributes_6_0= ruleAttribute )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:749:1: (lv_attributes_6_0= ruleAttribute )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:750:3: lv_attributes_6_0= ruleAttribute
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getAttributesAttributeParserRuleCall_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleAttribute_in_ruleDataClass1236);
+ lv_attributes_6_0=ruleAttribute();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "attributes",
+ lv_attributes_6_0,
+ "Attribute",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt9 >= 1 ) break loop9;
+ EarlyExitException eee =
+ new EarlyExitException(9, input);
+ throw eee;
+ }
+ cnt9++;
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:772:3: ( (lv_operations_7_0= ruleOperation ) )*
+ loop10:
+ do {
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0==20) ) {
+ alt10=1;
+ }
+
+
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:773:1: (lv_operations_7_0= ruleOperation )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:773:1: (lv_operations_7_0= ruleOperation )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:774:3: lv_operations_7_0= ruleOperation
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getDataClassAccess().getOperationsOperationParserRuleCall_6_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleOperation_in_ruleDataClass1258);
+ lv_operations_7_0=ruleOperation();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getDataClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "operations",
+ lv_operations_7_0,
+ "Operation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop10;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleDataClass1269);
+
+ createLeafNode(grammarAccess.getDataClassAccess().getRightCurlyBracketKeyword_7(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleDataClass
+
+
+ // $ANTLR start entryRuleAttribute
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:808:1: entryRuleAttribute returns [EObject current=null] : iv_ruleAttribute= ruleAttribute EOF ;
+ public final EObject entryRuleAttribute() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleAttribute = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:809:2: (iv_ruleAttribute= ruleAttribute EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:810:2: iv_ruleAttribute= ruleAttribute EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getAttributeRule(), currentNode);
+ pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute1305);
+ iv_ruleAttribute=ruleAttribute();
+ _fsp--;
+
+ current =iv_ruleAttribute;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute1315);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleAttribute
+
+
+ // $ANTLR start ruleAttribute
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:817:1: ruleAttribute returns [EObject current=null] : ( 'Attribute' ( (lv_name_1_0= RULE_ID ) ) ( '[' ( (lv_size_3_0= RULE_INT ) ) ']' )? ':' ( (lv_type_6_0= ruleType ) ) ) ;
+ public final EObject ruleAttribute() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ Token lv_size_3_0=null;
+ EObject lv_type_6_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:822:6: ( ( 'Attribute' ( (lv_name_1_0= RULE_ID ) ) ( '[' ( (lv_size_3_0= RULE_INT ) ) ']' )? ':' ( (lv_type_6_0= ruleType ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:823:1: ( 'Attribute' ( (lv_name_1_0= RULE_ID ) ) ( '[' ( (lv_size_3_0= RULE_INT ) ) ']' )? ':' ( (lv_type_6_0= ruleType ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:823:1: ( 'Attribute' ( (lv_name_1_0= RULE_ID ) ) ( '[' ( (lv_size_3_0= RULE_INT ) ) ']' )? ':' ( (lv_type_6_0= ruleType ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:823:3: 'Attribute' ( (lv_name_1_0= RULE_ID ) ) ( '[' ( (lv_size_3_0= RULE_INT ) ) ']' )? ':' ( (lv_type_6_0= ruleType ) )
+ {
+ match(input,17,FOLLOW_17_in_ruleAttribute1350);
+
+ createLeafNode(grammarAccess.getAttributeAccess().getAttributeKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:827:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:828:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:828:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:829:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAttribute1367);
+
+ createLeafNode(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getAttributeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:851:2: ( '[' ( (lv_size_3_0= RULE_INT ) ) ']' )?
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0==18) ) {
+ alt11=1;
+ }
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:851:4: '[' ( (lv_size_3_0= RULE_INT ) ) ']'
+ {
+ match(input,18,FOLLOW_18_in_ruleAttribute1383);
+
+ createLeafNode(grammarAccess.getAttributeAccess().getLeftSquareBracketKeyword_2_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:855:1: ( (lv_size_3_0= RULE_INT ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:856:1: (lv_size_3_0= RULE_INT )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:856:1: (lv_size_3_0= RULE_INT )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:857:3: lv_size_3_0= RULE_INT
+ {
+ lv_size_3_0=(Token)input.LT(1);
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleAttribute1400);
+
+ createLeafNode(grammarAccess.getAttributeAccess().getSizeINTTerminalRuleCall_2_1_0(), "size");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getAttributeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "size",
+ lv_size_3_0,
+ "INT",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,19,FOLLOW_19_in_ruleAttribute1415);
+
+ createLeafNode(grammarAccess.getAttributeAccess().getRightSquareBracketKeyword_2_2(), null);
+
+
+ }
+ break;
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleAttribute1427);
+
+ createLeafNode(grammarAccess.getAttributeAccess().getColonKeyword_3(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:887:1: ( (lv_type_6_0= ruleType ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:888:1: (lv_type_6_0= ruleType )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:888:1: (lv_type_6_0= ruleType )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:889:3: lv_type_6_0= ruleType
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getAttributeAccess().getTypeTypeParserRuleCall_4_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleType_in_ruleAttribute1448);
+ lv_type_6_0=ruleType();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getAttributeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "type",
+ lv_type_6_0,
+ "Type",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleAttribute
+
+
+ // $ANTLR start entryRuleOperation
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:919:1: entryRuleOperation returns [EObject current=null] : iv_ruleOperation= ruleOperation EOF ;
+ public final EObject entryRuleOperation() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleOperation = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:920:2: (iv_ruleOperation= ruleOperation EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:921:2: iv_ruleOperation= ruleOperation EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getOperationRule(), currentNode);
+ pushFollow(FOLLOW_ruleOperation_in_entryRuleOperation1484);
+ iv_ruleOperation=ruleOperation();
+ _fsp--;
+
+ current =iv_ruleOperation;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleOperation1494);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleOperation
+
+
+ // $ANTLR start ruleOperation
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:928:1: ruleOperation returns [EObject current=null] : ( 'Operation' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleFreeTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )* )? ')' ( ':' ( (lv_returntype_8_0= ruleFreeType ) ) )? ( (lv_detailCode_9_0= ruleDetailCode ) ) ) ;
+ public final EObject ruleOperation() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_arguments_3_0 = null;
+
+ EObject lv_arguments_5_0 = null;
+
+ EObject lv_returntype_8_0 = null;
+
+ EObject lv_detailCode_9_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:933:6: ( ( 'Operation' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleFreeTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )* )? ')' ( ':' ( (lv_returntype_8_0= ruleFreeType ) ) )? ( (lv_detailCode_9_0= ruleDetailCode ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:934:1: ( 'Operation' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleFreeTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )* )? ')' ( ':' ( (lv_returntype_8_0= ruleFreeType ) ) )? ( (lv_detailCode_9_0= ruleDetailCode ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:934:1: ( 'Operation' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleFreeTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )* )? ')' ( ':' ( (lv_returntype_8_0= ruleFreeType ) ) )? ( (lv_detailCode_9_0= ruleDetailCode ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:934:3: 'Operation' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleFreeTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )* )? ')' ( ':' ( (lv_returntype_8_0= ruleFreeType ) ) )? ( (lv_detailCode_9_0= ruleDetailCode ) )
+ {
+ match(input,20,FOLLOW_20_in_ruleOperation1529);
+
+ createLeafNode(grammarAccess.getOperationAccess().getOperationKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:938:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:939:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:939:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:940:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOperation1546);
+
+ createLeafNode(grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,21,FOLLOW_21_in_ruleOperation1561);
+
+ createLeafNode(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:966:1: ( ( (lv_arguments_3_0= ruleFreeTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )* )?
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0==RULE_ID) ) {
+ alt13=1;
+ }
+ switch (alt13) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:966:2: ( (lv_arguments_3_0= ruleFreeTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )*
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:966:2: ( (lv_arguments_3_0= ruleFreeTypedID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:967:1: (lv_arguments_3_0= ruleFreeTypedID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:967:1: (lv_arguments_3_0= ruleFreeTypedID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:968:3: lv_arguments_3_0= ruleFreeTypedID
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_0_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFreeTypedID_in_ruleOperation1583);
+ lv_arguments_3_0=ruleFreeTypedID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "arguments",
+ lv_arguments_3_0,
+ "FreeTypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:990:2: ( ',' ( (lv_arguments_5_0= ruleFreeTypedID ) ) )*
+ loop12:
+ do {
+ int alt12=2;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0==22) ) {
+ alt12=1;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:990:4: ',' ( (lv_arguments_5_0= ruleFreeTypedID ) )
+ {
+ match(input,22,FOLLOW_22_in_ruleOperation1594);
+
+ createLeafNode(grammarAccess.getOperationAccess().getCommaKeyword_3_1_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:994:1: ( (lv_arguments_5_0= ruleFreeTypedID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:995:1: (lv_arguments_5_0= ruleFreeTypedID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:995:1: (lv_arguments_5_0= ruleFreeTypedID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:996:3: lv_arguments_5_0= ruleFreeTypedID
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getArgumentsFreeTypedIDParserRuleCall_3_1_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFreeTypedID_in_ruleOperation1615);
+ lv_arguments_5_0=ruleFreeTypedID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "arguments",
+ lv_arguments_5_0,
+ "FreeTypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop12;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+ match(input,23,FOLLOW_23_in_ruleOperation1629);
+
+ createLeafNode(grammarAccess.getOperationAccess().getRightParenthesisKeyword_4(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1022:1: ( ':' ( (lv_returntype_8_0= ruleFreeType ) ) )?
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0==14) ) {
+ alt14=1;
+ }
+ switch (alt14) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1022:3: ':' ( (lv_returntype_8_0= ruleFreeType ) )
+ {
+ match(input,14,FOLLOW_14_in_ruleOperation1640);
+
+ createLeafNode(grammarAccess.getOperationAccess().getColonKeyword_5_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1026:1: ( (lv_returntype_8_0= ruleFreeType ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1027:1: (lv_returntype_8_0= ruleFreeType )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1027:1: (lv_returntype_8_0= ruleFreeType )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1028:3: lv_returntype_8_0= ruleFreeType
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getReturntypeFreeTypeParserRuleCall_5_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFreeType_in_ruleOperation1661);
+ lv_returntype_8_0=ruleFreeType();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "returntype",
+ lv_returntype_8_0,
+ "FreeType",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1050:4: ( (lv_detailCode_9_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1051:1: (lv_detailCode_9_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1051:1: (lv_detailCode_9_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1052:3: lv_detailCode_9_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getOperationAccess().getDetailCodeDetailCodeParserRuleCall_6_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleOperation1684);
+ lv_detailCode_9_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getOperationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "detailCode",
+ lv_detailCode_9_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleOperation
+
+
+ // $ANTLR start entryRuleProtocolClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1082:1: entryRuleProtocolClass returns [EObject current=null] : iv_ruleProtocolClass= ruleProtocolClass EOF ;
+ public final EObject entryRuleProtocolClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleProtocolClass = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1083:2: (iv_ruleProtocolClass= ruleProtocolClass EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1084:2: iv_ruleProtocolClass= ruleProtocolClass EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getProtocolClassRule(), currentNode);
+ pushFollow(FOLLOW_ruleProtocolClass_in_entryRuleProtocolClass1720);
+ iv_ruleProtocolClass=ruleProtocolClass();
+ _fsp--;
+
+ current =iv_ruleProtocolClass;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleProtocolClass1730);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleProtocolClass
+
+
+ // $ANTLR start ruleProtocolClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1091:1: ruleProtocolClass returns [EObject current=null] : ( 'ProtocolClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'usercode1' ( (lv_userCode1_6_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_8_0= ruleDetailCode ) ) )? 'incoming' '{' ( (lv_incomingMessages_11_0= ruleMessage ) )* '}' 'outgoing' '{' ( (lv_outgoingMessages_15_0= ruleMessage ) )* '}' ( 'regular' 'PortClass' ( (lv_regular_19_0= rulePortClass ) ) )? ( 'conjugate' 'PortClass' ( (lv_conjugate_22_0= rulePortClass ) ) )? ( (lv_semantics_23_0= ruleProtocolSemantics ) )? '}' ) ;
+ public final EObject ruleProtocolClass() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_userCode1_6_0 = null;
+
+ EObject lv_userCode2_8_0 = null;
+
+ EObject lv_incomingMessages_11_0 = null;
+
+ EObject lv_outgoingMessages_15_0 = null;
+
+ EObject lv_regular_19_0 = null;
+
+ EObject lv_conjugate_22_0 = null;
+
+ EObject lv_semantics_23_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1096:6: ( ( 'ProtocolClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'usercode1' ( (lv_userCode1_6_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_8_0= ruleDetailCode ) ) )? 'incoming' '{' ( (lv_incomingMessages_11_0= ruleMessage ) )* '}' 'outgoing' '{' ( (lv_outgoingMessages_15_0= ruleMessage ) )* '}' ( 'regular' 'PortClass' ( (lv_regular_19_0= rulePortClass ) ) )? ( 'conjugate' 'PortClass' ( (lv_conjugate_22_0= rulePortClass ) ) )? ( (lv_semantics_23_0= ruleProtocolSemantics ) )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1097:1: ( 'ProtocolClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'usercode1' ( (lv_userCode1_6_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_8_0= ruleDetailCode ) ) )? 'incoming' '{' ( (lv_incomingMessages_11_0= ruleMessage ) )* '}' 'outgoing' '{' ( (lv_outgoingMessages_15_0= ruleMessage ) )* '}' ( 'regular' 'PortClass' ( (lv_regular_19_0= rulePortClass ) ) )? ( 'conjugate' 'PortClass' ( (lv_conjugate_22_0= rulePortClass ) ) )? ( (lv_semantics_23_0= ruleProtocolSemantics ) )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1097:1: ( 'ProtocolClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'usercode1' ( (lv_userCode1_6_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_8_0= ruleDetailCode ) ) )? 'incoming' '{' ( (lv_incomingMessages_11_0= ruleMessage ) )* '}' 'outgoing' '{' ( (lv_outgoingMessages_15_0= ruleMessage ) )* '}' ( 'regular' 'PortClass' ( (lv_regular_19_0= rulePortClass ) ) )? ( 'conjugate' 'PortClass' ( (lv_conjugate_22_0= rulePortClass ) ) )? ( (lv_semantics_23_0= ruleProtocolSemantics ) )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1097:3: 'ProtocolClass' ( (lv_name_1_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'usercode1' ( (lv_userCode1_6_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_8_0= ruleDetailCode ) ) )? 'incoming' '{' ( (lv_incomingMessages_11_0= ruleMessage ) )* '}' 'outgoing' '{' ( (lv_outgoingMessages_15_0= ruleMessage ) )* '}' ( 'regular' 'PortClass' ( (lv_regular_19_0= rulePortClass ) ) )? ( 'conjugate' 'PortClass' ( (lv_conjugate_22_0= rulePortClass ) ) )? ( (lv_semantics_23_0= ruleProtocolSemantics ) )? '}'
+ {
+ match(input,24,FOLLOW_24_in_ruleProtocolClass1765);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getProtocolClassKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1101:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1102:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1102:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1103:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleProtocolClass1782);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1125:2: ( 'extends' ( ( ruleFQN ) ) )?
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0==16) ) {
+ alt15=1;
+ }
+ switch (alt15) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1125:4: 'extends' ( ( ruleFQN ) )
+ {
+ match(input,16,FOLLOW_16_in_ruleProtocolClass1798);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getExtendsKeyword_2_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1129:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1130:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1130:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1131:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getBaseProtocolClassCrossReference_2_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleProtocolClass1821);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleProtocolClass1833);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_3(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1149:1: ( 'usercode1' ( (lv_userCode1_6_0= ruleDetailCode ) ) )?
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0==25) ) {
+ alt16=1;
+ }
+ switch (alt16) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1149:3: 'usercode1' ( (lv_userCode1_6_0= ruleDetailCode ) )
+ {
+ match(input,25,FOLLOW_25_in_ruleProtocolClass1844);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getUsercode1Keyword_4_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1153:1: ( (lv_userCode1_6_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1154:1: (lv_userCode1_6_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1154:1: (lv_userCode1_6_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1155:3: lv_userCode1_6_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getUserCode1DetailCodeParserRuleCall_4_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleProtocolClass1865);
+ lv_userCode1_6_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "userCode1",
+ lv_userCode1_6_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1177:4: ( 'usercode2' ( (lv_userCode2_8_0= ruleDetailCode ) ) )?
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0==26) ) {
+ alt17=1;
+ }
+ switch (alt17) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1177:6: 'usercode2' ( (lv_userCode2_8_0= ruleDetailCode ) )
+ {
+ match(input,26,FOLLOW_26_in_ruleProtocolClass1878);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getUsercode2Keyword_5_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1181:1: ( (lv_userCode2_8_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1182:1: (lv_userCode2_8_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1182:1: (lv_userCode2_8_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1183:3: lv_userCode2_8_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getUserCode2DetailCodeParserRuleCall_5_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleProtocolClass1899);
+ lv_userCode2_8_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "userCode2",
+ lv_userCode2_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,27,FOLLOW_27_in_ruleProtocolClass1911);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getIncomingKeyword_6(), null);
+
+ match(input,12,FOLLOW_12_in_ruleProtocolClass1921);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_7(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1213:1: ( (lv_incomingMessages_11_0= ruleMessage ) )*
+ loop18:
+ do {
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( (LA18_0==32) ) {
+ alt18=1;
+ }
+
+
+ switch (alt18) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1214:1: (lv_incomingMessages_11_0= ruleMessage )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1214:1: (lv_incomingMessages_11_0= ruleMessage )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1215:3: lv_incomingMessages_11_0= ruleMessage
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getIncomingMessagesMessageParserRuleCall_8_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleMessage_in_ruleProtocolClass1942);
+ lv_incomingMessages_11_0=ruleMessage();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "incomingMessages",
+ lv_incomingMessages_11_0,
+ "Message",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop18;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleProtocolClass1953);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_9(), null);
+
+ match(input,28,FOLLOW_28_in_ruleProtocolClass1963);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getOutgoingKeyword_10(), null);
+
+ match(input,12,FOLLOW_12_in_ruleProtocolClass1973);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getLeftCurlyBracketKeyword_11(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1249:1: ( (lv_outgoingMessages_15_0= ruleMessage ) )*
+ loop19:
+ do {
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( (LA19_0==32) ) {
+ alt19=1;
+ }
+
+
+ switch (alt19) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1250:1: (lv_outgoingMessages_15_0= ruleMessage )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1250:1: (lv_outgoingMessages_15_0= ruleMessage )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1251:3: lv_outgoingMessages_15_0= ruleMessage
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getOutgoingMessagesMessageParserRuleCall_12_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleMessage_in_ruleProtocolClass1994);
+ lv_outgoingMessages_15_0=ruleMessage();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "outgoingMessages",
+ lv_outgoingMessages_15_0,
+ "Message",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop19;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleProtocolClass2005);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_13(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1277:1: ( 'regular' 'PortClass' ( (lv_regular_19_0= rulePortClass ) ) )?
+ int alt20=2;
+ int LA20_0 = input.LA(1);
+
+ if ( (LA20_0==29) ) {
+ alt20=1;
+ }
+ switch (alt20) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1277:3: 'regular' 'PortClass' ( (lv_regular_19_0= rulePortClass ) )
+ {
+ match(input,29,FOLLOW_29_in_ruleProtocolClass2016);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRegularKeyword_14_0(), null);
+
+ match(input,30,FOLLOW_30_in_ruleProtocolClass2026);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getPortClassKeyword_14_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1285:1: ( (lv_regular_19_0= rulePortClass ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1286:1: (lv_regular_19_0= rulePortClass )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1286:1: (lv_regular_19_0= rulePortClass )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1287:3: lv_regular_19_0= rulePortClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getRegularPortClassParserRuleCall_14_2_0(), currentNode);
+
+ pushFollow(FOLLOW_rulePortClass_in_ruleProtocolClass2047);
+ lv_regular_19_0=rulePortClass();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "regular",
+ lv_regular_19_0,
+ "PortClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1309:4: ( 'conjugate' 'PortClass' ( (lv_conjugate_22_0= rulePortClass ) ) )?
+ int alt21=2;
+ int LA21_0 = input.LA(1);
+
+ if ( (LA21_0==31) ) {
+ alt21=1;
+ }
+ switch (alt21) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1309:6: 'conjugate' 'PortClass' ( (lv_conjugate_22_0= rulePortClass ) )
+ {
+ match(input,31,FOLLOW_31_in_ruleProtocolClass2060);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getConjugateKeyword_15_0(), null);
+
+ match(input,30,FOLLOW_30_in_ruleProtocolClass2070);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getPortClassKeyword_15_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1317:1: ( (lv_conjugate_22_0= rulePortClass ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1318:1: (lv_conjugate_22_0= rulePortClass )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1318:1: (lv_conjugate_22_0= rulePortClass )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1319:3: lv_conjugate_22_0= rulePortClass
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getConjugatePortClassParserRuleCall_15_2_0(), currentNode);
+
+ pushFollow(FOLLOW_rulePortClass_in_ruleProtocolClass2091);
+ lv_conjugate_22_0=rulePortClass();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "conjugate",
+ lv_conjugate_22_0,
+ "PortClass",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1341:4: ( (lv_semantics_23_0= ruleProtocolSemantics ) )?
+ int alt22=2;
+ int LA22_0 = input.LA(1);
+
+ if ( (LA22_0==35) ) {
+ alt22=1;
+ }
+ switch (alt22) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1342:1: (lv_semantics_23_0= ruleProtocolSemantics )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1342:1: (lv_semantics_23_0= ruleProtocolSemantics )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1343:3: lv_semantics_23_0= ruleProtocolSemantics
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolClassAccess().getSemanticsProtocolSemanticsParserRuleCall_16_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleProtocolSemantics_in_ruleProtocolClass2114);
+ lv_semantics_23_0=ruleProtocolSemantics();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "semantics",
+ lv_semantics_23_0,
+ "ProtocolSemantics",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleProtocolClass2125);
+
+ createLeafNode(grammarAccess.getProtocolClassAccess().getRightCurlyBracketKeyword_17(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleProtocolClass
+
+
+ // $ANTLR start entryRuleMessage
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1377:1: entryRuleMessage returns [EObject current=null] : iv_ruleMessage= ruleMessage EOF ;
+ public final EObject entryRuleMessage() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleMessage = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1378:2: (iv_ruleMessage= ruleMessage EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1379:2: iv_ruleMessage= ruleMessage EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getMessageRule(), currentNode);
+ pushFollow(FOLLOW_ruleMessage_in_entryRuleMessage2161);
+ iv_ruleMessage=ruleMessage();
+ _fsp--;
+
+ current =iv_ruleMessage;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMessage2171);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleMessage
+
+
+ // $ANTLR start ruleMessage
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1386:1: ruleMessage returns [EObject current=null] : ( 'Message' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )* )? ')' ) ;
+ public final EObject ruleMessage() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_arguments_3_0 = null;
+
+ EObject lv_arguments_5_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1391:6: ( ( 'Message' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )* )? ')' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1392:1: ( 'Message' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )* )? ')' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1392:1: ( 'Message' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )* )? ')' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1392:3: 'Message' ( (lv_name_1_0= RULE_ID ) ) '(' ( ( (lv_arguments_3_0= ruleTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )* )? ')'
+ {
+ match(input,32,FOLLOW_32_in_ruleMessage2206);
+
+ createLeafNode(grammarAccess.getMessageAccess().getMessageKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1396:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1397:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1397:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1398:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMessage2223);
+
+ createLeafNode(grammarAccess.getMessageAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getMessageRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,21,FOLLOW_21_in_ruleMessage2238);
+
+ createLeafNode(grammarAccess.getMessageAccess().getLeftParenthesisKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1424:1: ( ( (lv_arguments_3_0= ruleTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )* )?
+ int alt24=2;
+ int LA24_0 = input.LA(1);
+
+ if ( (LA24_0==RULE_ID) ) {
+ alt24=1;
+ }
+ switch (alt24) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1424:2: ( (lv_arguments_3_0= ruleTypedID ) ) ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )*
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1424:2: ( (lv_arguments_3_0= ruleTypedID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1425:1: (lv_arguments_3_0= ruleTypedID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1425:1: (lv_arguments_3_0= ruleTypedID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1426:3: lv_arguments_3_0= ruleTypedID
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_0_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTypedID_in_ruleMessage2260);
+ lv_arguments_3_0=ruleTypedID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getMessageRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "arguments",
+ lv_arguments_3_0,
+ "TypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1448:2: ( ',' ( (lv_arguments_5_0= ruleTypedID ) ) )*
+ loop23:
+ do {
+ int alt23=2;
+ int LA23_0 = input.LA(1);
+
+ if ( (LA23_0==22) ) {
+ alt23=1;
+ }
+
+
+ switch (alt23) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1448:4: ',' ( (lv_arguments_5_0= ruleTypedID ) )
+ {
+ match(input,22,FOLLOW_22_in_ruleMessage2271);
+
+ createLeafNode(grammarAccess.getMessageAccess().getCommaKeyword_3_1_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1452:1: ( (lv_arguments_5_0= ruleTypedID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1453:1: (lv_arguments_5_0= ruleTypedID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1453:1: (lv_arguments_5_0= ruleTypedID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1454:3: lv_arguments_5_0= ruleTypedID
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getMessageAccess().getArgumentsTypedIDParserRuleCall_3_1_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTypedID_in_ruleMessage2292);
+ lv_arguments_5_0=ruleTypedID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getMessageRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "arguments",
+ lv_arguments_5_0,
+ "TypedID",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop23;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+ match(input,23,FOLLOW_23_in_ruleMessage2306);
+
+ createLeafNode(grammarAccess.getMessageAccess().getRightParenthesisKeyword_4(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleMessage
+
+
+ // $ANTLR start entryRulePortClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1488:1: entryRulePortClass returns [EObject current=null] : iv_rulePortClass= rulePortClass EOF ;
+ public final EObject entryRulePortClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_rulePortClass = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1489:2: (iv_rulePortClass= rulePortClass EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1490:2: iv_rulePortClass= rulePortClass EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getPortClassRule(), currentNode);
+ pushFollow(FOLLOW_rulePortClass_in_entryRulePortClass2342);
+ iv_rulePortClass=rulePortClass();
+ _fsp--;
+
+ current =iv_rulePortClass;
+ match(input,EOF,FOLLOW_EOF_in_entryRulePortClass2352);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRulePortClass
+
+
+ // $ANTLR start rulePortClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1497:1: rulePortClass returns [EObject current=null] : ( '{' ( 'usercode' ( (lv_userCode_2_0= ruleDetailCode ) ) )? ( ( (lv_attributes_3_0= ruleAttribute ) ) | ( (lv_operations_4_0= ruleOperation ) ) | ( (lv_msgHandlers_5_0= ruleMessageHandler ) ) )+ '}' ) ;
+ public final EObject rulePortClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_userCode_2_0 = null;
+
+ EObject lv_attributes_3_0 = null;
+
+ EObject lv_operations_4_0 = null;
+
+ EObject lv_msgHandlers_5_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1502:6: ( ( '{' ( 'usercode' ( (lv_userCode_2_0= ruleDetailCode ) ) )? ( ( (lv_attributes_3_0= ruleAttribute ) ) | ( (lv_operations_4_0= ruleOperation ) ) | ( (lv_msgHandlers_5_0= ruleMessageHandler ) ) )+ '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1503:1: ( '{' ( 'usercode' ( (lv_userCode_2_0= ruleDetailCode ) ) )? ( ( (lv_attributes_3_0= ruleAttribute ) ) | ( (lv_operations_4_0= ruleOperation ) ) | ( (lv_msgHandlers_5_0= ruleMessageHandler ) ) )+ '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1503:1: ( '{' ( 'usercode' ( (lv_userCode_2_0= ruleDetailCode ) ) )? ( ( (lv_attributes_3_0= ruleAttribute ) ) | ( (lv_operations_4_0= ruleOperation ) ) | ( (lv_msgHandlers_5_0= ruleMessageHandler ) ) )+ '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1503:3: '{' ( 'usercode' ( (lv_userCode_2_0= ruleDetailCode ) ) )? ( ( (lv_attributes_3_0= ruleAttribute ) ) | ( (lv_operations_4_0= ruleOperation ) ) | ( (lv_msgHandlers_5_0= ruleMessageHandler ) ) )+ '}'
+ {
+ match(input,12,FOLLOW_12_in_rulePortClass2387);
+
+ createLeafNode(grammarAccess.getPortClassAccess().getLeftCurlyBracketKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1507:1: ( 'usercode' ( (lv_userCode_2_0= ruleDetailCode ) ) )?
+ int alt25=2;
+ int LA25_0 = input.LA(1);
+
+ if ( (LA25_0==33) ) {
+ alt25=1;
+ }
+ switch (alt25) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1507:3: 'usercode' ( (lv_userCode_2_0= ruleDetailCode ) )
+ {
+ match(input,33,FOLLOW_33_in_rulePortClass2398);
+
+ createLeafNode(grammarAccess.getPortClassAccess().getUsercodeKeyword_1_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1511:1: ( (lv_userCode_2_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1512:1: (lv_userCode_2_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1512:1: (lv_userCode_2_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1513:3: lv_userCode_2_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getUserCodeDetailCodeParserRuleCall_1_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_rulePortClass2419);
+ lv_userCode_2_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "userCode",
+ lv_userCode_2_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1535:4: ( ( (lv_attributes_3_0= ruleAttribute ) ) | ( (lv_operations_4_0= ruleOperation ) ) | ( (lv_msgHandlers_5_0= ruleMessageHandler ) ) )+
+ int cnt26=0;
+ loop26:
+ do {
+ int alt26=4;
+ switch ( input.LA(1) ) {
+ case 17:
+ {
+ alt26=1;
+ }
+ break;
+ case 20:
+ {
+ alt26=2;
+ }
+ break;
+ case 34:
+ {
+ alt26=3;
+ }
+ break;
+
+ }
+
+ switch (alt26) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1535:5: ( (lv_attributes_3_0= ruleAttribute ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1535:5: ( (lv_attributes_3_0= ruleAttribute ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1536:1: (lv_attributes_3_0= ruleAttribute )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1536:1: (lv_attributes_3_0= ruleAttribute )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1537:3: lv_attributes_3_0= ruleAttribute
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getAttributesAttributeParserRuleCall_2_0_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleAttribute_in_rulePortClass2443);
+ lv_attributes_3_0=ruleAttribute();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "attributes",
+ lv_attributes_3_0,
+ "Attribute",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1560:6: ( (lv_operations_4_0= ruleOperation ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1560:6: ( (lv_operations_4_0= ruleOperation ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1561:1: (lv_operations_4_0= ruleOperation )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1561:1: (lv_operations_4_0= ruleOperation )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1562:3: lv_operations_4_0= ruleOperation
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getOperationsOperationParserRuleCall_2_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleOperation_in_rulePortClass2470);
+ lv_operations_4_0=ruleOperation();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "operations",
+ lv_operations_4_0,
+ "Operation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1585:6: ( (lv_msgHandlers_5_0= ruleMessageHandler ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1585:6: ( (lv_msgHandlers_5_0= ruleMessageHandler ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1586:1: (lv_msgHandlers_5_0= ruleMessageHandler )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1586:1: (lv_msgHandlers_5_0= ruleMessageHandler )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1587:3: lv_msgHandlers_5_0= ruleMessageHandler
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getPortClassAccess().getMsgHandlersMessageHandlerParserRuleCall_2_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleMessageHandler_in_rulePortClass2497);
+ lv_msgHandlers_5_0=ruleMessageHandler();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "msgHandlers",
+ lv_msgHandlers_5_0,
+ "MessageHandler",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt26 >= 1 ) break loop26;
+ EarlyExitException eee =
+ new EarlyExitException(26, input);
+ throw eee;
+ }
+ cnt26++;
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_rulePortClass2509);
+
+ createLeafNode(grammarAccess.getPortClassAccess().getRightCurlyBracketKeyword_3(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end rulePortClass
+
+
+ // $ANTLR start entryRuleMessageHandler
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1621:1: entryRuleMessageHandler returns [EObject current=null] : iv_ruleMessageHandler= ruleMessageHandler EOF ;
+ public final EObject entryRuleMessageHandler() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleMessageHandler = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1622:2: (iv_ruleMessageHandler= ruleMessageHandler EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1623:2: iv_ruleMessageHandler= ruleMessageHandler EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getMessageHandlerRule(), currentNode);
+ pushFollow(FOLLOW_ruleMessageHandler_in_entryRuleMessageHandler2545);
+ iv_ruleMessageHandler=ruleMessageHandler();
+ _fsp--;
+
+ current =iv_ruleMessageHandler;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMessageHandler2555);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleMessageHandler
+
+
+ // $ANTLR start ruleMessageHandler
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1630:1: ruleMessageHandler returns [EObject current=null] : ( 'handle' ( ( RULE_ID ) ) ( (lv_detailCode_2_0= ruleDetailCode ) ) ) ;
+ public final EObject ruleMessageHandler() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_detailCode_2_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1635:6: ( ( 'handle' ( ( RULE_ID ) ) ( (lv_detailCode_2_0= ruleDetailCode ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1636:1: ( 'handle' ( ( RULE_ID ) ) ( (lv_detailCode_2_0= ruleDetailCode ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1636:1: ( 'handle' ( ( RULE_ID ) ) ( (lv_detailCode_2_0= ruleDetailCode ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1636:3: 'handle' ( ( RULE_ID ) ) ( (lv_detailCode_2_0= ruleDetailCode ) )
+ {
+ match(input,34,FOLLOW_34_in_ruleMessageHandler2590);
+
+ createLeafNode(grammarAccess.getMessageHandlerAccess().getHandleKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1640:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1641:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1641:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1642:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getMessageHandlerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMessageHandler2608);
+
+ createLeafNode(grammarAccess.getMessageHandlerAccess().getMsgMessageCrossReference_1_0(), "msg");
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1654:2: ( (lv_detailCode_2_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1655:1: (lv_detailCode_2_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1655:1: (lv_detailCode_2_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1656:3: lv_detailCode_2_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getMessageHandlerAccess().getDetailCodeDetailCodeParserRuleCall_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleMessageHandler2629);
+ lv_detailCode_2_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getMessageHandlerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "detailCode",
+ lv_detailCode_2_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleMessageHandler
+
+
+ // $ANTLR start entryRuleProtocolSemantics
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1686:1: entryRuleProtocolSemantics returns [EObject current=null] : iv_ruleProtocolSemantics= ruleProtocolSemantics EOF ;
+ public final EObject entryRuleProtocolSemantics() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleProtocolSemantics = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1687:2: (iv_ruleProtocolSemantics= ruleProtocolSemantics EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1688:2: iv_ruleProtocolSemantics= ruleProtocolSemantics EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getProtocolSemanticsRule(), currentNode);
+ pushFollow(FOLLOW_ruleProtocolSemantics_in_entryRuleProtocolSemantics2665);
+ iv_ruleProtocolSemantics=ruleProtocolSemantics();
+ _fsp--;
+
+ current =iv_ruleProtocolSemantics;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleProtocolSemantics2675);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleProtocolSemantics
+
+
+ // $ANTLR start ruleProtocolSemantics
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1695:1: ruleProtocolSemantics returns [EObject current=null] : ( 'semantics' '{' ( (lv_rules_2_0= ruleSemanticsRule ) )+ '}' ) ;
+ public final EObject ruleProtocolSemantics() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_rules_2_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1700:6: ( ( 'semantics' '{' ( (lv_rules_2_0= ruleSemanticsRule ) )+ '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1701:1: ( 'semantics' '{' ( (lv_rules_2_0= ruleSemanticsRule ) )+ '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1701:1: ( 'semantics' '{' ( (lv_rules_2_0= ruleSemanticsRule ) )+ '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1701:3: 'semantics' '{' ( (lv_rules_2_0= ruleSemanticsRule ) )+ '}'
+ {
+ match(input,35,FOLLOW_35_in_ruleProtocolSemantics2710);
+
+ createLeafNode(grammarAccess.getProtocolSemanticsAccess().getSemanticsKeyword_0(), null);
+
+ match(input,12,FOLLOW_12_in_ruleProtocolSemantics2720);
+
+ createLeafNode(grammarAccess.getProtocolSemanticsAccess().getLeftCurlyBracketKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1709:1: ( (lv_rules_2_0= ruleSemanticsRule ) )+
+ int cnt27=0;
+ loop27:
+ do {
+ int alt27=2;
+ int LA27_0 = input.LA(1);
+
+ if ( (LA27_0==36||LA27_0==38) ) {
+ alt27=1;
+ }
+
+
+ switch (alt27) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1710:1: (lv_rules_2_0= ruleSemanticsRule )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1710:1: (lv_rules_2_0= ruleSemanticsRule )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1711:3: lv_rules_2_0= ruleSemanticsRule
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getProtocolSemanticsAccess().getRulesSemanticsRuleParserRuleCall_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSemanticsRule_in_ruleProtocolSemantics2741);
+ lv_rules_2_0=ruleSemanticsRule();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getProtocolSemanticsRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "rules",
+ lv_rules_2_0,
+ "SemanticsRule",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt27 >= 1 ) break loop27;
+ EarlyExitException eee =
+ new EarlyExitException(27, input);
+ throw eee;
+ }
+ cnt27++;
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleProtocolSemantics2752);
+
+ createLeafNode(grammarAccess.getProtocolSemanticsAccess().getRightCurlyBracketKeyword_3(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleProtocolSemantics
+
+
+ // $ANTLR start entryRuleSemanticsRule
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1745:1: entryRuleSemanticsRule returns [EObject current=null] : iv_ruleSemanticsRule= ruleSemanticsRule EOF ;
+ public final EObject entryRuleSemanticsRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSemanticsRule = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1746:2: (iv_ruleSemanticsRule= ruleSemanticsRule EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1747:2: iv_ruleSemanticsRule= ruleSemanticsRule EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSemanticsRuleRule(), currentNode);
+ pushFollow(FOLLOW_ruleSemanticsRule_in_entryRuleSemanticsRule2788);
+ iv_ruleSemanticsRule=ruleSemanticsRule();
+ _fsp--;
+
+ current =iv_ruleSemanticsRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSemanticsRule2798);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSemanticsRule
+
+
+ // $ANTLR start ruleSemanticsRule
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1754:1: ruleSemanticsRule returns [EObject current=null] : (this_SemanticsInRule_0= ruleSemanticsInRule | this_SemanticsOutRule_1= ruleSemanticsOutRule ) ;
+ public final EObject ruleSemanticsRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_SemanticsInRule_0 = null;
+
+ EObject this_SemanticsOutRule_1 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1759:6: ( (this_SemanticsInRule_0= ruleSemanticsInRule | this_SemanticsOutRule_1= ruleSemanticsOutRule ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1760:1: (this_SemanticsInRule_0= ruleSemanticsInRule | this_SemanticsOutRule_1= ruleSemanticsOutRule )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1760:1: (this_SemanticsInRule_0= ruleSemanticsInRule | this_SemanticsOutRule_1= ruleSemanticsOutRule )
+ int alt28=2;
+ int LA28_0 = input.LA(1);
+
+ if ( (LA28_0==36) ) {
+ alt28=1;
+ }
+ else if ( (LA28_0==38) ) {
+ alt28=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1760:1: (this_SemanticsInRule_0= ruleSemanticsInRule | this_SemanticsOutRule_1= ruleSemanticsOutRule )", 28, 0, input);
+
+ throw nvae;
+ }
+ switch (alt28) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1761:5: this_SemanticsInRule_0= ruleSemanticsInRule
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSemanticsRuleAccess().getSemanticsInRuleParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSemanticsInRule_in_ruleSemanticsRule2845);
+ this_SemanticsInRule_0=ruleSemanticsInRule();
+ _fsp--;
+
+
+ current = this_SemanticsInRule_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1771:5: this_SemanticsOutRule_1= ruleSemanticsOutRule
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSemanticsRuleAccess().getSemanticsOutRuleParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleSemanticsOutRule_in_ruleSemanticsRule2872);
+ this_SemanticsOutRule_1=ruleSemanticsOutRule();
+ _fsp--;
+
+
+ current = this_SemanticsOutRule_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSemanticsRule
+
+
+ // $ANTLR start entryRuleSemanticsInRule
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1787:1: entryRuleSemanticsInRule returns [EObject current=null] : iv_ruleSemanticsInRule= ruleSemanticsInRule EOF ;
+ public final EObject entryRuleSemanticsInRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSemanticsInRule = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1788:2: (iv_ruleSemanticsInRule= ruleSemanticsInRule EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1789:2: iv_ruleSemanticsInRule= ruleSemanticsInRule EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSemanticsInRuleRule(), currentNode);
+ pushFollow(FOLLOW_ruleSemanticsInRule_in_entryRuleSemanticsInRule2907);
+ iv_ruleSemanticsInRule=ruleSemanticsInRule();
+ _fsp--;
+
+ current =iv_ruleSemanticsInRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSemanticsInRule2917);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSemanticsInRule
+
+
+ // $ANTLR start ruleSemanticsInRule
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1796:1: ruleSemanticsInRule returns [EObject current=null] : ( 'in' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' ) ;
+ public final EObject ruleSemanticsInRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_followUps_4_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1801:6: ( ( 'in' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1802:1: ( 'in' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1802:1: ( 'in' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1802:3: 'in' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}'
+ {
+ match(input,36,FOLLOW_36_in_ruleSemanticsInRule2952);
+
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getInKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1806:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1807:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1807:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1808:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSemanticsInRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSemanticsInRule2970);
+
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getMsgMessageCrossReference_1_0(), "msg");
+
+
+ }
+
+
+ }
+
+ match(input,37,FOLLOW_37_in_ruleSemanticsInRule2980);
+
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getHyphenMinusGreaterThanSignKeyword_2(), null);
+
+ match(input,12,FOLLOW_12_in_ruleSemanticsInRule2990);
+
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getLeftCurlyBracketKeyword_3(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1828:1: ( (lv_followUps_4_0= ruleSemanticsRule ) )*
+ loop29:
+ do {
+ int alt29=2;
+ int LA29_0 = input.LA(1);
+
+ if ( (LA29_0==36||LA29_0==38) ) {
+ alt29=1;
+ }
+
+
+ switch (alt29) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1829:1: (lv_followUps_4_0= ruleSemanticsRule )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1829:1: (lv_followUps_4_0= ruleSemanticsRule )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1830:3: lv_followUps_4_0= ruleSemanticsRule
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSemanticsInRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSemanticsRule_in_ruleSemanticsInRule3011);
+ lv_followUps_4_0=ruleSemanticsRule();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSemanticsInRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "followUps",
+ lv_followUps_4_0,
+ "SemanticsRule",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop29;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleSemanticsInRule3022);
+
+ createLeafNode(grammarAccess.getSemanticsInRuleAccess().getRightCurlyBracketKeyword_5(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSemanticsInRule
+
+
+ // $ANTLR start entryRuleSemanticsOutRule
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1864:1: entryRuleSemanticsOutRule returns [EObject current=null] : iv_ruleSemanticsOutRule= ruleSemanticsOutRule EOF ;
+ public final EObject entryRuleSemanticsOutRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSemanticsOutRule = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1865:2: (iv_ruleSemanticsOutRule= ruleSemanticsOutRule EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1866:2: iv_ruleSemanticsOutRule= ruleSemanticsOutRule EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSemanticsOutRuleRule(), currentNode);
+ pushFollow(FOLLOW_ruleSemanticsOutRule_in_entryRuleSemanticsOutRule3058);
+ iv_ruleSemanticsOutRule=ruleSemanticsOutRule();
+ _fsp--;
+
+ current =iv_ruleSemanticsOutRule;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSemanticsOutRule3068);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSemanticsOutRule
+
+
+ // $ANTLR start ruleSemanticsOutRule
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1873:1: ruleSemanticsOutRule returns [EObject current=null] : ( 'out' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' ) ;
+ public final EObject ruleSemanticsOutRule() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_followUps_4_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1878:6: ( ( 'out' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1879:1: ( 'out' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1879:1: ( 'out' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1879:3: 'out' ( ( RULE_ID ) ) '->' '{' ( (lv_followUps_4_0= ruleSemanticsRule ) )* '}'
+ {
+ match(input,38,FOLLOW_38_in_ruleSemanticsOutRule3103);
+
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getOutKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1883:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1884:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1884:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1885:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSemanticsOutRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSemanticsOutRule3121);
+
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getMsgMessageCrossReference_1_0(), "msg");
+
+
+ }
+
+
+ }
+
+ match(input,37,FOLLOW_37_in_ruleSemanticsOutRule3131);
+
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getHyphenMinusGreaterThanSignKeyword_2(), null);
+
+ match(input,12,FOLLOW_12_in_ruleSemanticsOutRule3141);
+
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getLeftCurlyBracketKeyword_3(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1905:1: ( (lv_followUps_4_0= ruleSemanticsRule ) )*
+ loop30:
+ do {
+ int alt30=2;
+ int LA30_0 = input.LA(1);
+
+ if ( (LA30_0==36||LA30_0==38) ) {
+ alt30=1;
+ }
+
+
+ switch (alt30) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1906:1: (lv_followUps_4_0= ruleSemanticsRule )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1906:1: (lv_followUps_4_0= ruleSemanticsRule )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1907:3: lv_followUps_4_0= ruleSemanticsRule
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSemanticsOutRuleAccess().getFollowUpsSemanticsRuleParserRuleCall_4_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSemanticsRule_in_ruleSemanticsOutRule3162);
+ lv_followUps_4_0=ruleSemanticsRule();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSemanticsOutRuleRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "followUps",
+ lv_followUps_4_0,
+ "SemanticsRule",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop30;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleSemanticsOutRule3173);
+
+ createLeafNode(grammarAccess.getSemanticsOutRuleAccess().getRightCurlyBracketKeyword_5(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSemanticsOutRule
+
+
+ // $ANTLR start entryRuleActorClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1941:1: entryRuleActorClass returns [EObject current=null] : iv_ruleActorClass= ruleActorClass EOF ;
+ public final EObject entryRuleActorClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleActorClass = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1942:2: (iv_ruleActorClass= ruleActorClass EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1943:2: iv_ruleActorClass= ruleActorClass EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getActorClassRule(), currentNode);
+ pushFollow(FOLLOW_ruleActorClass_in_entryRuleActorClass3209);
+ iv_ruleActorClass=ruleActorClass();
+ _fsp--;
+
+ current =iv_ruleActorClass;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorClass3219);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleActorClass
+
+
+ // $ANTLR start ruleActorClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1950:1: ruleActorClass returns [EObject current=null] : ( ( (lv_abstract_0_0= 'abstract' ) )? 'ActorClass' ( (lv_name_2_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'Interface' '{' ( (lv_ifPorts_8_0= rulePort ) )* ( (lv_ifSPPs_9_0= ruleSPPRef ) )* '}' )? ( 'Structure' '{' ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )? ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )* ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )* ( (lv_strSAPs_20_0= ruleSAPRef ) )* ( (lv_attributes_21_0= ruleAttribute ) )* ( (lv_actorRefs_22_0= ruleActorRef ) )* ( (lv_bindings_23_0= ruleBinding ) )* ( (lv_connections_24_0= ruleLayerConnection ) )* '}' )? ( 'Behavior' '{' ( (lv_operations_28_0= ruleOperation ) )* ( (lv_stateMachine_29_0= ruleStateMachine ) )? '}' )? '}' ) ;
+ public final EObject ruleActorClass() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_abstract_0_0=null;
+ Token lv_name_2_0=null;
+ EObject lv_ifPorts_8_0 = null;
+
+ EObject lv_ifSPPs_9_0 = null;
+
+ EObject lv_userCode1_14_0 = null;
+
+ EObject lv_userCode2_16_0 = null;
+
+ EObject lv_intPorts_17_0 = null;
+
+ EObject lv_extPorts_18_0 = null;
+
+ EObject lv_serviceImplementations_19_0 = null;
+
+ EObject lv_strSAPs_20_0 = null;
+
+ EObject lv_attributes_21_0 = null;
+
+ EObject lv_actorRefs_22_0 = null;
+
+ EObject lv_bindings_23_0 = null;
+
+ EObject lv_connections_24_0 = null;
+
+ EObject lv_operations_28_0 = null;
+
+ EObject lv_stateMachine_29_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1955:6: ( ( ( (lv_abstract_0_0= 'abstract' ) )? 'ActorClass' ( (lv_name_2_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'Interface' '{' ( (lv_ifPorts_8_0= rulePort ) )* ( (lv_ifSPPs_9_0= ruleSPPRef ) )* '}' )? ( 'Structure' '{' ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )? ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )* ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )* ( (lv_strSAPs_20_0= ruleSAPRef ) )* ( (lv_attributes_21_0= ruleAttribute ) )* ( (lv_actorRefs_22_0= ruleActorRef ) )* ( (lv_bindings_23_0= ruleBinding ) )* ( (lv_connections_24_0= ruleLayerConnection ) )* '}' )? ( 'Behavior' '{' ( (lv_operations_28_0= ruleOperation ) )* ( (lv_stateMachine_29_0= ruleStateMachine ) )? '}' )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1956:1: ( ( (lv_abstract_0_0= 'abstract' ) )? 'ActorClass' ( (lv_name_2_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'Interface' '{' ( (lv_ifPorts_8_0= rulePort ) )* ( (lv_ifSPPs_9_0= ruleSPPRef ) )* '}' )? ( 'Structure' '{' ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )? ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )* ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )* ( (lv_strSAPs_20_0= ruleSAPRef ) )* ( (lv_attributes_21_0= ruleAttribute ) )* ( (lv_actorRefs_22_0= ruleActorRef ) )* ( (lv_bindings_23_0= ruleBinding ) )* ( (lv_connections_24_0= ruleLayerConnection ) )* '}' )? ( 'Behavior' '{' ( (lv_operations_28_0= ruleOperation ) )* ( (lv_stateMachine_29_0= ruleStateMachine ) )? '}' )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1956:1: ( ( (lv_abstract_0_0= 'abstract' ) )? 'ActorClass' ( (lv_name_2_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'Interface' '{' ( (lv_ifPorts_8_0= rulePort ) )* ( (lv_ifSPPs_9_0= ruleSPPRef ) )* '}' )? ( 'Structure' '{' ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )? ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )* ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )* ( (lv_strSAPs_20_0= ruleSAPRef ) )* ( (lv_attributes_21_0= ruleAttribute ) )* ( (lv_actorRefs_22_0= ruleActorRef ) )* ( (lv_bindings_23_0= ruleBinding ) )* ( (lv_connections_24_0= ruleLayerConnection ) )* '}' )? ( 'Behavior' '{' ( (lv_operations_28_0= ruleOperation ) )* ( (lv_stateMachine_29_0= ruleStateMachine ) )? '}' )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1956:2: ( (lv_abstract_0_0= 'abstract' ) )? 'ActorClass' ( (lv_name_2_0= RULE_ID ) ) ( 'extends' ( ( ruleFQN ) ) )? '{' ( 'Interface' '{' ( (lv_ifPorts_8_0= rulePort ) )* ( (lv_ifSPPs_9_0= ruleSPPRef ) )* '}' )? ( 'Structure' '{' ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )? ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )* ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )* ( (lv_strSAPs_20_0= ruleSAPRef ) )* ( (lv_attributes_21_0= ruleAttribute ) )* ( (lv_actorRefs_22_0= ruleActorRef ) )* ( (lv_bindings_23_0= ruleBinding ) )* ( (lv_connections_24_0= ruleLayerConnection ) )* '}' )? ( 'Behavior' '{' ( (lv_operations_28_0= ruleOperation ) )* ( (lv_stateMachine_29_0= ruleStateMachine ) )? '}' )? '}'
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1956:2: ( (lv_abstract_0_0= 'abstract' ) )?
+ int alt31=2;
+ int LA31_0 = input.LA(1);
+
+ if ( (LA31_0==39) ) {
+ alt31=1;
+ }
+ switch (alt31) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1957:1: (lv_abstract_0_0= 'abstract' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1957:1: (lv_abstract_0_0= 'abstract' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1958:3: lv_abstract_0_0= 'abstract'
+ {
+ lv_abstract_0_0=(Token)input.LT(1);
+ match(input,39,FOLLOW_39_in_ruleActorClass3262);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getAbstractAbstractKeyword_0_0(), "abstract");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ set(current, "abstract", true, "abstract", lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,40,FOLLOW_40_in_ruleActorClass3286);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getActorClassKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1981:1: ( (lv_name_2_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1982:1: (lv_name_2_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1982:1: (lv_name_2_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:1983:3: lv_name_2_0= RULE_ID
+ {
+ lv_name_2_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActorClass3303);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getNameIDTerminalRuleCall_2_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2005:2: ( 'extends' ( ( ruleFQN ) ) )?
+ int alt32=2;
+ int LA32_0 = input.LA(1);
+
+ if ( (LA32_0==16) ) {
+ alt32=1;
+ }
+ switch (alt32) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2005:4: 'extends' ( ( ruleFQN ) )
+ {
+ match(input,16,FOLLOW_16_in_ruleActorClass3319);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getExtendsKeyword_3_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2009:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2010:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2010:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2011:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getBaseActorClassCrossReference_3_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleActorClass3342);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleActorClass3354);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_4(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2029:1: ( 'Interface' '{' ( (lv_ifPorts_8_0= rulePort ) )* ( (lv_ifSPPs_9_0= ruleSPPRef ) )* '}' )?
+ int alt35=2;
+ int LA35_0 = input.LA(1);
+
+ if ( (LA35_0==41) ) {
+ alt35=1;
+ }
+ switch (alt35) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2029:3: 'Interface' '{' ( (lv_ifPorts_8_0= rulePort ) )* ( (lv_ifSPPs_9_0= ruleSPPRef ) )* '}'
+ {
+ match(input,41,FOLLOW_41_in_ruleActorClass3365);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getInterfaceKeyword_5_0(), null);
+
+ match(input,12,FOLLOW_12_in_ruleActorClass3375);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_5_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2037:1: ( (lv_ifPorts_8_0= rulePort ) )*
+ loop33:
+ do {
+ int alt33=2;
+ int LA33_0 = input.LA(1);
+
+ if ( ((LA33_0>=44 && LA33_0<=45)) ) {
+ alt33=1;
+ }
+
+
+ switch (alt33) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2038:1: (lv_ifPorts_8_0= rulePort )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2038:1: (lv_ifPorts_8_0= rulePort )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2039:3: lv_ifPorts_8_0= rulePort
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getIfPortsPortParserRuleCall_5_2_0(), currentNode);
+
+ pushFollow(FOLLOW_rulePort_in_ruleActorClass3396);
+ lv_ifPorts_8_0=rulePort();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "ifPorts",
+ lv_ifPorts_8_0,
+ "Port",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop33;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2061:3: ( (lv_ifSPPs_9_0= ruleSPPRef ) )*
+ loop34:
+ do {
+ int alt34=2;
+ int LA34_0 = input.LA(1);
+
+ if ( (LA34_0==48) ) {
+ alt34=1;
+ }
+
+
+ switch (alt34) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2062:1: (lv_ifSPPs_9_0= ruleSPPRef )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2062:1: (lv_ifSPPs_9_0= ruleSPPRef )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2063:3: lv_ifSPPs_9_0= ruleSPPRef
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getIfSPPsSPPRefParserRuleCall_5_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSPPRef_in_ruleActorClass3418);
+ lv_ifSPPs_9_0=ruleSPPRef();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "ifSPPs",
+ lv_ifSPPs_9_0,
+ "SPPRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop34;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleActorClass3429);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_5_4(), null);
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2089:3: ( 'Structure' '{' ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )? ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )* ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )* ( (lv_strSAPs_20_0= ruleSAPRef ) )* ( (lv_attributes_21_0= ruleAttribute ) )* ( (lv_actorRefs_22_0= ruleActorRef ) )* ( (lv_bindings_23_0= ruleBinding ) )* ( (lv_connections_24_0= ruleLayerConnection ) )* '}' )?
+ int alt45=2;
+ int LA45_0 = input.LA(1);
+
+ if ( (LA45_0==42) ) {
+ alt45=1;
+ }
+ switch (alt45) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2089:5: 'Structure' '{' ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )? ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )? ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )* ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )* ( (lv_strSAPs_20_0= ruleSAPRef ) )* ( (lv_attributes_21_0= ruleAttribute ) )* ( (lv_actorRefs_22_0= ruleActorRef ) )* ( (lv_bindings_23_0= ruleBinding ) )* ( (lv_connections_24_0= ruleLayerConnection ) )* '}'
+ {
+ match(input,42,FOLLOW_42_in_ruleActorClass3442);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getStructureKeyword_6_0(), null);
+
+ match(input,12,FOLLOW_12_in_ruleActorClass3452);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_6_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2097:1: ( 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) ) )?
+ int alt36=2;
+ int LA36_0 = input.LA(1);
+
+ if ( (LA36_0==25) ) {
+ alt36=1;
+ }
+ switch (alt36) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2097:3: 'usercode1' ( (lv_userCode1_14_0= ruleDetailCode ) )
+ {
+ match(input,25,FOLLOW_25_in_ruleActorClass3463);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getUsercode1Keyword_6_2_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2101:1: ( (lv_userCode1_14_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2102:1: (lv_userCode1_14_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2102:1: (lv_userCode1_14_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2103:3: lv_userCode1_14_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getUserCode1DetailCodeParserRuleCall_6_2_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleActorClass3484);
+ lv_userCode1_14_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "userCode1",
+ lv_userCode1_14_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2125:4: ( 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) ) )?
+ int alt37=2;
+ int LA37_0 = input.LA(1);
+
+ if ( (LA37_0==26) ) {
+ alt37=1;
+ }
+ switch (alt37) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2125:6: 'usercode2' ( (lv_userCode2_16_0= ruleDetailCode ) )
+ {
+ match(input,26,FOLLOW_26_in_ruleActorClass3497);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getUsercode2Keyword_6_3_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2129:1: ( (lv_userCode2_16_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2130:1: (lv_userCode2_16_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2130:1: (lv_userCode2_16_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2131:3: lv_userCode2_16_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getUserCode2DetailCodeParserRuleCall_6_3_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleActorClass3518);
+ lv_userCode2_16_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "userCode2",
+ lv_userCode2_16_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2153:4: ( ( (lv_intPorts_17_0= rulePort ) ) | ( (lv_extPorts_18_0= ruleExternalPort ) ) )*
+ loop38:
+ do {
+ int alt38=3;
+ int LA38_0 = input.LA(1);
+
+ if ( ((LA38_0>=44 && LA38_0<=45)) ) {
+ alt38=1;
+ }
+ else if ( (LA38_0==46) ) {
+ alt38=2;
+ }
+
+
+ switch (alt38) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2153:5: ( (lv_intPorts_17_0= rulePort ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2153:5: ( (lv_intPorts_17_0= rulePort ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2154:1: (lv_intPorts_17_0= rulePort )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2154:1: (lv_intPorts_17_0= rulePort )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2155:3: lv_intPorts_17_0= rulePort
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getIntPortsPortParserRuleCall_6_4_0_0(), currentNode);
+
+ pushFollow(FOLLOW_rulePort_in_ruleActorClass3542);
+ lv_intPorts_17_0=rulePort();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "intPorts",
+ lv_intPorts_17_0,
+ "Port",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2178:6: ( (lv_extPorts_18_0= ruleExternalPort ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2178:6: ( (lv_extPorts_18_0= ruleExternalPort ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2179:1: (lv_extPorts_18_0= ruleExternalPort )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2179:1: (lv_extPorts_18_0= ruleExternalPort )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2180:3: lv_extPorts_18_0= ruleExternalPort
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getExtPortsExternalPortParserRuleCall_6_4_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleExternalPort_in_ruleActorClass3569);
+ lv_extPorts_18_0=ruleExternalPort();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "extPorts",
+ lv_extPorts_18_0,
+ "ExternalPort",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop38;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2202:4: ( (lv_serviceImplementations_19_0= ruleServiceImplementation ) )*
+ loop39:
+ do {
+ int alt39=2;
+ int LA39_0 = input.LA(1);
+
+ if ( (LA39_0==49) ) {
+ alt39=1;
+ }
+
+
+ switch (alt39) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2203:1: (lv_serviceImplementations_19_0= ruleServiceImplementation )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2203:1: (lv_serviceImplementations_19_0= ruleServiceImplementation )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2204:3: lv_serviceImplementations_19_0= ruleServiceImplementation
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getServiceImplementationsServiceImplementationParserRuleCall_6_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleServiceImplementation_in_ruleActorClass3592);
+ lv_serviceImplementations_19_0=ruleServiceImplementation();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "serviceImplementations",
+ lv_serviceImplementations_19_0,
+ "ServiceImplementation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop39;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2226:3: ( (lv_strSAPs_20_0= ruleSAPRef ) )*
+ loop40:
+ do {
+ int alt40=2;
+ int LA40_0 = input.LA(1);
+
+ if ( (LA40_0==47) ) {
+ alt40=1;
+ }
+
+
+ switch (alt40) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2227:1: (lv_strSAPs_20_0= ruleSAPRef )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2227:1: (lv_strSAPs_20_0= ruleSAPRef )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2228:3: lv_strSAPs_20_0= ruleSAPRef
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getStrSAPsSAPRefParserRuleCall_6_6_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSAPRef_in_ruleActorClass3614);
+ lv_strSAPs_20_0=ruleSAPRef();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "strSAPs",
+ lv_strSAPs_20_0,
+ "SAPRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop40;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2250:3: ( (lv_attributes_21_0= ruleAttribute ) )*
+ loop41:
+ do {
+ int alt41=2;
+ int LA41_0 = input.LA(1);
+
+ if ( (LA41_0==17) ) {
+ alt41=1;
+ }
+
+
+ switch (alt41) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2251:1: (lv_attributes_21_0= ruleAttribute )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2251:1: (lv_attributes_21_0= ruleAttribute )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2252:3: lv_attributes_21_0= ruleAttribute
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getAttributesAttributeParserRuleCall_6_7_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleAttribute_in_ruleActorClass3636);
+ lv_attributes_21_0=ruleAttribute();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "attributes",
+ lv_attributes_21_0,
+ "Attribute",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop41;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2274:3: ( (lv_actorRefs_22_0= ruleActorRef ) )*
+ loop42:
+ do {
+ int alt42=2;
+ int LA42_0 = input.LA(1);
+
+ if ( (LA42_0==62) ) {
+ alt42=1;
+ }
+
+
+ switch (alt42) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2275:1: (lv_actorRefs_22_0= ruleActorRef )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2275:1: (lv_actorRefs_22_0= ruleActorRef )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2276:3: lv_actorRefs_22_0= ruleActorRef
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getActorRefsActorRefParserRuleCall_6_8_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleActorRef_in_ruleActorClass3658);
+ lv_actorRefs_22_0=ruleActorRef();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "actorRefs",
+ lv_actorRefs_22_0,
+ "ActorRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop42;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2298:3: ( (lv_bindings_23_0= ruleBinding ) )*
+ loop43:
+ do {
+ int alt43=2;
+ int LA43_0 = input.LA(1);
+
+ if ( (LA43_0==56) ) {
+ alt43=1;
+ }
+
+
+ switch (alt43) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2299:1: (lv_bindings_23_0= ruleBinding )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2299:1: (lv_bindings_23_0= ruleBinding )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2300:3: lv_bindings_23_0= ruleBinding
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getBindingsBindingParserRuleCall_6_9_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleBinding_in_ruleActorClass3680);
+ lv_bindings_23_0=ruleBinding();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "bindings",
+ lv_bindings_23_0,
+ "Binding",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop43;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2322:3: ( (lv_connections_24_0= ruleLayerConnection ) )*
+ loop44:
+ do {
+ int alt44=2;
+ int LA44_0 = input.LA(1);
+
+ if ( (LA44_0==58) ) {
+ alt44=1;
+ }
+
+
+ switch (alt44) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2323:1: (lv_connections_24_0= ruleLayerConnection )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2323:1: (lv_connections_24_0= ruleLayerConnection )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2324:3: lv_connections_24_0= ruleLayerConnection
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getConnectionsLayerConnectionParserRuleCall_6_10_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleLayerConnection_in_ruleActorClass3702);
+ lv_connections_24_0=ruleLayerConnection();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "connections",
+ lv_connections_24_0,
+ "LayerConnection",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop44;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleActorClass3713);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_6_11(), null);
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2350:3: ( 'Behavior' '{' ( (lv_operations_28_0= ruleOperation ) )* ( (lv_stateMachine_29_0= ruleStateMachine ) )? '}' )?
+ int alt48=2;
+ int LA48_0 = input.LA(1);
+
+ if ( (LA48_0==43) ) {
+ alt48=1;
+ }
+ switch (alt48) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2350:5: 'Behavior' '{' ( (lv_operations_28_0= ruleOperation ) )* ( (lv_stateMachine_29_0= ruleStateMachine ) )? '}'
+ {
+ match(input,43,FOLLOW_43_in_ruleActorClass3726);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getBehaviorKeyword_7_0(), null);
+
+ match(input,12,FOLLOW_12_in_ruleActorClass3736);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getLeftCurlyBracketKeyword_7_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2358:1: ( (lv_operations_28_0= ruleOperation ) )*
+ loop46:
+ do {
+ int alt46=2;
+ int LA46_0 = input.LA(1);
+
+ if ( (LA46_0==20) ) {
+ alt46=1;
+ }
+
+
+ switch (alt46) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2359:1: (lv_operations_28_0= ruleOperation )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2359:1: (lv_operations_28_0= ruleOperation )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2360:3: lv_operations_28_0= ruleOperation
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getOperationsOperationParserRuleCall_7_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleOperation_in_ruleActorClass3757);
+ lv_operations_28_0=ruleOperation();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "operations",
+ lv_operations_28_0,
+ "Operation",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop46;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2382:3: ( (lv_stateMachine_29_0= ruleStateMachine ) )?
+ int alt47=2;
+ int LA47_0 = input.LA(1);
+
+ if ( (LA47_0==63) ) {
+ alt47=1;
+ }
+ switch (alt47) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2383:1: (lv_stateMachine_29_0= ruleStateMachine )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2383:1: (lv_stateMachine_29_0= ruleStateMachine )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2384:3: lv_stateMachine_29_0= ruleStateMachine
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getActorClassAccess().getStateMachineStateMachineParserRuleCall_7_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleStateMachine_in_ruleActorClass3779);
+ lv_stateMachine_29_0=ruleStateMachine();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "stateMachine",
+ lv_stateMachine_29_0,
+ "StateMachine",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleActorClass3790);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_7_4(), null);
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleActorClass3802);
+
+ createLeafNode(grammarAccess.getActorClassAccess().getRightCurlyBracketKeyword_8(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleActorClass
+
+
+ // $ANTLR start entryRulePort
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2424:1: entryRulePort returns [EObject current=null] : iv_rulePort= rulePort EOF ;
+ public final EObject entryRulePort() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_rulePort = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2425:2: (iv_rulePort= rulePort EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2426:2: iv_rulePort= rulePort EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getPortRule(), currentNode);
+ pushFollow(FOLLOW_rulePort_in_entryRulePort3840);
+ iv_rulePort=rulePort();
+ _fsp--;
+
+ current =iv_rulePort;
+ match(input,EOF,FOLLOW_EOF_in_entryRulePort3850);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRulePort
+
+
+ // $ANTLR start rulePort
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2433:1: rulePort returns [EObject current=null] : ( ( (lv_conjugated_0_0= 'conjugated' ) )? 'Port' ( (lv_name_2_0= RULE_ID ) ) ( '[' ( (lv_multiplicity_4_0= RULE_INT ) ) ']' )? ':' ( ( ruleFQN ) ) ) ;
+ public final EObject rulePort() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_conjugated_0_0=null;
+ Token lv_name_2_0=null;
+ Token lv_multiplicity_4_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2438:6: ( ( ( (lv_conjugated_0_0= 'conjugated' ) )? 'Port' ( (lv_name_2_0= RULE_ID ) ) ( '[' ( (lv_multiplicity_4_0= RULE_INT ) ) ']' )? ':' ( ( ruleFQN ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2439:1: ( ( (lv_conjugated_0_0= 'conjugated' ) )? 'Port' ( (lv_name_2_0= RULE_ID ) ) ( '[' ( (lv_multiplicity_4_0= RULE_INT ) ) ']' )? ':' ( ( ruleFQN ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2439:1: ( ( (lv_conjugated_0_0= 'conjugated' ) )? 'Port' ( (lv_name_2_0= RULE_ID ) ) ( '[' ( (lv_multiplicity_4_0= RULE_INT ) ) ']' )? ':' ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2439:2: ( (lv_conjugated_0_0= 'conjugated' ) )? 'Port' ( (lv_name_2_0= RULE_ID ) ) ( '[' ( (lv_multiplicity_4_0= RULE_INT ) ) ']' )? ':' ( ( ruleFQN ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2439:2: ( (lv_conjugated_0_0= 'conjugated' ) )?
+ int alt49=2;
+ int LA49_0 = input.LA(1);
+
+ if ( (LA49_0==44) ) {
+ alt49=1;
+ }
+ switch (alt49) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2440:1: (lv_conjugated_0_0= 'conjugated' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2440:1: (lv_conjugated_0_0= 'conjugated' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2441:3: lv_conjugated_0_0= 'conjugated'
+ {
+ lv_conjugated_0_0=(Token)input.LT(1);
+ match(input,44,FOLLOW_44_in_rulePort3893);
+
+ createLeafNode(grammarAccess.getPortAccess().getConjugatedConjugatedKeyword_0_0(), "conjugated");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ set(current, "conjugated", true, "conjugated", lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,45,FOLLOW_45_in_rulePort3917);
+
+ createLeafNode(grammarAccess.getPortAccess().getPortKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2464:1: ( (lv_name_2_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2465:1: (lv_name_2_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2465:1: (lv_name_2_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2466:3: lv_name_2_0= RULE_ID
+ {
+ lv_name_2_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePort3934);
+
+ createLeafNode(grammarAccess.getPortAccess().getNameIDTerminalRuleCall_2_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2488:2: ( '[' ( (lv_multiplicity_4_0= RULE_INT ) ) ']' )?
+ int alt50=2;
+ int LA50_0 = input.LA(1);
+
+ if ( (LA50_0==18) ) {
+ alt50=1;
+ }
+ switch (alt50) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2488:4: '[' ( (lv_multiplicity_4_0= RULE_INT ) ) ']'
+ {
+ match(input,18,FOLLOW_18_in_rulePort3950);
+
+ createLeafNode(grammarAccess.getPortAccess().getLeftSquareBracketKeyword_3_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2492:1: ( (lv_multiplicity_4_0= RULE_INT ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2493:1: (lv_multiplicity_4_0= RULE_INT )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2493:1: (lv_multiplicity_4_0= RULE_INT )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2494:3: lv_multiplicity_4_0= RULE_INT
+ {
+ lv_multiplicity_4_0=(Token)input.LT(1);
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_rulePort3967);
+
+ createLeafNode(grammarAccess.getPortAccess().getMultiplicityINTTerminalRuleCall_3_1_0(), "multiplicity");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "multiplicity",
+ lv_multiplicity_4_0,
+ "INT",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,19,FOLLOW_19_in_rulePort3982);
+
+ createLeafNode(grammarAccess.getPortAccess().getRightSquareBracketKeyword_3_2(), null);
+
+
+ }
+ break;
+
+ }
+
+ match(input,14,FOLLOW_14_in_rulePort3994);
+
+ createLeafNode(grammarAccess.getPortAccess().getColonKeyword_4(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2524:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2525:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2525:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2526:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getPortAccess().getProtocolProtocolClassCrossReference_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_rulePort4017);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end rulePort
+
+
+ // $ANTLR start entryRuleExternalPort
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2548:1: entryRuleExternalPort returns [EObject current=null] : iv_ruleExternalPort= ruleExternalPort EOF ;
+ public final EObject entryRuleExternalPort() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleExternalPort = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2549:2: (iv_ruleExternalPort= ruleExternalPort EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2550:2: iv_ruleExternalPort= ruleExternalPort EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getExternalPortRule(), currentNode);
+ pushFollow(FOLLOW_ruleExternalPort_in_entryRuleExternalPort4053);
+ iv_ruleExternalPort=ruleExternalPort();
+ _fsp--;
+
+ current =iv_ruleExternalPort;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleExternalPort4063);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleExternalPort
+
+
+ // $ANTLR start ruleExternalPort
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2557:1: ruleExternalPort returns [EObject current=null] : ( 'external' 'Port' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleExternalPort() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2562:6: ( ( 'external' 'Port' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2563:1: ( 'external' 'Port' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2563:1: ( 'external' 'Port' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2563:3: 'external' 'Port' ( ( RULE_ID ) )
+ {
+ match(input,46,FOLLOW_46_in_ruleExternalPort4098);
+
+ createLeafNode(grammarAccess.getExternalPortAccess().getExternalKeyword_0(), null);
+
+ match(input,45,FOLLOW_45_in_ruleExternalPort4108);
+
+ createLeafNode(grammarAccess.getExternalPortAccess().getPortKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2571:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2572:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2572:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2573:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getExternalPortRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExternalPort4126);
+
+ createLeafNode(grammarAccess.getExternalPortAccess().getIfportPortCrossReference_2_0(), "ifport");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleExternalPort
+
+
+ // $ANTLR start entryRuleSAPRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2593:1: entryRuleSAPRef returns [EObject current=null] : iv_ruleSAPRef= ruleSAPRef EOF ;
+ public final EObject entryRuleSAPRef() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSAPRef = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2594:2: (iv_ruleSAPRef= ruleSAPRef EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2595:2: iv_ruleSAPRef= ruleSAPRef EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSAPRefRule(), currentNode);
+ pushFollow(FOLLOW_ruleSAPRef_in_entryRuleSAPRef4162);
+ iv_ruleSAPRef=ruleSAPRef();
+ _fsp--;
+
+ current =iv_ruleSAPRef;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSAPRef4172);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSAPRef
+
+
+ // $ANTLR start ruleSAPRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2602:1: ruleSAPRef returns [EObject current=null] : ( 'SAP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) ;
+ public final EObject ruleSAPRef() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2607:6: ( ( 'SAP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2608:1: ( 'SAP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2608:1: ( 'SAP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2608:3: 'SAP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) )
+ {
+ match(input,47,FOLLOW_47_in_ruleSAPRef4207);
+
+ createLeafNode(grammarAccess.getSAPRefAccess().getSAPKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2612:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2613:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2613:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2614:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSAPRef4224);
+
+ createLeafNode(grammarAccess.getSAPRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSAPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleSAPRef4239);
+
+ createLeafNode(grammarAccess.getSAPRefAccess().getColonKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2640:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2641:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2641:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2642:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSAPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getSAPRefAccess().getProtocolProtocolClassCrossReference_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleSAPRef4262);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSAPRef
+
+
+ // $ANTLR start entryRuleSPPRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2664:1: entryRuleSPPRef returns [EObject current=null] : iv_ruleSPPRef= ruleSPPRef EOF ;
+ public final EObject entryRuleSPPRef() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSPPRef = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2665:2: (iv_ruleSPPRef= ruleSPPRef EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2666:2: iv_ruleSPPRef= ruleSPPRef EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSPPRefRule(), currentNode);
+ pushFollow(FOLLOW_ruleSPPRef_in_entryRuleSPPRef4298);
+ iv_ruleSPPRef=ruleSPPRef();
+ _fsp--;
+
+ current =iv_ruleSPPRef;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSPPRef4308);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSPPRef
+
+
+ // $ANTLR start ruleSPPRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2673:1: ruleSPPRef returns [EObject current=null] : ( 'SPP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) ;
+ public final EObject ruleSPPRef() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2678:6: ( ( 'SPP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2679:1: ( 'SPP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2679:1: ( 'SPP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2679:3: 'SPP' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) )
+ {
+ match(input,48,FOLLOW_48_in_ruleSPPRef4343);
+
+ createLeafNode(grammarAccess.getSPPRefAccess().getSPPKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2683:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2684:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2684:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2685:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSPPRef4360);
+
+ createLeafNode(grammarAccess.getSPPRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSPPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleSPPRef4375);
+
+ createLeafNode(grammarAccess.getSPPRefAccess().getColonKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2711:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2712:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2712:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2713:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSPPRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getSPPRefAccess().getProtocolProtocolClassCrossReference_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleSPPRef4398);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSPPRef
+
+
+ // $ANTLR start entryRuleServiceImplementation
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2735:1: entryRuleServiceImplementation returns [EObject current=null] : iv_ruleServiceImplementation= ruleServiceImplementation EOF ;
+ public final EObject entryRuleServiceImplementation() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleServiceImplementation = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2736:2: (iv_ruleServiceImplementation= ruleServiceImplementation EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2737:2: iv_ruleServiceImplementation= ruleServiceImplementation EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getServiceImplementationRule(), currentNode);
+ pushFollow(FOLLOW_ruleServiceImplementation_in_entryRuleServiceImplementation4434);
+ iv_ruleServiceImplementation=ruleServiceImplementation();
+ _fsp--;
+
+ current =iv_ruleServiceImplementation;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleServiceImplementation4444);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleServiceImplementation
+
+
+ // $ANTLR start ruleServiceImplementation
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2744:1: ruleServiceImplementation returns [EObject current=null] : ( 'ServiceImplementation' 'of' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleServiceImplementation() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2749:6: ( ( 'ServiceImplementation' 'of' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2750:1: ( 'ServiceImplementation' 'of' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2750:1: ( 'ServiceImplementation' 'of' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2750:3: 'ServiceImplementation' 'of' ( ( RULE_ID ) )
+ {
+ match(input,49,FOLLOW_49_in_ruleServiceImplementation4479);
+
+ createLeafNode(grammarAccess.getServiceImplementationAccess().getServiceImplementationKeyword_0(), null);
+
+ match(input,50,FOLLOW_50_in_ruleServiceImplementation4489);
+
+ createLeafNode(grammarAccess.getServiceImplementationAccess().getOfKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2758:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2759:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2759:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2760:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getServiceImplementationRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleServiceImplementation4507);
+
+ createLeafNode(grammarAccess.getServiceImplementationAccess().getSppSPPRefCrossReference_2_0(), "spp");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleServiceImplementation
+
+
+ // $ANTLR start entryRuleLogicalSystem
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2780:1: entryRuleLogicalSystem returns [EObject current=null] : iv_ruleLogicalSystem= ruleLogicalSystem EOF ;
+ public final EObject entryRuleLogicalSystem() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleLogicalSystem = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2781:2: (iv_ruleLogicalSystem= ruleLogicalSystem EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2782:2: iv_ruleLogicalSystem= ruleLogicalSystem EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getLogicalSystemRule(), currentNode);
+ pushFollow(FOLLOW_ruleLogicalSystem_in_entryRuleLogicalSystem4543);
+ iv_ruleLogicalSystem=ruleLogicalSystem();
+ _fsp--;
+
+ current =iv_ruleLogicalSystem;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleLogicalSystem4553);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleLogicalSystem
+
+
+ // $ANTLR start ruleLogicalSystem
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2789:1: ruleLogicalSystem returns [EObject current=null] : ( 'LogicalSystem' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_subSystems_3_0= ruleSubSystemRef ) )+ ( (lv_bindings_4_0= ruleBinding ) )* ( (lv_connections_5_0= ruleLayerConnection ) )* '}' ) ;
+ public final EObject ruleLogicalSystem() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_subSystems_3_0 = null;
+
+ EObject lv_bindings_4_0 = null;
+
+ EObject lv_connections_5_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2794:6: ( ( 'LogicalSystem' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_subSystems_3_0= ruleSubSystemRef ) )+ ( (lv_bindings_4_0= ruleBinding ) )* ( (lv_connections_5_0= ruleLayerConnection ) )* '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2795:1: ( 'LogicalSystem' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_subSystems_3_0= ruleSubSystemRef ) )+ ( (lv_bindings_4_0= ruleBinding ) )* ( (lv_connections_5_0= ruleLayerConnection ) )* '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2795:1: ( 'LogicalSystem' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_subSystems_3_0= ruleSubSystemRef ) )+ ( (lv_bindings_4_0= ruleBinding ) )* ( (lv_connections_5_0= ruleLayerConnection ) )* '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2795:3: 'LogicalSystem' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_subSystems_3_0= ruleSubSystemRef ) )+ ( (lv_bindings_4_0= ruleBinding ) )* ( (lv_connections_5_0= ruleLayerConnection ) )* '}'
+ {
+ match(input,51,FOLLOW_51_in_ruleLogicalSystem4588);
+
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getLogicalSystemKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2799:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2800:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2800:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2801:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLogicalSystem4605);
+
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleLogicalSystem4620);
+
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getLeftCurlyBracketKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2827:1: ( (lv_subSystems_3_0= ruleSubSystemRef ) )+
+ int cnt51=0;
+ loop51:
+ do {
+ int alt51=2;
+ int LA51_0 = input.LA(1);
+
+ if ( (LA51_0==52) ) {
+ alt51=1;
+ }
+
+
+ switch (alt51) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2828:1: (lv_subSystems_3_0= ruleSubSystemRef )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2828:1: (lv_subSystems_3_0= ruleSubSystemRef )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2829:3: lv_subSystems_3_0= ruleSubSystemRef
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getLogicalSystemAccess().getSubSystemsSubSystemRefParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSubSystemRef_in_ruleLogicalSystem4641);
+ lv_subSystems_3_0=ruleSubSystemRef();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "subSystems",
+ lv_subSystems_3_0,
+ "SubSystemRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt51 >= 1 ) break loop51;
+ EarlyExitException eee =
+ new EarlyExitException(51, input);
+ throw eee;
+ }
+ cnt51++;
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2851:3: ( (lv_bindings_4_0= ruleBinding ) )*
+ loop52:
+ do {
+ int alt52=2;
+ int LA52_0 = input.LA(1);
+
+ if ( (LA52_0==56) ) {
+ alt52=1;
+ }
+
+
+ switch (alt52) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2852:1: (lv_bindings_4_0= ruleBinding )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2852:1: (lv_bindings_4_0= ruleBinding )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2853:3: lv_bindings_4_0= ruleBinding
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getLogicalSystemAccess().getBindingsBindingParserRuleCall_4_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleBinding_in_ruleLogicalSystem4663);
+ lv_bindings_4_0=ruleBinding();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "bindings",
+ lv_bindings_4_0,
+ "Binding",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop52;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2875:3: ( (lv_connections_5_0= ruleLayerConnection ) )*
+ loop53:
+ do {
+ int alt53=2;
+ int LA53_0 = input.LA(1);
+
+ if ( (LA53_0==58) ) {
+ alt53=1;
+ }
+
+
+ switch (alt53) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2876:1: (lv_connections_5_0= ruleLayerConnection )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2876:1: (lv_connections_5_0= ruleLayerConnection )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2877:3: lv_connections_5_0= ruleLayerConnection
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getLogicalSystemAccess().getConnectionsLayerConnectionParserRuleCall_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleLayerConnection_in_ruleLogicalSystem4685);
+ lv_connections_5_0=ruleLayerConnection();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLogicalSystemRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "connections",
+ lv_connections_5_0,
+ "LayerConnection",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop53;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleLogicalSystem4696);
+
+ createLeafNode(grammarAccess.getLogicalSystemAccess().getRightCurlyBracketKeyword_6(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleLogicalSystem
+
+
+ // $ANTLR start entryRuleSubSystemRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2913:1: entryRuleSubSystemRef returns [EObject current=null] : iv_ruleSubSystemRef= ruleSubSystemRef EOF ;
+ public final EObject entryRuleSubSystemRef() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSubSystemRef = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2914:2: (iv_ruleSubSystemRef= ruleSubSystemRef EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2915:2: iv_ruleSubSystemRef= ruleSubSystemRef EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSubSystemRefRule(), currentNode);
+ pushFollow(FOLLOW_ruleSubSystemRef_in_entryRuleSubSystemRef4734);
+ iv_ruleSubSystemRef=ruleSubSystemRef();
+ _fsp--;
+
+ current =iv_ruleSubSystemRef;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSubSystemRef4744);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSubSystemRef
+
+
+ // $ANTLR start ruleSubSystemRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2922:1: ruleSubSystemRef returns [EObject current=null] : ( 'SubSystemRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) ;
+ public final EObject ruleSubSystemRef() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2927:6: ( ( 'SubSystemRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2928:1: ( 'SubSystemRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2928:1: ( 'SubSystemRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2928:3: 'SubSystemRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) )
+ {
+ match(input,52,FOLLOW_52_in_ruleSubSystemRef4779);
+
+ createLeafNode(grammarAccess.getSubSystemRefAccess().getSubSystemRefKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2932:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2933:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2933:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2934:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSubSystemRef4796);
+
+ createLeafNode(grammarAccess.getSubSystemRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleSubSystemRef4811);
+
+ createLeafNode(grammarAccess.getSubSystemRefAccess().getColonKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2960:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2961:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2961:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2962:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getSubSystemRefAccess().getTypeSubSystemClassCrossReference_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleSubSystemRef4834);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSubSystemRef
+
+
+ // $ANTLR start entryRuleSubSystemClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2984:1: entryRuleSubSystemClass returns [EObject current=null] : iv_ruleSubSystemClass= ruleSubSystemClass EOF ;
+ public final EObject entryRuleSubSystemClass() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSubSystemClass = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2985:2: (iv_ruleSubSystemClass= ruleSubSystemClass EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2986:2: iv_ruleSubSystemClass= ruleSubSystemClass EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSubSystemClassRule(), currentNode);
+ pushFollow(FOLLOW_ruleSubSystemClass_in_entryRuleSubSystemClass4870);
+ iv_ruleSubSystemClass=ruleSubSystemClass();
+ _fsp--;
+
+ current =iv_ruleSubSystemClass;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSubSystemClass4880);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSubSystemClass
+
+
+ // $ANTLR start ruleSubSystemClass
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2993:1: ruleSubSystemClass returns [EObject current=null] : ( 'SubSystemClass' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_relayPorts_3_0= rulePort ) )* ( (lv_ifSPPs_4_0= ruleSPPRef ) )* ( (lv_actorRefs_5_0= ruleActorRef ) )+ ( (lv_bindings_6_0= ruleBinding ) )* ( (lv_connections_7_0= ruleLayerConnection ) )* ( (lv_threads_8_0= ruleLogicalThread ) )* '}' ) ;
+ public final EObject ruleSubSystemClass() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_relayPorts_3_0 = null;
+
+ EObject lv_ifSPPs_4_0 = null;
+
+ EObject lv_actorRefs_5_0 = null;
+
+ EObject lv_bindings_6_0 = null;
+
+ EObject lv_connections_7_0 = null;
+
+ EObject lv_threads_8_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2998:6: ( ( 'SubSystemClass' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_relayPorts_3_0= rulePort ) )* ( (lv_ifSPPs_4_0= ruleSPPRef ) )* ( (lv_actorRefs_5_0= ruleActorRef ) )+ ( (lv_bindings_6_0= ruleBinding ) )* ( (lv_connections_7_0= ruleLayerConnection ) )* ( (lv_threads_8_0= ruleLogicalThread ) )* '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2999:1: ( 'SubSystemClass' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_relayPorts_3_0= rulePort ) )* ( (lv_ifSPPs_4_0= ruleSPPRef ) )* ( (lv_actorRefs_5_0= ruleActorRef ) )+ ( (lv_bindings_6_0= ruleBinding ) )* ( (lv_connections_7_0= ruleLayerConnection ) )* ( (lv_threads_8_0= ruleLogicalThread ) )* '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2999:1: ( 'SubSystemClass' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_relayPorts_3_0= rulePort ) )* ( (lv_ifSPPs_4_0= ruleSPPRef ) )* ( (lv_actorRefs_5_0= ruleActorRef ) )+ ( (lv_bindings_6_0= ruleBinding ) )* ( (lv_connections_7_0= ruleLayerConnection ) )* ( (lv_threads_8_0= ruleLogicalThread ) )* '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:2999:3: 'SubSystemClass' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_relayPorts_3_0= rulePort ) )* ( (lv_ifSPPs_4_0= ruleSPPRef ) )* ( (lv_actorRefs_5_0= ruleActorRef ) )+ ( (lv_bindings_6_0= ruleBinding ) )* ( (lv_connections_7_0= ruleLayerConnection ) )* ( (lv_threads_8_0= ruleLogicalThread ) )* '}'
+ {
+ match(input,53,FOLLOW_53_in_ruleSubSystemClass4915);
+
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getSubSystemClassKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3003:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3004:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3004:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3005:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSubSystemClass4932);
+
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleSubSystemClass4947);
+
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getLeftCurlyBracketKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3031:1: ( (lv_relayPorts_3_0= rulePort ) )*
+ loop54:
+ do {
+ int alt54=2;
+ int LA54_0 = input.LA(1);
+
+ if ( ((LA54_0>=44 && LA54_0<=45)) ) {
+ alt54=1;
+ }
+
+
+ switch (alt54) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3032:1: (lv_relayPorts_3_0= rulePort )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3032:1: (lv_relayPorts_3_0= rulePort )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3033:3: lv_relayPorts_3_0= rulePort
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getRelayPortsPortParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_rulePort_in_ruleSubSystemClass4968);
+ lv_relayPorts_3_0=rulePort();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "relayPorts",
+ lv_relayPorts_3_0,
+ "Port",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop54;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3055:3: ( (lv_ifSPPs_4_0= ruleSPPRef ) )*
+ loop55:
+ do {
+ int alt55=2;
+ int LA55_0 = input.LA(1);
+
+ if ( (LA55_0==48) ) {
+ alt55=1;
+ }
+
+
+ switch (alt55) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3056:1: (lv_ifSPPs_4_0= ruleSPPRef )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3056:1: (lv_ifSPPs_4_0= ruleSPPRef )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3057:3: lv_ifSPPs_4_0= ruleSPPRef
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getIfSPPsSPPRefParserRuleCall_4_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSPPRef_in_ruleSubSystemClass4990);
+ lv_ifSPPs_4_0=ruleSPPRef();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "ifSPPs",
+ lv_ifSPPs_4_0,
+ "SPPRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop55;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3079:3: ( (lv_actorRefs_5_0= ruleActorRef ) )+
+ int cnt56=0;
+ loop56:
+ do {
+ int alt56=2;
+ int LA56_0 = input.LA(1);
+
+ if ( (LA56_0==62) ) {
+ alt56=1;
+ }
+
+
+ switch (alt56) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3080:1: (lv_actorRefs_5_0= ruleActorRef )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3080:1: (lv_actorRefs_5_0= ruleActorRef )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3081:3: lv_actorRefs_5_0= ruleActorRef
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getActorRefsActorRefParserRuleCall_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleActorRef_in_ruleSubSystemClass5012);
+ lv_actorRefs_5_0=ruleActorRef();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "actorRefs",
+ lv_actorRefs_5_0,
+ "ActorRef",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt56 >= 1 ) break loop56;
+ EarlyExitException eee =
+ new EarlyExitException(56, input);
+ throw eee;
+ }
+ cnt56++;
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3103:3: ( (lv_bindings_6_0= ruleBinding ) )*
+ loop57:
+ do {
+ int alt57=2;
+ int LA57_0 = input.LA(1);
+
+ if ( (LA57_0==56) ) {
+ alt57=1;
+ }
+
+
+ switch (alt57) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3104:1: (lv_bindings_6_0= ruleBinding )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3104:1: (lv_bindings_6_0= ruleBinding )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3105:3: lv_bindings_6_0= ruleBinding
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getBindingsBindingParserRuleCall_6_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleBinding_in_ruleSubSystemClass5034);
+ lv_bindings_6_0=ruleBinding();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "bindings",
+ lv_bindings_6_0,
+ "Binding",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop57;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3127:3: ( (lv_connections_7_0= ruleLayerConnection ) )*
+ loop58:
+ do {
+ int alt58=2;
+ int LA58_0 = input.LA(1);
+
+ if ( (LA58_0==58) ) {
+ alt58=1;
+ }
+
+
+ switch (alt58) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3128:1: (lv_connections_7_0= ruleLayerConnection )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3128:1: (lv_connections_7_0= ruleLayerConnection )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3129:3: lv_connections_7_0= ruleLayerConnection
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getConnectionsLayerConnectionParserRuleCall_7_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleLayerConnection_in_ruleSubSystemClass5056);
+ lv_connections_7_0=ruleLayerConnection();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "connections",
+ lv_connections_7_0,
+ "LayerConnection",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop58;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3151:3: ( (lv_threads_8_0= ruleLogicalThread ) )*
+ loop59:
+ do {
+ int alt59=2;
+ int LA59_0 = input.LA(1);
+
+ if ( (LA59_0==54) ) {
+ alt59=1;
+ }
+
+
+ switch (alt59) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3152:1: (lv_threads_8_0= ruleLogicalThread )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3152:1: (lv_threads_8_0= ruleLogicalThread )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3153:3: lv_threads_8_0= ruleLogicalThread
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSubSystemClassAccess().getThreadsLogicalThreadParserRuleCall_8_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleLogicalThread_in_ruleSubSystemClass5078);
+ lv_threads_8_0=ruleLogicalThread();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubSystemClassRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "threads",
+ lv_threads_8_0,
+ "LogicalThread",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop59;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleSubSystemClass5089);
+
+ createLeafNode(grammarAccess.getSubSystemClassAccess().getRightCurlyBracketKeyword_9(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSubSystemClass
+
+
+ // $ANTLR start entryRuleLogicalThread
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3187:1: entryRuleLogicalThread returns [EObject current=null] : iv_ruleLogicalThread= ruleLogicalThread EOF ;
+ public final EObject entryRuleLogicalThread() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleLogicalThread = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3188:2: (iv_ruleLogicalThread= ruleLogicalThread EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3189:2: iv_ruleLogicalThread= ruleLogicalThread EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getLogicalThreadRule(), currentNode);
+ pushFollow(FOLLOW_ruleLogicalThread_in_entryRuleLogicalThread5125);
+ iv_ruleLogicalThread=ruleLogicalThread();
+ _fsp--;
+
+ current =iv_ruleLogicalThread;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleLogicalThread5135);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleLogicalThread
+
+
+ // $ANTLR start ruleLogicalThread
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3196:1: ruleLogicalThread returns [EObject current=null] : ( 'LogicalThread' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_instances_3_0= ruleActorInstancePath ) ) ( ',' ( (lv_instances_5_0= ruleActorInstancePath ) ) )* '}' ) ;
+ public final EObject ruleLogicalThread() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_instances_3_0 = null;
+
+ EObject lv_instances_5_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3201:6: ( ( 'LogicalThread' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_instances_3_0= ruleActorInstancePath ) ) ( ',' ( (lv_instances_5_0= ruleActorInstancePath ) ) )* '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3202:1: ( 'LogicalThread' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_instances_3_0= ruleActorInstancePath ) ) ( ',' ( (lv_instances_5_0= ruleActorInstancePath ) ) )* '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3202:1: ( 'LogicalThread' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_instances_3_0= ruleActorInstancePath ) ) ( ',' ( (lv_instances_5_0= ruleActorInstancePath ) ) )* '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3202:3: 'LogicalThread' ( (lv_name_1_0= RULE_ID ) ) '{' ( (lv_instances_3_0= ruleActorInstancePath ) ) ( ',' ( (lv_instances_5_0= ruleActorInstancePath ) ) )* '}'
+ {
+ match(input,54,FOLLOW_54_in_ruleLogicalThread5170);
+
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getLogicalThreadKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3206:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3207:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3207:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3208:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLogicalThread5187);
+
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLogicalThreadRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleLogicalThread5202);
+
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getLeftCurlyBracketKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3234:1: ( (lv_instances_3_0= ruleActorInstancePath ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3235:1: (lv_instances_3_0= ruleActorInstancePath )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3235:1: (lv_instances_3_0= ruleActorInstancePath )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3236:3: lv_instances_3_0= ruleActorInstancePath
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleActorInstancePath_in_ruleLogicalThread5223);
+ lv_instances_3_0=ruleActorInstancePath();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLogicalThreadRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "instances",
+ lv_instances_3_0,
+ "ActorInstancePath",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3258:2: ( ',' ( (lv_instances_5_0= ruleActorInstancePath ) ) )*
+ loop60:
+ do {
+ int alt60=2;
+ int LA60_0 = input.LA(1);
+
+ if ( (LA60_0==22) ) {
+ alt60=1;
+ }
+
+
+ switch (alt60) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3258:4: ',' ( (lv_instances_5_0= ruleActorInstancePath ) )
+ {
+ match(input,22,FOLLOW_22_in_ruleLogicalThread5234);
+
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getCommaKeyword_4_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3262:1: ( (lv_instances_5_0= ruleActorInstancePath ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3263:1: (lv_instances_5_0= ruleActorInstancePath )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3263:1: (lv_instances_5_0= ruleActorInstancePath )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3264:3: lv_instances_5_0= ruleActorInstancePath
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getLogicalThreadAccess().getInstancesActorInstancePathParserRuleCall_4_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleActorInstancePath_in_ruleLogicalThread5255);
+ lv_instances_5_0=ruleActorInstancePath();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLogicalThreadRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "instances",
+ lv_instances_5_0,
+ "ActorInstancePath",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop60;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleLogicalThread5267);
+
+ createLeafNode(grammarAccess.getLogicalThreadAccess().getRightCurlyBracketKeyword_5(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleLogicalThread
+
+
+ // $ANTLR start entryRuleActorInstancePath
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3298:1: entryRuleActorInstancePath returns [EObject current=null] : iv_ruleActorInstancePath= ruleActorInstancePath EOF ;
+ public final EObject entryRuleActorInstancePath() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleActorInstancePath = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3299:2: (iv_ruleActorInstancePath= ruleActorInstancePath EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3300:2: iv_ruleActorInstancePath= ruleActorInstancePath EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getActorInstancePathRule(), currentNode);
+ pushFollow(FOLLOW_ruleActorInstancePath_in_entryRuleActorInstancePath5303);
+ iv_ruleActorInstancePath=ruleActorInstancePath();
+ _fsp--;
+
+ current =iv_ruleActorInstancePath;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorInstancePath5313);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleActorInstancePath
+
+
+ // $ANTLR start ruleActorInstancePath
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3307:1: ruleActorInstancePath returns [EObject current=null] : ( ( (lv_segments_0_0= RULE_ID ) ) ( '.' ( (lv_segments_2_0= RULE_ID ) ) )* ) ;
+ public final EObject ruleActorInstancePath() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_segments_0_0=null;
+ Token lv_segments_2_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3312:6: ( ( ( (lv_segments_0_0= RULE_ID ) ) ( '.' ( (lv_segments_2_0= RULE_ID ) ) )* ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3313:1: ( ( (lv_segments_0_0= RULE_ID ) ) ( '.' ( (lv_segments_2_0= RULE_ID ) ) )* )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3313:1: ( ( (lv_segments_0_0= RULE_ID ) ) ( '.' ( (lv_segments_2_0= RULE_ID ) ) )* )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3313:2: ( (lv_segments_0_0= RULE_ID ) ) ( '.' ( (lv_segments_2_0= RULE_ID ) ) )*
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3313:2: ( (lv_segments_0_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3314:1: (lv_segments_0_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3314:1: (lv_segments_0_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3315:3: lv_segments_0_0= RULE_ID
+ {
+ lv_segments_0_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActorInstancePath5355);
+
+ createLeafNode(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_0_0(), "segments");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorInstancePathRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ add(
+ current,
+ "segments",
+ lv_segments_0_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3337:2: ( '.' ( (lv_segments_2_0= RULE_ID ) ) )*
+ loop61:
+ do {
+ int alt61=2;
+ int LA61_0 = input.LA(1);
+
+ if ( (LA61_0==55) ) {
+ alt61=1;
+ }
+
+
+ switch (alt61) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3337:4: '.' ( (lv_segments_2_0= RULE_ID ) )
+ {
+ match(input,55,FOLLOW_55_in_ruleActorInstancePath5371);
+
+ createLeafNode(grammarAccess.getActorInstancePathAccess().getFullStopKeyword_1_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3341:1: ( (lv_segments_2_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3342:1: (lv_segments_2_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3342:1: (lv_segments_2_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3343:3: lv_segments_2_0= RULE_ID
+ {
+ lv_segments_2_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActorInstancePath5388);
+
+ createLeafNode(grammarAccess.getActorInstancePathAccess().getSegmentsIDTerminalRuleCall_1_1_0(), "segments");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorInstancePathRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ add(
+ current,
+ "segments",
+ lv_segments_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop61;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleActorInstancePath
+
+
+ // $ANTLR start entryRuleBinding
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3373:1: entryRuleBinding returns [EObject current=null] : iv_ruleBinding= ruleBinding EOF ;
+ public final EObject entryRuleBinding() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleBinding = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3374:2: (iv_ruleBinding= ruleBinding EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3375:2: iv_ruleBinding= ruleBinding EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getBindingRule(), currentNode);
+ pushFollow(FOLLOW_ruleBinding_in_entryRuleBinding5431);
+ iv_ruleBinding=ruleBinding();
+ _fsp--;
+
+ current =iv_ruleBinding;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBinding5441);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleBinding
+
+
+ // $ANTLR start ruleBinding
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3382:1: ruleBinding returns [EObject current=null] : ( 'Binding' ( (lv_endpoint1_1_0= ruleBindingEndPoint ) ) 'and' ( (lv_endpoint2_3_0= ruleBindingEndPoint ) ) ) ;
+ public final EObject ruleBinding() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_endpoint1_1_0 = null;
+
+ EObject lv_endpoint2_3_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3387:6: ( ( 'Binding' ( (lv_endpoint1_1_0= ruleBindingEndPoint ) ) 'and' ( (lv_endpoint2_3_0= ruleBindingEndPoint ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3388:1: ( 'Binding' ( (lv_endpoint1_1_0= ruleBindingEndPoint ) ) 'and' ( (lv_endpoint2_3_0= ruleBindingEndPoint ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3388:1: ( 'Binding' ( (lv_endpoint1_1_0= ruleBindingEndPoint ) ) 'and' ( (lv_endpoint2_3_0= ruleBindingEndPoint ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3388:3: 'Binding' ( (lv_endpoint1_1_0= ruleBindingEndPoint ) ) 'and' ( (lv_endpoint2_3_0= ruleBindingEndPoint ) )
+ {
+ match(input,56,FOLLOW_56_in_ruleBinding5476);
+
+ createLeafNode(grammarAccess.getBindingAccess().getBindingKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3392:1: ( (lv_endpoint1_1_0= ruleBindingEndPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3393:1: (lv_endpoint1_1_0= ruleBindingEndPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3393:1: (lv_endpoint1_1_0= ruleBindingEndPoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3394:3: lv_endpoint1_1_0= ruleBindingEndPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getBindingAccess().getEndpoint1BindingEndPointParserRuleCall_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleBindingEndPoint_in_ruleBinding5497);
+ lv_endpoint1_1_0=ruleBindingEndPoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBindingRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "endpoint1",
+ lv_endpoint1_1_0,
+ "BindingEndPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,57,FOLLOW_57_in_ruleBinding5507);
+
+ createLeafNode(grammarAccess.getBindingAccess().getAndKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3420:1: ( (lv_endpoint2_3_0= ruleBindingEndPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3421:1: (lv_endpoint2_3_0= ruleBindingEndPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3421:1: (lv_endpoint2_3_0= ruleBindingEndPoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3422:3: lv_endpoint2_3_0= ruleBindingEndPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getBindingAccess().getEndpoint2BindingEndPointParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleBindingEndPoint_in_ruleBinding5528);
+ lv_endpoint2_3_0=ruleBindingEndPoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBindingRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "endpoint2",
+ lv_endpoint2_3_0,
+ "BindingEndPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleBinding
+
+
+ // $ANTLR start entryRuleBindingEndPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3452:1: entryRuleBindingEndPoint returns [EObject current=null] : iv_ruleBindingEndPoint= ruleBindingEndPoint EOF ;
+ public final EObject entryRuleBindingEndPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleBindingEndPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3453:2: (iv_ruleBindingEndPoint= ruleBindingEndPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3454:2: iv_ruleBindingEndPoint= ruleBindingEndPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getBindingEndPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleBindingEndPoint_in_entryRuleBindingEndPoint5564);
+ iv_ruleBindingEndPoint=ruleBindingEndPoint();
+ _fsp--;
+
+ current =iv_ruleBindingEndPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBindingEndPoint5574);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleBindingEndPoint
+
+
+ // $ANTLR start ruleBindingEndPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3461:1: ruleBindingEndPoint returns [EObject current=null] : ( ( ( ( RULE_ID ) ) '.' )? ( ( RULE_ID ) ) ) ;
+ public final EObject ruleBindingEndPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3466:6: ( ( ( ( ( RULE_ID ) ) '.' )? ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3467:1: ( ( ( ( RULE_ID ) ) '.' )? ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3467:1: ( ( ( ( RULE_ID ) ) '.' )? ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3467:2: ( ( ( RULE_ID ) ) '.' )? ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3467:2: ( ( ( RULE_ID ) ) '.' )?
+ int alt62=2;
+ int LA62_0 = input.LA(1);
+
+ if ( (LA62_0==RULE_ID) ) {
+ int LA62_1 = input.LA(2);
+
+ if ( (LA62_1==55) ) {
+ alt62=1;
+ }
+ }
+ switch (alt62) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3467:3: ( ( RULE_ID ) ) '.'
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3467:3: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3468:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3468:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3469:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBindingEndPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBindingEndPoint5618);
+
+ createLeafNode(grammarAccess.getBindingEndPointAccess().getActorRefActorContainerRefCrossReference_0_0_0(), "actorRef");
+
+
+ }
+
+
+ }
+
+ match(input,55,FOLLOW_55_in_ruleBindingEndPoint5628);
+
+ createLeafNode(grammarAccess.getBindingEndPointAccess().getFullStopKeyword_0_1(), null);
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3485:3: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3486:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3486:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3487:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBindingEndPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBindingEndPoint5648);
+
+ createLeafNode(grammarAccess.getBindingEndPointAccess().getPortPortCrossReference_1_0(), "port");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleBindingEndPoint
+
+
+ // $ANTLR start entryRuleLayerConnection
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3507:1: entryRuleLayerConnection returns [EObject current=null] : iv_ruleLayerConnection= ruleLayerConnection EOF ;
+ public final EObject entryRuleLayerConnection() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleLayerConnection = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3508:2: (iv_ruleLayerConnection= ruleLayerConnection EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3509:2: iv_ruleLayerConnection= ruleLayerConnection EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getLayerConnectionRule(), currentNode);
+ pushFollow(FOLLOW_ruleLayerConnection_in_entryRuleLayerConnection5684);
+ iv_ruleLayerConnection=ruleLayerConnection();
+ _fsp--;
+
+ current =iv_ruleLayerConnection;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleLayerConnection5694);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleLayerConnection
+
+
+ // $ANTLR start ruleLayerConnection
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3516:1: ruleLayerConnection returns [EObject current=null] : ( 'LayerConnection' ( (lv_from_1_0= ruleSAPoint ) ) 'satisfied_by' ( (lv_to_3_0= ruleSPPoint ) ) ) ;
+ public final EObject ruleLayerConnection() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_from_1_0 = null;
+
+ EObject lv_to_3_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3521:6: ( ( 'LayerConnection' ( (lv_from_1_0= ruleSAPoint ) ) 'satisfied_by' ( (lv_to_3_0= ruleSPPoint ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3522:1: ( 'LayerConnection' ( (lv_from_1_0= ruleSAPoint ) ) 'satisfied_by' ( (lv_to_3_0= ruleSPPoint ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3522:1: ( 'LayerConnection' ( (lv_from_1_0= ruleSAPoint ) ) 'satisfied_by' ( (lv_to_3_0= ruleSPPoint ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3522:3: 'LayerConnection' ( (lv_from_1_0= ruleSAPoint ) ) 'satisfied_by' ( (lv_to_3_0= ruleSPPoint ) )
+ {
+ match(input,58,FOLLOW_58_in_ruleLayerConnection5729);
+
+ createLeafNode(grammarAccess.getLayerConnectionAccess().getLayerConnectionKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3526:1: ( (lv_from_1_0= ruleSAPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3527:1: (lv_from_1_0= ruleSAPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3527:1: (lv_from_1_0= ruleSAPoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3528:3: lv_from_1_0= ruleSAPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getLayerConnectionAccess().getFromSAPointParserRuleCall_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSAPoint_in_ruleLayerConnection5750);
+ lv_from_1_0=ruleSAPoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLayerConnectionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "from",
+ lv_from_1_0,
+ "SAPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,59,FOLLOW_59_in_ruleLayerConnection5760);
+
+ createLeafNode(grammarAccess.getLayerConnectionAccess().getSatisfied_byKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3554:1: ( (lv_to_3_0= ruleSPPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3555:1: (lv_to_3_0= ruleSPPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3555:1: (lv_to_3_0= ruleSPPoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3556:3: lv_to_3_0= ruleSPPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getLayerConnectionAccess().getToSPPointParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleSPPoint_in_ruleLayerConnection5781);
+ lv_to_3_0=ruleSPPoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getLayerConnectionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "to",
+ lv_to_3_0,
+ "SPPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleLayerConnection
+
+
+ // $ANTLR start entryRuleSAPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3586:1: entryRuleSAPoint returns [EObject current=null] : iv_ruleSAPoint= ruleSAPoint EOF ;
+ public final EObject entryRuleSAPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSAPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3587:2: (iv_ruleSAPoint= ruleSAPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3588:2: iv_ruleSAPoint= ruleSAPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSAPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleSAPoint_in_entryRuleSAPoint5817);
+ iv_ruleSAPoint=ruleSAPoint();
+ _fsp--;
+
+ current =iv_ruleSAPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSAPoint5827);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSAPoint
+
+
+ // $ANTLR start ruleSAPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3595:1: ruleSAPoint returns [EObject current=null] : (this_RefSAPoint_0= ruleRefSAPoint | this_RelaySAPoint_1= ruleRelaySAPoint ) ;
+ public final EObject ruleSAPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_RefSAPoint_0 = null;
+
+ EObject this_RelaySAPoint_1 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3600:6: ( (this_RefSAPoint_0= ruleRefSAPoint | this_RelaySAPoint_1= ruleRelaySAPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3601:1: (this_RefSAPoint_0= ruleRefSAPoint | this_RelaySAPoint_1= ruleRelaySAPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3601:1: (this_RefSAPoint_0= ruleRefSAPoint | this_RelaySAPoint_1= ruleRelaySAPoint )
+ int alt63=2;
+ int LA63_0 = input.LA(1);
+
+ if ( (LA63_0==60) ) {
+ alt63=1;
+ }
+ else if ( (LA63_0==61) ) {
+ alt63=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("3601:1: (this_RefSAPoint_0= ruleRefSAPoint | this_RelaySAPoint_1= ruleRelaySAPoint )", 63, 0, input);
+
+ throw nvae;
+ }
+ switch (alt63) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3602:5: this_RefSAPoint_0= ruleRefSAPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSAPointAccess().getRefSAPointParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleRefSAPoint_in_ruleSAPoint5874);
+ this_RefSAPoint_0=ruleRefSAPoint();
+ _fsp--;
+
+
+ current = this_RefSAPoint_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3612:5: this_RelaySAPoint_1= ruleRelaySAPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getSAPointAccess().getRelaySAPointParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleRelaySAPoint_in_ruleSAPoint5901);
+ this_RelaySAPoint_1=ruleRelaySAPoint();
+ _fsp--;
+
+
+ current = this_RelaySAPoint_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSAPoint
+
+
+ // $ANTLR start entryRuleRefSAPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3628:1: entryRuleRefSAPoint returns [EObject current=null] : iv_ruleRefSAPoint= ruleRefSAPoint EOF ;
+ public final EObject entryRuleRefSAPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleRefSAPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3629:2: (iv_ruleRefSAPoint= ruleRefSAPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3630:2: iv_ruleRefSAPoint= ruleRefSAPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getRefSAPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleRefSAPoint_in_entryRuleRefSAPoint5936);
+ iv_ruleRefSAPoint=ruleRefSAPoint();
+ _fsp--;
+
+ current =iv_ruleRefSAPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRefSAPoint5946);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleRefSAPoint
+
+
+ // $ANTLR start ruleRefSAPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3637:1: ruleRefSAPoint returns [EObject current=null] : ( 'ref' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleRefSAPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3642:6: ( ( 'ref' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3643:1: ( 'ref' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3643:1: ( 'ref' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3643:3: 'ref' ( ( RULE_ID ) )
+ {
+ match(input,60,FOLLOW_60_in_ruleRefSAPoint5981);
+
+ createLeafNode(grammarAccess.getRefSAPointAccess().getRefKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3647:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3648:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3648:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3649:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRefSAPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRefSAPoint5999);
+
+ createLeafNode(grammarAccess.getRefSAPointAccess().getRefActorContainerRefCrossReference_1_0(), "ref");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleRefSAPoint
+
+
+ // $ANTLR start entryRuleRelaySAPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3669:1: entryRuleRelaySAPoint returns [EObject current=null] : iv_ruleRelaySAPoint= ruleRelaySAPoint EOF ;
+ public final EObject entryRuleRelaySAPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleRelaySAPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3670:2: (iv_ruleRelaySAPoint= ruleRelaySAPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3671:2: iv_ruleRelaySAPoint= ruleRelaySAPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getRelaySAPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleRelaySAPoint_in_entryRuleRelaySAPoint6035);
+ iv_ruleRelaySAPoint=ruleRelaySAPoint();
+ _fsp--;
+
+ current =iv_ruleRelaySAPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRelaySAPoint6045);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleRelaySAPoint
+
+
+ // $ANTLR start ruleRelaySAPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3678:1: ruleRelaySAPoint returns [EObject current=null] : ( 'relay_sap' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleRelaySAPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3683:6: ( ( 'relay_sap' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3684:1: ( 'relay_sap' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3684:1: ( 'relay_sap' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3684:3: 'relay_sap' ( ( RULE_ID ) )
+ {
+ match(input,61,FOLLOW_61_in_ruleRelaySAPoint6080);
+
+ createLeafNode(grammarAccess.getRelaySAPointAccess().getRelay_sapKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3688:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3689:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3689:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3690:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRelaySAPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRelaySAPoint6098);
+
+ createLeafNode(grammarAccess.getRelaySAPointAccess().getRelaySPPRefCrossReference_1_0(), "relay");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleRelaySAPoint
+
+
+ // $ANTLR start entryRuleSPPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3710:1: entryRuleSPPoint returns [EObject current=null] : iv_ruleSPPoint= ruleSPPoint EOF ;
+ public final EObject entryRuleSPPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSPPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3711:2: (iv_ruleSPPoint= ruleSPPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3712:2: iv_ruleSPPoint= ruleSPPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSPPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleSPPoint_in_entryRuleSPPoint6134);
+ iv_ruleSPPoint=ruleSPPoint();
+ _fsp--;
+
+ current =iv_ruleSPPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSPPoint6144);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSPPoint
+
+
+ // $ANTLR start ruleSPPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3719:1: ruleSPPoint returns [EObject current=null] : ( ( ( RULE_ID ) ) '.' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleSPPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3724:6: ( ( ( ( RULE_ID ) ) '.' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3725:1: ( ( ( RULE_ID ) ) '.' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3725:1: ( ( ( RULE_ID ) ) '.' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3725:2: ( ( RULE_ID ) ) '.' ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3725:2: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3726:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3726:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3727:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSPPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSPPoint6187);
+
+ createLeafNode(grammarAccess.getSPPointAccess().getRefActorContainerRefCrossReference_0_0(), "ref");
+
+
+ }
+
+
+ }
+
+ match(input,55,FOLLOW_55_in_ruleSPPoint6197);
+
+ createLeafNode(grammarAccess.getSPPointAccess().getFullStopKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3743:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3744:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3744:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3745:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSPPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSPPoint6215);
+
+ createLeafNode(grammarAccess.getSPPointAccess().getServiceSPPRefCrossReference_2_0(), "service");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSPPoint
+
+
+ // $ANTLR start entryRuleActorRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3765:1: entryRuleActorRef returns [EObject current=null] : iv_ruleActorRef= ruleActorRef EOF ;
+ public final EObject entryRuleActorRef() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleActorRef = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3766:2: (iv_ruleActorRef= ruleActorRef EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3767:2: iv_ruleActorRef= ruleActorRef EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getActorRefRule(), currentNode);
+ pushFollow(FOLLOW_ruleActorRef_in_entryRuleActorRef6251);
+ iv_ruleActorRef=ruleActorRef();
+ _fsp--;
+
+ current =iv_ruleActorRef;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleActorRef6261);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleActorRef
+
+
+ // $ANTLR start ruleActorRef
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3774:1: ruleActorRef returns [EObject current=null] : ( 'ActorRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) ;
+ public final EObject ruleActorRef() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3779:6: ( ( 'ActorRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3780:1: ( 'ActorRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3780:1: ( 'ActorRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3780:3: 'ActorRef' ( (lv_name_1_0= RULE_ID ) ) ':' ( ( ruleFQN ) )
+ {
+ match(input,62,FOLLOW_62_in_ruleActorRef6296);
+
+ createLeafNode(grammarAccess.getActorRefAccess().getActorRefKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3784:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3785:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3785:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3786:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActorRef6313);
+
+ createLeafNode(grammarAccess.getActorRefAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleActorRef6328);
+
+ createLeafNode(grammarAccess.getActorRefAccess().getColonKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3812:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3813:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3813:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3814:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getActorRefRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getActorRefAccess().getTypeActorClassCrossReference_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleActorRef6351);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleActorRef
+
+
+ // $ANTLR start entryRuleStateGraphNode
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3836:1: entryRuleStateGraphNode returns [EObject current=null] : iv_ruleStateGraphNode= ruleStateGraphNode EOF ;
+ public final EObject entryRuleStateGraphNode() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleStateGraphNode = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3837:2: (iv_ruleStateGraphNode= ruleStateGraphNode EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3838:2: iv_ruleStateGraphNode= ruleStateGraphNode EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getStateGraphNodeRule(), currentNode);
+ pushFollow(FOLLOW_ruleStateGraphNode_in_entryRuleStateGraphNode6387);
+ iv_ruleStateGraphNode=ruleStateGraphNode();
+ _fsp--;
+
+ current =iv_ruleStateGraphNode;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateGraphNode6397);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleStateGraphNode
+
+
+ // $ANTLR start ruleStateGraphNode
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3845:1: ruleStateGraphNode returns [EObject current=null] : (this_State_0= ruleState | this_ChoicePoint_1= ruleChoicePoint | this_TrPoint_2= ruleTrPoint ) ;
+ public final EObject ruleStateGraphNode() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_State_0 = null;
+
+ EObject this_ChoicePoint_1 = null;
+
+ EObject this_TrPoint_2 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3850:6: ( (this_State_0= ruleState | this_ChoicePoint_1= ruleChoicePoint | this_TrPoint_2= ruleTrPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3851:1: (this_State_0= ruleState | this_ChoicePoint_1= ruleChoicePoint | this_TrPoint_2= ruleTrPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3851:1: (this_State_0= ruleState | this_ChoicePoint_1= ruleChoicePoint | this_TrPoint_2= ruleTrPoint )
+ int alt64=3;
+ switch ( input.LA(1) ) {
+ case 64:
+ case 68:
+ {
+ alt64=1;
+ }
+ break;
+ case 73:
+ {
+ alt64=2;
+ }
+ break;
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ {
+ alt64=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("3851:1: (this_State_0= ruleState | this_ChoicePoint_1= ruleChoicePoint | this_TrPoint_2= ruleTrPoint )", 64, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt64) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3852:5: this_State_0= ruleState
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateGraphNodeAccess().getStateParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleState_in_ruleStateGraphNode6444);
+ this_State_0=ruleState();
+ _fsp--;
+
+
+ current = this_State_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3862:5: this_ChoicePoint_1= ruleChoicePoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateGraphNodeAccess().getChoicePointParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleChoicePoint_in_ruleStateGraphNode6471);
+ this_ChoicePoint_1=ruleChoicePoint();
+ _fsp--;
+
+
+ current = this_ChoicePoint_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3872:5: this_TrPoint_2= ruleTrPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateGraphNodeAccess().getTrPointParserRuleCall_2(), currentNode);
+
+ pushFollow(FOLLOW_ruleTrPoint_in_ruleStateGraphNode6498);
+ this_TrPoint_2=ruleTrPoint();
+ _fsp--;
+
+
+ current = this_TrPoint_2;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleStateGraphNode
+
+
+ // $ANTLR start entryRuleState
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3890:1: entryRuleState returns [EObject current=null] : iv_ruleState= ruleState EOF ;
+ public final EObject entryRuleState() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleState = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3891:2: (iv_ruleState= ruleState EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3892:2: iv_ruleState= ruleState EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getStateRule(), currentNode);
+ pushFollow(FOLLOW_ruleState_in_entryRuleState6535);
+ iv_ruleState=ruleState();
+ _fsp--;
+
+ current =iv_ruleState;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleState6545);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleState
+
+
+ // $ANTLR start ruleState
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3899:1: ruleState returns [EObject current=null] : (this_BaseState_0= ruleBaseState | this_RefinedState_1= ruleRefinedState ) ;
+ public final EObject ruleState() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_BaseState_0 = null;
+
+ EObject this_RefinedState_1 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3904:6: ( (this_BaseState_0= ruleBaseState | this_RefinedState_1= ruleRefinedState ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3905:1: (this_BaseState_0= ruleBaseState | this_RefinedState_1= ruleRefinedState )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3905:1: (this_BaseState_0= ruleBaseState | this_RefinedState_1= ruleRefinedState )
+ int alt65=2;
+ int LA65_0 = input.LA(1);
+
+ if ( (LA65_0==64) ) {
+ alt65=1;
+ }
+ else if ( (LA65_0==68) ) {
+ alt65=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("3905:1: (this_BaseState_0= ruleBaseState | this_RefinedState_1= ruleRefinedState )", 65, 0, input);
+
+ throw nvae;
+ }
+ switch (alt65) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3906:5: this_BaseState_0= ruleBaseState
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateAccess().getBaseStateParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleBaseState_in_ruleState6592);
+ this_BaseState_0=ruleBaseState();
+ _fsp--;
+
+
+ current = this_BaseState_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3916:5: this_RefinedState_1= ruleRefinedState
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateAccess().getRefinedStateParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleRefinedState_in_ruleState6619);
+ this_RefinedState_1=ruleRefinedState();
+ _fsp--;
+
+
+ current = this_RefinedState_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleState
+
+
+ // $ANTLR start entryRuleStateGraph
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3932:1: entryRuleStateGraph returns [EObject current=null] : iv_ruleStateGraph= ruleStateGraph EOF ;
+ public final EObject entryRuleStateGraph() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleStateGraph = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3933:2: (iv_ruleStateGraph= ruleStateGraph EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3934:2: iv_ruleStateGraph= ruleStateGraph EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getStateGraphRule(), currentNode);
+ pushFollow(FOLLOW_ruleStateGraph_in_entryRuleStateGraph6654);
+ iv_ruleStateGraph=ruleStateGraph();
+ _fsp--;
+
+ current =iv_ruleStateGraph;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateGraph6664);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleStateGraph
+
+
+ // $ANTLR start ruleStateGraph
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3941:1: ruleStateGraph returns [EObject current=null] : ( '{' ( ( (lv_states_1_0= ruleState ) ) | ( (lv_trPoints_2_0= ruleTrPoint ) ) | ( (lv_chPoints_3_0= ruleChoicePoint ) ) | ( (lv_transitions_4_0= ruleTransition ) ) )+ '}' ) ;
+ public final EObject ruleStateGraph() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_states_1_0 = null;
+
+ EObject lv_trPoints_2_0 = null;
+
+ EObject lv_chPoints_3_0 = null;
+
+ EObject lv_transitions_4_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3946:6: ( ( '{' ( ( (lv_states_1_0= ruleState ) ) | ( (lv_trPoints_2_0= ruleTrPoint ) ) | ( (lv_chPoints_3_0= ruleChoicePoint ) ) | ( (lv_transitions_4_0= ruleTransition ) ) )+ '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3947:1: ( '{' ( ( (lv_states_1_0= ruleState ) ) | ( (lv_trPoints_2_0= ruleTrPoint ) ) | ( (lv_chPoints_3_0= ruleChoicePoint ) ) | ( (lv_transitions_4_0= ruleTransition ) ) )+ '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3947:1: ( '{' ( ( (lv_states_1_0= ruleState ) ) | ( (lv_trPoints_2_0= ruleTrPoint ) ) | ( (lv_chPoints_3_0= ruleChoicePoint ) ) | ( (lv_transitions_4_0= ruleTransition ) ) )+ '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3947:3: '{' ( ( (lv_states_1_0= ruleState ) ) | ( (lv_trPoints_2_0= ruleTrPoint ) ) | ( (lv_chPoints_3_0= ruleChoicePoint ) ) | ( (lv_transitions_4_0= ruleTransition ) ) )+ '}'
+ {
+ match(input,12,FOLLOW_12_in_ruleStateGraph6699);
+
+ createLeafNode(grammarAccess.getStateGraphAccess().getLeftCurlyBracketKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3951:1: ( ( (lv_states_1_0= ruleState ) ) | ( (lv_trPoints_2_0= ruleTrPoint ) ) | ( (lv_chPoints_3_0= ruleChoicePoint ) ) | ( (lv_transitions_4_0= ruleTransition ) ) )+
+ int cnt66=0;
+ loop66:
+ do {
+ int alt66=5;
+ switch ( input.LA(1) ) {
+ case 64:
+ case 68:
+ {
+ alt66=1;
+ }
+ break;
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ {
+ alt66=2;
+ }
+ break;
+ case 73:
+ {
+ alt66=3;
+ }
+ break;
+ case 74:
+ {
+ alt66=4;
+ }
+ break;
+
+ }
+
+ switch (alt66) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3951:2: ( (lv_states_1_0= ruleState ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3951:2: ( (lv_states_1_0= ruleState ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3952:1: (lv_states_1_0= ruleState )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3952:1: (lv_states_1_0= ruleState )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3953:3: lv_states_1_0= ruleState
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getStatesStateParserRuleCall_1_0_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleState_in_ruleStateGraph6721);
+ lv_states_1_0=ruleState();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "states",
+ lv_states_1_0,
+ "State",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3976:6: ( (lv_trPoints_2_0= ruleTrPoint ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3976:6: ( (lv_trPoints_2_0= ruleTrPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3977:1: (lv_trPoints_2_0= ruleTrPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3977:1: (lv_trPoints_2_0= ruleTrPoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:3978:3: lv_trPoints_2_0= ruleTrPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getTrPointsTrPointParserRuleCall_1_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTrPoint_in_ruleStateGraph6748);
+ lv_trPoints_2_0=ruleTrPoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "trPoints",
+ lv_trPoints_2_0,
+ "TrPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4001:6: ( (lv_chPoints_3_0= ruleChoicePoint ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4001:6: ( (lv_chPoints_3_0= ruleChoicePoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4002:1: (lv_chPoints_3_0= ruleChoicePoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4002:1: (lv_chPoints_3_0= ruleChoicePoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4003:3: lv_chPoints_3_0= ruleChoicePoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getChPointsChoicePointParserRuleCall_1_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleChoicePoint_in_ruleStateGraph6775);
+ lv_chPoints_3_0=ruleChoicePoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "chPoints",
+ lv_chPoints_3_0,
+ "ChoicePoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4026:6: ( (lv_transitions_4_0= ruleTransition ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4026:6: ( (lv_transitions_4_0= ruleTransition ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4027:1: (lv_transitions_4_0= ruleTransition )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4027:1: (lv_transitions_4_0= ruleTransition )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4028:3: lv_transitions_4_0= ruleTransition
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateGraphAccess().getTransitionsTransitionParserRuleCall_1_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransition_in_ruleStateGraph6802);
+ lv_transitions_4_0=ruleTransition();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateGraphRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "transitions",
+ lv_transitions_4_0,
+ "Transition",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt66 >= 1 ) break loop66;
+ EarlyExitException eee =
+ new EarlyExitException(66, input);
+ throw eee;
+ }
+ cnt66++;
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleStateGraph6814);
+
+ createLeafNode(grammarAccess.getStateGraphAccess().getRightCurlyBracketKeyword_2(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleStateGraph
+
+
+ // $ANTLR start entryRuleStateMachine
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4062:1: entryRuleStateMachine returns [EObject current=null] : iv_ruleStateMachine= ruleStateMachine EOF ;
+ public final EObject entryRuleStateMachine() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleStateMachine = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4063:2: (iv_ruleStateMachine= ruleStateMachine EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4064:2: iv_ruleStateMachine= ruleStateMachine EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getStateMachineRule(), currentNode);
+ pushFollow(FOLLOW_ruleStateMachine_in_entryRuleStateMachine6850);
+ iv_ruleStateMachine=ruleStateMachine();
+ _fsp--;
+
+ current =iv_ruleStateMachine;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateMachine6860);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleStateMachine
+
+
+ // $ANTLR start ruleStateMachine
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4071:1: ruleStateMachine returns [EObject current=null] : ( 'StateMachine' '{' ( ( (lv_states_2_0= ruleState ) ) | ( (lv_trPoints_3_0= ruleTrPoint ) ) | ( (lv_chPoints_4_0= ruleChoicePoint ) ) | ( (lv_transitions_5_0= ruleTransition ) ) )+ '}' ) ;
+ public final EObject ruleStateMachine() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_states_2_0 = null;
+
+ EObject lv_trPoints_3_0 = null;
+
+ EObject lv_chPoints_4_0 = null;
+
+ EObject lv_transitions_5_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4076:6: ( ( 'StateMachine' '{' ( ( (lv_states_2_0= ruleState ) ) | ( (lv_trPoints_3_0= ruleTrPoint ) ) | ( (lv_chPoints_4_0= ruleChoicePoint ) ) | ( (lv_transitions_5_0= ruleTransition ) ) )+ '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4077:1: ( 'StateMachine' '{' ( ( (lv_states_2_0= ruleState ) ) | ( (lv_trPoints_3_0= ruleTrPoint ) ) | ( (lv_chPoints_4_0= ruleChoicePoint ) ) | ( (lv_transitions_5_0= ruleTransition ) ) )+ '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4077:1: ( 'StateMachine' '{' ( ( (lv_states_2_0= ruleState ) ) | ( (lv_trPoints_3_0= ruleTrPoint ) ) | ( (lv_chPoints_4_0= ruleChoicePoint ) ) | ( (lv_transitions_5_0= ruleTransition ) ) )+ '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4077:3: 'StateMachine' '{' ( ( (lv_states_2_0= ruleState ) ) | ( (lv_trPoints_3_0= ruleTrPoint ) ) | ( (lv_chPoints_4_0= ruleChoicePoint ) ) | ( (lv_transitions_5_0= ruleTransition ) ) )+ '}'
+ {
+ match(input,63,FOLLOW_63_in_ruleStateMachine6895);
+
+ createLeafNode(grammarAccess.getStateMachineAccess().getStateMachineKeyword_0(), null);
+
+ match(input,12,FOLLOW_12_in_ruleStateMachine6905);
+
+ createLeafNode(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4085:1: ( ( (lv_states_2_0= ruleState ) ) | ( (lv_trPoints_3_0= ruleTrPoint ) ) | ( (lv_chPoints_4_0= ruleChoicePoint ) ) | ( (lv_transitions_5_0= ruleTransition ) ) )+
+ int cnt67=0;
+ loop67:
+ do {
+ int alt67=5;
+ switch ( input.LA(1) ) {
+ case 64:
+ case 68:
+ {
+ alt67=1;
+ }
+ break;
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ {
+ alt67=2;
+ }
+ break;
+ case 73:
+ {
+ alt67=3;
+ }
+ break;
+ case 74:
+ {
+ alt67=4;
+ }
+ break;
+
+ }
+
+ switch (alt67) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4085:2: ( (lv_states_2_0= ruleState ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4085:2: ( (lv_states_2_0= ruleState ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4086:1: (lv_states_2_0= ruleState )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4086:1: (lv_states_2_0= ruleState )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4087:3: lv_states_2_0= ruleState
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getStatesStateParserRuleCall_2_0_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleState_in_ruleStateMachine6927);
+ lv_states_2_0=ruleState();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "states",
+ lv_states_2_0,
+ "State",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4110:6: ( (lv_trPoints_3_0= ruleTrPoint ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4110:6: ( (lv_trPoints_3_0= ruleTrPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4111:1: (lv_trPoints_3_0= ruleTrPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4111:1: (lv_trPoints_3_0= ruleTrPoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4112:3: lv_trPoints_3_0= ruleTrPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getTrPointsTrPointParserRuleCall_2_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTrPoint_in_ruleStateMachine6954);
+ lv_trPoints_3_0=ruleTrPoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "trPoints",
+ lv_trPoints_3_0,
+ "TrPoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4135:6: ( (lv_chPoints_4_0= ruleChoicePoint ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4135:6: ( (lv_chPoints_4_0= ruleChoicePoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4136:1: (lv_chPoints_4_0= ruleChoicePoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4136:1: (lv_chPoints_4_0= ruleChoicePoint )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4137:3: lv_chPoints_4_0= ruleChoicePoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getChPointsChoicePointParserRuleCall_2_2_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleChoicePoint_in_ruleStateMachine6981);
+ lv_chPoints_4_0=ruleChoicePoint();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "chPoints",
+ lv_chPoints_4_0,
+ "ChoicePoint",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4160:6: ( (lv_transitions_5_0= ruleTransition ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4160:6: ( (lv_transitions_5_0= ruleTransition ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4161:1: (lv_transitions_5_0= ruleTransition )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4161:1: (lv_transitions_5_0= ruleTransition )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4162:3: lv_transitions_5_0= ruleTransition
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_2_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransition_in_ruleStateMachine7008);
+ lv_transitions_5_0=ruleTransition();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateMachineRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "transitions",
+ lv_transitions_5_0,
+ "Transition",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt67 >= 1 ) break loop67;
+ EarlyExitException eee =
+ new EarlyExitException(67, input);
+ throw eee;
+ }
+ cnt67++;
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleStateMachine7020);
+
+ createLeafNode(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_3(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleStateMachine
+
+
+ // $ANTLR start entryRuleBaseState
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4196:1: entryRuleBaseState returns [EObject current=null] : iv_ruleBaseState= ruleBaseState EOF ;
+ public final EObject entryRuleBaseState() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleBaseState = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4197:2: (iv_ruleBaseState= ruleBaseState EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4198:2: iv_ruleBaseState= ruleBaseState EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getBaseStateRule(), currentNode);
+ pushFollow(FOLLOW_ruleBaseState_in_entryRuleBaseState7056);
+ iv_ruleBaseState=ruleBaseState();
+ _fsp--;
+
+ current =iv_ruleBaseState;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBaseState7066);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleBaseState
+
+
+ // $ANTLR start ruleBaseState
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4205:1: ruleBaseState returns [EObject current=null] : ( 'State' ( (lv_name_1_0= RULE_ID ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' ) ;
+ public final EObject ruleBaseState() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_entryCode_4_0 = null;
+
+ EObject lv_exitCode_6_0 = null;
+
+ EObject lv_subgraph_8_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4210:6: ( ( 'State' ( (lv_name_1_0= RULE_ID ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4211:1: ( 'State' ( (lv_name_1_0= RULE_ID ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4211:1: ( 'State' ( (lv_name_1_0= RULE_ID ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4211:3: 'State' ( (lv_name_1_0= RULE_ID ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}'
+ {
+ match(input,64,FOLLOW_64_in_ruleBaseState7101);
+
+ createLeafNode(grammarAccess.getBaseStateAccess().getStateKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4215:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4216:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4216:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4217:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBaseState7118);
+
+ createLeafNode(grammarAccess.getBaseStateAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleBaseState7133);
+
+ createLeafNode(grammarAccess.getBaseStateAccess().getLeftCurlyBracketKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4243:1: ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )?
+ int alt68=2;
+ int LA68_0 = input.LA(1);
+
+ if ( (LA68_0==65) ) {
+ alt68=1;
+ }
+ switch (alt68) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4243:3: 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) )
+ {
+ match(input,65,FOLLOW_65_in_ruleBaseState7144);
+
+ createLeafNode(grammarAccess.getBaseStateAccess().getEntryKeyword_3_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4247:1: ( (lv_entryCode_4_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4248:1: (lv_entryCode_4_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4248:1: (lv_entryCode_4_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4249:3: lv_entryCode_4_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getBaseStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleBaseState7165);
+ lv_entryCode_4_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "entryCode",
+ lv_entryCode_4_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4271:4: ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )?
+ int alt69=2;
+ int LA69_0 = input.LA(1);
+
+ if ( (LA69_0==66) ) {
+ alt69=1;
+ }
+ switch (alt69) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4271:6: 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) )
+ {
+ match(input,66,FOLLOW_66_in_ruleBaseState7178);
+
+ createLeafNode(grammarAccess.getBaseStateAccess().getExitKeyword_4_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4275:1: ( (lv_exitCode_6_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4276:1: (lv_exitCode_6_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4276:1: (lv_exitCode_6_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4277:3: lv_exitCode_6_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getBaseStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleBaseState7199);
+ lv_exitCode_6_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "exitCode",
+ lv_exitCode_6_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4299:4: ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )?
+ int alt70=2;
+ int LA70_0 = input.LA(1);
+
+ if ( (LA70_0==67) ) {
+ alt70=1;
+ }
+ switch (alt70) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4299:6: 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) )
+ {
+ match(input,67,FOLLOW_67_in_ruleBaseState7212);
+
+ createLeafNode(grammarAccess.getBaseStateAccess().getSubgraphKeyword_5_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4303:1: ( (lv_subgraph_8_0= ruleStateGraph ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4304:1: (lv_subgraph_8_0= ruleStateGraph )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4304:1: (lv_subgraph_8_0= ruleStateGraph )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4305:3: lv_subgraph_8_0= ruleStateGraph
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getBaseStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleStateGraph_in_ruleBaseState7233);
+ lv_subgraph_8_0=ruleStateGraph();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getBaseStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "subgraph",
+ lv_subgraph_8_0,
+ "StateGraph",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleBaseState7245);
+
+ createLeafNode(grammarAccess.getBaseStateAccess().getRightCurlyBracketKeyword_6(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleBaseState
+
+
+ // $ANTLR start entryRuleRefinedState
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4339:1: entryRuleRefinedState returns [EObject current=null] : iv_ruleRefinedState= ruleRefinedState EOF ;
+ public final EObject entryRuleRefinedState() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleRefinedState = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4340:2: (iv_ruleRefinedState= ruleRefinedState EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4341:2: iv_ruleRefinedState= ruleRefinedState EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getRefinedStateRule(), currentNode);
+ pushFollow(FOLLOW_ruleRefinedState_in_entryRuleRefinedState7281);
+ iv_ruleRefinedState=ruleRefinedState();
+ _fsp--;
+
+ current =iv_ruleRefinedState;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleRefinedState7291);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleRefinedState
+
+
+ // $ANTLR start ruleRefinedState
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4348:1: ruleRefinedState returns [EObject current=null] : ( 'RefinedState' ( ( ruleFQN ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' ) ;
+ public final EObject ruleRefinedState() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_entryCode_4_0 = null;
+
+ EObject lv_exitCode_6_0 = null;
+
+ EObject lv_subgraph_8_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4353:6: ( ( 'RefinedState' ( ( ruleFQN ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4354:1: ( 'RefinedState' ( ( ruleFQN ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4354:1: ( 'RefinedState' ( ( ruleFQN ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4354:3: 'RefinedState' ( ( ruleFQN ) ) '{' ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )? ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )? ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )? '}'
+ {
+ match(input,68,FOLLOW_68_in_ruleRefinedState7326);
+
+ createLeafNode(grammarAccess.getRefinedStateAccess().getRefinedStateKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4358:1: ( ( ruleFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4359:1: ( ruleFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4359:1: ( ruleFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4360:3: ruleFQN
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getBaseBaseStateCrossReference_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleRefinedState7349);
+ ruleFQN();
+ _fsp--;
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleRefinedState7359);
+
+ createLeafNode(grammarAccess.getRefinedStateAccess().getLeftCurlyBracketKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4378:1: ( 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) ) )?
+ int alt71=2;
+ int LA71_0 = input.LA(1);
+
+ if ( (LA71_0==65) ) {
+ alt71=1;
+ }
+ switch (alt71) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4378:3: 'entry' ( (lv_entryCode_4_0= ruleDetailCode ) )
+ {
+ match(input,65,FOLLOW_65_in_ruleRefinedState7370);
+
+ createLeafNode(grammarAccess.getRefinedStateAccess().getEntryKeyword_3_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4382:1: ( (lv_entryCode_4_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4383:1: (lv_entryCode_4_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4383:1: (lv_entryCode_4_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4384:3: lv_entryCode_4_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getEntryCodeDetailCodeParserRuleCall_3_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleRefinedState7391);
+ lv_entryCode_4_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "entryCode",
+ lv_entryCode_4_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4406:4: ( 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) ) )?
+ int alt72=2;
+ int LA72_0 = input.LA(1);
+
+ if ( (LA72_0==66) ) {
+ alt72=1;
+ }
+ switch (alt72) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4406:6: 'exit' ( (lv_exitCode_6_0= ruleDetailCode ) )
+ {
+ match(input,66,FOLLOW_66_in_ruleRefinedState7404);
+
+ createLeafNode(grammarAccess.getRefinedStateAccess().getExitKeyword_4_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4410:1: ( (lv_exitCode_6_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4411:1: (lv_exitCode_6_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4411:1: (lv_exitCode_6_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4412:3: lv_exitCode_6_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getExitCodeDetailCodeParserRuleCall_4_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleRefinedState7425);
+ lv_exitCode_6_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "exitCode",
+ lv_exitCode_6_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4434:4: ( 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) ) )?
+ int alt73=2;
+ int LA73_0 = input.LA(1);
+
+ if ( (LA73_0==67) ) {
+ alt73=1;
+ }
+ switch (alt73) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4434:6: 'subgraph' ( (lv_subgraph_8_0= ruleStateGraph ) )
+ {
+ match(input,67,FOLLOW_67_in_ruleRefinedState7438);
+
+ createLeafNode(grammarAccess.getRefinedStateAccess().getSubgraphKeyword_5_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4438:1: ( (lv_subgraph_8_0= ruleStateGraph ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4439:1: (lv_subgraph_8_0= ruleStateGraph )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4439:1: (lv_subgraph_8_0= ruleStateGraph )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4440:3: lv_subgraph_8_0= ruleStateGraph
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getRefinedStateAccess().getSubgraphStateGraphParserRuleCall_5_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleStateGraph_in_ruleRefinedState7459);
+ lv_subgraph_8_0=ruleStateGraph();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getRefinedStateRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "subgraph",
+ lv_subgraph_8_0,
+ "StateGraph",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleRefinedState7471);
+
+ createLeafNode(grammarAccess.getRefinedStateAccess().getRightCurlyBracketKeyword_6(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleRefinedState
+
+
+ // $ANTLR start entryRuleDetailCode
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4474:1: entryRuleDetailCode returns [EObject current=null] : iv_ruleDetailCode= ruleDetailCode EOF ;
+ public final EObject entryRuleDetailCode() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDetailCode = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4475:2: (iv_ruleDetailCode= ruleDetailCode EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4476:2: iv_ruleDetailCode= ruleDetailCode EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getDetailCodeRule(), currentNode);
+ pushFollow(FOLLOW_ruleDetailCode_in_entryRuleDetailCode7507);
+ iv_ruleDetailCode=ruleDetailCode();
+ _fsp--;
+
+ current =iv_ruleDetailCode;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDetailCode7517);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleDetailCode
+
+
+ // $ANTLR start ruleDetailCode
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4483:1: ruleDetailCode returns [EObject current=null] : ( '{' ( (lv_commands_1_0= RULE_STRING ) )+ '}' ) ;
+ public final EObject ruleDetailCode() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_commands_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4488:6: ( ( '{' ( (lv_commands_1_0= RULE_STRING ) )+ '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4489:1: ( '{' ( (lv_commands_1_0= RULE_STRING ) )+ '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4489:1: ( '{' ( (lv_commands_1_0= RULE_STRING ) )+ '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4489:3: '{' ( (lv_commands_1_0= RULE_STRING ) )+ '}'
+ {
+ match(input,12,FOLLOW_12_in_ruleDetailCode7552);
+
+ createLeafNode(grammarAccess.getDetailCodeAccess().getLeftCurlyBracketKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4493:1: ( (lv_commands_1_0= RULE_STRING ) )+
+ int cnt74=0;
+ loop74:
+ do {
+ int alt74=2;
+ int LA74_0 = input.LA(1);
+
+ if ( (LA74_0==RULE_STRING) ) {
+ alt74=1;
+ }
+
+
+ switch (alt74) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4494:1: (lv_commands_1_0= RULE_STRING )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4494:1: (lv_commands_1_0= RULE_STRING )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4495:3: lv_commands_1_0= RULE_STRING
+ {
+ lv_commands_1_0=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDetailCode7569);
+
+ createLeafNode(grammarAccess.getDetailCodeAccess().getCommandsSTRINGTerminalRuleCall_1_0(), "commands");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getDetailCodeRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ add(
+ current,
+ "commands",
+ lv_commands_1_0,
+ "STRING",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt74 >= 1 ) break loop74;
+ EarlyExitException eee =
+ new EarlyExitException(74, input);
+ throw eee;
+ }
+ cnt74++;
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleDetailCode7585);
+
+ createLeafNode(grammarAccess.getDetailCodeAccess().getRightCurlyBracketKeyword_2(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleDetailCode
+
+
+ // $ANTLR start entryRuleTrPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4529:1: entryRuleTrPoint returns [EObject current=null] : iv_ruleTrPoint= ruleTrPoint EOF ;
+ public final EObject entryRuleTrPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTrPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4530:2: (iv_ruleTrPoint= ruleTrPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4531:2: iv_ruleTrPoint= ruleTrPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTrPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleTrPoint_in_entryRuleTrPoint7621);
+ iv_ruleTrPoint=ruleTrPoint();
+ _fsp--;
+
+ current =iv_ruleTrPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTrPoint7631);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTrPoint
+
+
+ // $ANTLR start ruleTrPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4538:1: ruleTrPoint returns [EObject current=null] : (this_TransitionPoint_0= ruleTransitionPoint | this_EntryPoint_1= ruleEntryPoint | this_ExitPoint_2= ruleExitPoint ) ;
+ public final EObject ruleTrPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_TransitionPoint_0 = null;
+
+ EObject this_EntryPoint_1 = null;
+
+ EObject this_ExitPoint_2 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4543:6: ( (this_TransitionPoint_0= ruleTransitionPoint | this_EntryPoint_1= ruleEntryPoint | this_ExitPoint_2= ruleExitPoint ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4544:1: (this_TransitionPoint_0= ruleTransitionPoint | this_EntryPoint_1= ruleEntryPoint | this_ExitPoint_2= ruleExitPoint )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4544:1: (this_TransitionPoint_0= ruleTransitionPoint | this_EntryPoint_1= ruleEntryPoint | this_ExitPoint_2= ruleExitPoint )
+ int alt75=3;
+ switch ( input.LA(1) ) {
+ case 69:
+ case 70:
+ {
+ alt75=1;
+ }
+ break;
+ case 71:
+ {
+ alt75=2;
+ }
+ break;
+ case 72:
+ {
+ alt75=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4544:1: (this_TransitionPoint_0= ruleTransitionPoint | this_EntryPoint_1= ruleEntryPoint | this_ExitPoint_2= ruleExitPoint )", 75, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt75) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4545:5: this_TransitionPoint_0= ruleTransitionPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTrPointAccess().getTransitionPointParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionPoint_in_ruleTrPoint7678);
+ this_TransitionPoint_0=ruleTransitionPoint();
+ _fsp--;
+
+
+ current = this_TransitionPoint_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4555:5: this_EntryPoint_1= ruleEntryPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTrPointAccess().getEntryPointParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleEntryPoint_in_ruleTrPoint7705);
+ this_EntryPoint_1=ruleEntryPoint();
+ _fsp--;
+
+
+ current = this_EntryPoint_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4565:5: this_ExitPoint_2= ruleExitPoint
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTrPointAccess().getExitPointParserRuleCall_2(), currentNode);
+
+ pushFollow(FOLLOW_ruleExitPoint_in_ruleTrPoint7732);
+ this_ExitPoint_2=ruleExitPoint();
+ _fsp--;
+
+
+ current = this_ExitPoint_2;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTrPoint
+
+
+ // $ANTLR start entryRuleTransitionPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4581:1: entryRuleTransitionPoint returns [EObject current=null] : iv_ruleTransitionPoint= ruleTransitionPoint EOF ;
+ public final EObject entryRuleTransitionPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTransitionPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4582:2: (iv_ruleTransitionPoint= ruleTransitionPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4583:2: iv_ruleTransitionPoint= ruleTransitionPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTransitionPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleTransitionPoint_in_entryRuleTransitionPoint7767);
+ iv_ruleTransitionPoint=ruleTransitionPoint();
+ _fsp--;
+
+ current =iv_ruleTransitionPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransitionPoint7777);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTransitionPoint
+
+
+ // $ANTLR start ruleTransitionPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4590:1: ruleTransitionPoint returns [EObject current=null] : ( ( (lv_handler_0_0= 'handler' ) )? 'TransitionPoint' ( (lv_name_2_0= RULE_ID ) ) ) ;
+ public final EObject ruleTransitionPoint() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_handler_0_0=null;
+ Token lv_name_2_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4595:6: ( ( ( (lv_handler_0_0= 'handler' ) )? 'TransitionPoint' ( (lv_name_2_0= RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4596:1: ( ( (lv_handler_0_0= 'handler' ) )? 'TransitionPoint' ( (lv_name_2_0= RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4596:1: ( ( (lv_handler_0_0= 'handler' ) )? 'TransitionPoint' ( (lv_name_2_0= RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4596:2: ( (lv_handler_0_0= 'handler' ) )? 'TransitionPoint' ( (lv_name_2_0= RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4596:2: ( (lv_handler_0_0= 'handler' ) )?
+ int alt76=2;
+ int LA76_0 = input.LA(1);
+
+ if ( (LA76_0==69) ) {
+ alt76=1;
+ }
+ switch (alt76) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4597:1: (lv_handler_0_0= 'handler' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4597:1: (lv_handler_0_0= 'handler' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4598:3: lv_handler_0_0= 'handler'
+ {
+ lv_handler_0_0=(Token)input.LT(1);
+ match(input,69,FOLLOW_69_in_ruleTransitionPoint7820);
+
+ createLeafNode(grammarAccess.getTransitionPointAccess().getHandlerHandlerKeyword_0_0(), "handler");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTransitionPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ set(current, "handler", true, "handler", lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,70,FOLLOW_70_in_ruleTransitionPoint7844);
+
+ createLeafNode(grammarAccess.getTransitionPointAccess().getTransitionPointKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4621:1: ( (lv_name_2_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4622:1: (lv_name_2_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4622:1: (lv_name_2_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4623:3: lv_name_2_0= RULE_ID
+ {
+ lv_name_2_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTransitionPoint7861);
+
+ createLeafNode(grammarAccess.getTransitionPointAccess().getNameIDTerminalRuleCall_2_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTransitionPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_2_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTransitionPoint
+
+
+ // $ANTLR start entryRuleEntryPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4653:1: entryRuleEntryPoint returns [EObject current=null] : iv_ruleEntryPoint= ruleEntryPoint EOF ;
+ public final EObject entryRuleEntryPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEntryPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4654:2: (iv_ruleEntryPoint= ruleEntryPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4655:2: iv_ruleEntryPoint= ruleEntryPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getEntryPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleEntryPoint_in_entryRuleEntryPoint7902);
+ iv_ruleEntryPoint=ruleEntryPoint();
+ _fsp--;
+
+ current =iv_ruleEntryPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEntryPoint7912);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEntryPoint
+
+
+ // $ANTLR start ruleEntryPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4662:1: ruleEntryPoint returns [EObject current=null] : ( 'EntryPoint' ( (lv_name_1_0= RULE_ID ) ) ) ;
+ public final EObject ruleEntryPoint() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4667:6: ( ( 'EntryPoint' ( (lv_name_1_0= RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4668:1: ( 'EntryPoint' ( (lv_name_1_0= RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4668:1: ( 'EntryPoint' ( (lv_name_1_0= RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4668:3: 'EntryPoint' ( (lv_name_1_0= RULE_ID ) )
+ {
+ match(input,71,FOLLOW_71_in_ruleEntryPoint7947);
+
+ createLeafNode(grammarAccess.getEntryPointAccess().getEntryPointKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4672:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4673:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4673:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4674:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntryPoint7964);
+
+ createLeafNode(grammarAccess.getEntryPointAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getEntryPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEntryPoint
+
+
+ // $ANTLR start entryRuleExitPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4704:1: entryRuleExitPoint returns [EObject current=null] : iv_ruleExitPoint= ruleExitPoint EOF ;
+ public final EObject entryRuleExitPoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleExitPoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4705:2: (iv_ruleExitPoint= ruleExitPoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4706:2: iv_ruleExitPoint= ruleExitPoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getExitPointRule(), currentNode);
+ pushFollow(FOLLOW_ruleExitPoint_in_entryRuleExitPoint8005);
+ iv_ruleExitPoint=ruleExitPoint();
+ _fsp--;
+
+ current =iv_ruleExitPoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleExitPoint8015);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleExitPoint
+
+
+ // $ANTLR start ruleExitPoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4713:1: ruleExitPoint returns [EObject current=null] : ( 'ExitPoint' ( (lv_name_1_0= RULE_ID ) ) ) ;
+ public final EObject ruleExitPoint() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4718:6: ( ( 'ExitPoint' ( (lv_name_1_0= RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4719:1: ( 'ExitPoint' ( (lv_name_1_0= RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4719:1: ( 'ExitPoint' ( (lv_name_1_0= RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4719:3: 'ExitPoint' ( (lv_name_1_0= RULE_ID ) )
+ {
+ match(input,72,FOLLOW_72_in_ruleExitPoint8050);
+
+ createLeafNode(grammarAccess.getExitPointAccess().getExitPointKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4723:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4724:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4724:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4725:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExitPoint8067);
+
+ createLeafNode(grammarAccess.getExitPointAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getExitPointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleExitPoint
+
+
+ // $ANTLR start entryRuleChoicePoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4755:1: entryRuleChoicePoint returns [EObject current=null] : iv_ruleChoicePoint= ruleChoicePoint EOF ;
+ public final EObject entryRuleChoicePoint() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleChoicePoint = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4756:2: (iv_ruleChoicePoint= ruleChoicePoint EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4757:2: iv_ruleChoicePoint= ruleChoicePoint EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getChoicePointRule(), currentNode);
+ pushFollow(FOLLOW_ruleChoicePoint_in_entryRuleChoicePoint8108);
+ iv_ruleChoicePoint=ruleChoicePoint();
+ _fsp--;
+
+ current =iv_ruleChoicePoint;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleChoicePoint8118);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleChoicePoint
+
+
+ // $ANTLR start ruleChoicePoint
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4764:1: ruleChoicePoint returns [EObject current=null] : ( 'ChoicePoint' ( (lv_name_1_0= RULE_ID ) ) ) ;
+ public final EObject ruleChoicePoint() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4769:6: ( ( 'ChoicePoint' ( (lv_name_1_0= RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4770:1: ( 'ChoicePoint' ( (lv_name_1_0= RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4770:1: ( 'ChoicePoint' ( (lv_name_1_0= RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4770:3: 'ChoicePoint' ( (lv_name_1_0= RULE_ID ) )
+ {
+ match(input,73,FOLLOW_73_in_ruleChoicePoint8153);
+
+ createLeafNode(grammarAccess.getChoicePointAccess().getChoicePointKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4774:1: ( (lv_name_1_0= RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4775:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4775:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4776:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChoicePoint8170);
+
+ createLeafNode(grammarAccess.getChoicePointAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getChoicePointRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleChoicePoint
+
+
+ // $ANTLR start entryRuleTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4806:1: entryRuleTransition returns [EObject current=null] : iv_ruleTransition= ruleTransition EOF ;
+ public final EObject entryRuleTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTransition = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4807:2: (iv_ruleTransition= ruleTransition EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4808:2: iv_ruleTransition= ruleTransition EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTransitionRule(), currentNode);
+ pushFollow(FOLLOW_ruleTransition_in_entryRuleTransition8211);
+ iv_ruleTransition=ruleTransition();
+ _fsp--;
+
+ current =iv_ruleTransition;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransition8221);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTransition
+
+
+ // $ANTLR start ruleTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4815:1: ruleTransition returns [EObject current=null] : (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition ) ;
+ public final EObject ruleTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_InitialTransition_0 = null;
+
+ EObject this_NonInitialTransition_1 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4820:6: ( (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4821:1: (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4821:1: (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition )
+ int alt77=2;
+ int LA77_0 = input.LA(1);
+
+ if ( (LA77_0==74) ) {
+ int LA77_1 = input.LA(2);
+
+ if ( (LA77_1==RULE_ID) ) {
+ int LA77_2 = input.LA(3);
+
+ if ( (LA77_2==14) ) {
+ int LA77_3 = input.LA(4);
+
+ if ( (LA77_3==75) ) {
+ alt77=1;
+ }
+ else if ( (LA77_3==RULE_ID||(LA77_3>=80 && LA77_3<=81)) ) {
+ alt77=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4821:1: (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition )", 77, 3, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4821:1: (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition )", 77, 2, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA77_1==14) ) {
+ int LA77_3 = input.LA(3);
+
+ if ( (LA77_3==75) ) {
+ alt77=1;
+ }
+ else if ( (LA77_3==RULE_ID||(LA77_3>=80 && LA77_3<=81)) ) {
+ alt77=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4821:1: (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition )", 77, 3, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4821:1: (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition )", 77, 1, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4821:1: (this_InitialTransition_0= ruleInitialTransition | this_NonInitialTransition_1= ruleNonInitialTransition )", 77, 0, input);
+
+ throw nvae;
+ }
+ switch (alt77) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4822:5: this_InitialTransition_0= ruleInitialTransition
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTransitionAccess().getInitialTransitionParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleInitialTransition_in_ruleTransition8268);
+ this_InitialTransition_0=ruleInitialTransition();
+ _fsp--;
+
+
+ current = this_InitialTransition_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4832:5: this_NonInitialTransition_1= ruleNonInitialTransition
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTransitionAccess().getNonInitialTransitionParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleNonInitialTransition_in_ruleTransition8295);
+ this_NonInitialTransition_1=ruleNonInitialTransition();
+ _fsp--;
+
+
+ current = this_NonInitialTransition_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTransition
+
+
+ // $ANTLR start entryRuleNonInitialTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4848:1: entryRuleNonInitialTransition returns [EObject current=null] : iv_ruleNonInitialTransition= ruleNonInitialTransition EOF ;
+ public final EObject entryRuleNonInitialTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleNonInitialTransition = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4849:2: (iv_ruleNonInitialTransition= ruleNonInitialTransition EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4850:2: iv_ruleNonInitialTransition= ruleNonInitialTransition EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getNonInitialTransitionRule(), currentNode);
+ pushFollow(FOLLOW_ruleNonInitialTransition_in_entryRuleNonInitialTransition8330);
+ iv_ruleNonInitialTransition=ruleNonInitialTransition();
+ _fsp--;
+
+ current =iv_ruleNonInitialTransition;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleNonInitialTransition8340);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleNonInitialTransition
+
+
+ // $ANTLR start ruleNonInitialTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4857:1: ruleNonInitialTransition returns [EObject current=null] : (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition ) ;
+ public final EObject ruleNonInitialTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_TriggeredTransition_0 = null;
+
+ EObject this_ContinuationTransition_1 = null;
+
+ EObject this_CPBranchTransition_2 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4862:6: ( (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )
+ int alt78=3;
+ int LA78_0 = input.LA(1);
+
+ if ( (LA78_0==74) ) {
+ int LA78_1 = input.LA(2);
+
+ if ( (LA78_1==RULE_ID) ) {
+ int LA78_2 = input.LA(3);
+
+ if ( (LA78_2==14) ) {
+ switch ( input.LA(4) ) {
+ case RULE_ID:
+ {
+ int LA78_4 = input.LA(5);
+
+ if ( (LA78_4==50) ) {
+ int LA78_7 = input.LA(6);
+
+ if ( (LA78_7==RULE_ID) ) {
+ int LA78_11 = input.LA(7);
+
+ if ( (LA78_11==37) ) {
+ switch ( input.LA(8) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(9);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(10);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(11);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(12) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(9);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(10);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(11) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(9);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(10);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(11) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 11, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 7, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_4==37) ) {
+ switch ( input.LA(6) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(7);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(8);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(9);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(8) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(7);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(8);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(7);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(8);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 4, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_5 = input.LA(5);
+
+ if ( (LA78_5==RULE_ID) ) {
+ int LA78_9 = input.LA(6);
+
+ if ( (LA78_9==37) ) {
+ switch ( input.LA(7) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(8);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(9);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(10);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(11) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(8);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(9);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(8);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(9);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 9, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 5, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_6 = input.LA(5);
+
+ if ( (LA78_6==RULE_ID) ) {
+ int LA78_10 = input.LA(6);
+
+ if ( (LA78_10==37) ) {
+ switch ( input.LA(7) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(8);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(9);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(10);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(11) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(8);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(9);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(8);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(9);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 10, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 6, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 3, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 2, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_1==14) ) {
+ switch ( input.LA(3) ) {
+ case RULE_ID:
+ {
+ int LA78_4 = input.LA(4);
+
+ if ( (LA78_4==50) ) {
+ int LA78_7 = input.LA(5);
+
+ if ( (LA78_7==RULE_ID) ) {
+ int LA78_11 = input.LA(6);
+
+ if ( (LA78_11==37) ) {
+ switch ( input.LA(7) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(8);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(9);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(10);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(11) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(8);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(9);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(8);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(9);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 11, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 7, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_4==37) ) {
+ switch ( input.LA(5) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(6);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(7);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(8);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(7) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(6);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(7);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(8) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(6);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(7);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(8) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 4, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_5 = input.LA(4);
+
+ if ( (LA78_5==RULE_ID) ) {
+ int LA78_9 = input.LA(5);
+
+ if ( (LA78_9==37) ) {
+ switch ( input.LA(6) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(7);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(8);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(9);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(8) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(7);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(8);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(7);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(8);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 9, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 5, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_6 = input.LA(4);
+
+ if ( (LA78_6==RULE_ID) ) {
+ int LA78_10 = input.LA(5);
+
+ if ( (LA78_10==37) ) {
+ switch ( input.LA(6) ) {
+ case RULE_ID:
+ {
+ int LA78_12 = input.LA(7);
+
+ if ( (LA78_12==50) ) {
+ int LA78_15 = input.LA(8);
+
+ if ( (LA78_15==RULE_ID) ) {
+ int LA78_19 = input.LA(9);
+
+ if ( (LA78_19==12) ) {
+ switch ( input.LA(10) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 19, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 15, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA78_12==12) ) {
+ switch ( input.LA(8) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 12, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA78_13 = input.LA(7);
+
+ if ( (LA78_13==RULE_ID) ) {
+ int LA78_17 = input.LA(8);
+
+ if ( (LA78_17==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 17, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 13, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 81:
+ {
+ int LA78_14 = input.LA(7);
+
+ if ( (LA78_14==RULE_ID) ) {
+ int LA78_18 = input.LA(8);
+
+ if ( (LA78_18==12) ) {
+ switch ( input.LA(9) ) {
+ case 77:
+ {
+ alt78=1;
+ }
+ break;
+ case 79:
+ {
+ alt78=3;
+ }
+ break;
+ case 13:
+ case 76:
+ {
+ alt78=2;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 16, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 18, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 14, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 8, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 10, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 6, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 3, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 1, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("4863:1: (this_TriggeredTransition_0= ruleTriggeredTransition | this_ContinuationTransition_1= ruleContinuationTransition | this_CPBranchTransition_2= ruleCPBranchTransition )", 78, 0, input);
+
+ throw nvae;
+ }
+ switch (alt78) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4864:5: this_TriggeredTransition_0= ruleTriggeredTransition
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getNonInitialTransitionAccess().getTriggeredTransitionParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTriggeredTransition_in_ruleNonInitialTransition8387);
+ this_TriggeredTransition_0=ruleTriggeredTransition();
+ _fsp--;
+
+
+ current = this_TriggeredTransition_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4874:5: this_ContinuationTransition_1= ruleContinuationTransition
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getNonInitialTransitionAccess().getContinuationTransitionParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleContinuationTransition_in_ruleNonInitialTransition8414);
+ this_ContinuationTransition_1=ruleContinuationTransition();
+ _fsp--;
+
+
+ current = this_ContinuationTransition_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4884:5: this_CPBranchTransition_2= ruleCPBranchTransition
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getNonInitialTransitionAccess().getCPBranchTransitionParserRuleCall_2(), currentNode);
+
+ pushFollow(FOLLOW_ruleCPBranchTransition_in_ruleNonInitialTransition8441);
+ this_CPBranchTransition_2=ruleCPBranchTransition();
+ _fsp--;
+
+
+ current = this_CPBranchTransition_2;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleNonInitialTransition
+
+
+ // $ANTLR start entryRuleInitialTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4900:1: entryRuleInitialTransition returns [EObject current=null] : iv_ruleInitialTransition= ruleInitialTransition EOF ;
+ public final EObject entryRuleInitialTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleInitialTransition = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4901:2: (iv_ruleInitialTransition= ruleInitialTransition EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4902:2: iv_ruleInitialTransition= ruleInitialTransition EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getInitialTransitionRule(), currentNode);
+ pushFollow(FOLLOW_ruleInitialTransition_in_entryRuleInitialTransition8476);
+ iv_ruleInitialTransition=ruleInitialTransition();
+ _fsp--;
+
+ current =iv_ruleInitialTransition;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleInitialTransition8486);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleInitialTransition
+
+
+ // $ANTLR start ruleInitialTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4909:1: ruleInitialTransition returns [EObject current=null] : ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' 'initial' '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' ) ;
+ public final EObject ruleInitialTransition() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_to_5_0 = null;
+
+ EObject lv_action_8_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4914:6: ( ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' 'initial' '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4915:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' 'initial' '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4915:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' 'initial' '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4915:3: 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' 'initial' '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}'
+ {
+ match(input,74,FOLLOW_74_in_ruleInitialTransition8521);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getTransitionKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4919:1: ( (lv_name_1_0= RULE_ID ) )?
+ int alt79=2;
+ int LA79_0 = input.LA(1);
+
+ if ( (LA79_0==RULE_ID) ) {
+ alt79=1;
+ }
+ switch (alt79) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4920:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4920:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4921:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleInitialTransition8538);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getInitialTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleInitialTransition8554);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getColonKeyword_2(), null);
+
+ match(input,75,FOLLOW_75_in_ruleInitialTransition8564);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getInitialKeyword_3(), null);
+
+ match(input,37,FOLLOW_37_in_ruleInitialTransition8574);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4955:1: ( (lv_to_5_0= ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4956:1: (lv_to_5_0= ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4956:1: (lv_to_5_0= ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4957:3: lv_to_5_0= ruleTransitionTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getInitialTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_ruleInitialTransition8595);
+ lv_to_5_0=ruleTransitionTerminal();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getInitialTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleInitialTransition8605);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4983:1: ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )?
+ int alt80=2;
+ int LA80_0 = input.LA(1);
+
+ if ( (LA80_0==76) ) {
+ alt80=1;
+ }
+ switch (alt80) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4983:3: 'action' ( (lv_action_8_0= ruleDetailCode ) )
+ {
+ match(input,76,FOLLOW_76_in_ruleInitialTransition8616);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getActionKeyword_7_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4987:1: ( (lv_action_8_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4988:1: (lv_action_8_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4988:1: (lv_action_8_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:4989:3: lv_action_8_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getInitialTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleInitialTransition8637);
+ lv_action_8_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getInitialTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "action",
+ lv_action_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleInitialTransition8649);
+
+ createLeafNode(grammarAccess.getInitialTransitionAccess().getRightCurlyBracketKeyword_8(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleInitialTransition
+
+
+ // $ANTLR start entryRuleContinuationTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5023:1: entryRuleContinuationTransition returns [EObject current=null] : iv_ruleContinuationTransition= ruleContinuationTransition EOF ;
+ public final EObject entryRuleContinuationTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleContinuationTransition = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5024:2: (iv_ruleContinuationTransition= ruleContinuationTransition EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5025:2: iv_ruleContinuationTransition= ruleContinuationTransition EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getContinuationTransitionRule(), currentNode);
+ pushFollow(FOLLOW_ruleContinuationTransition_in_entryRuleContinuationTransition8685);
+ iv_ruleContinuationTransition=ruleContinuationTransition();
+ _fsp--;
+
+ current =iv_ruleContinuationTransition;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleContinuationTransition8695);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleContinuationTransition
+
+
+ // $ANTLR start ruleContinuationTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5032:1: ruleContinuationTransition returns [EObject current=null] : ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' ) ;
+ public final EObject ruleContinuationTransition() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_from_3_0 = null;
+
+ EObject lv_to_5_0 = null;
+
+ EObject lv_action_8_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5037:6: ( ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5038:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5038:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5038:3: 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )? '}'
+ {
+ match(input,74,FOLLOW_74_in_ruleContinuationTransition8730);
+
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getTransitionKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5042:1: ( (lv_name_1_0= RULE_ID ) )?
+ int alt81=2;
+ int LA81_0 = input.LA(1);
+
+ if ( (LA81_0==RULE_ID) ) {
+ alt81=1;
+ }
+ switch (alt81) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5043:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5043:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5044:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleContinuationTransition8747);
+
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleContinuationTransition8763);
+
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getColonKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5070:1: ( (lv_from_3_0= ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5071:1: (lv_from_3_0= ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5071:1: (lv_from_3_0= ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5072:3: lv_from_3_0= ruleTransitionTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getContinuationTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_ruleContinuationTransition8784);
+ lv_from_3_0=ruleTransitionTerminal();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "from",
+ lv_from_3_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,37,FOLLOW_37_in_ruleContinuationTransition8794);
+
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5098:1: ( (lv_to_5_0= ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5099:1: (lv_to_5_0= ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5099:1: (lv_to_5_0= ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5100:3: lv_to_5_0= ruleTransitionTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getContinuationTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_ruleContinuationTransition8815);
+ lv_to_5_0=ruleTransitionTerminal();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleContinuationTransition8825);
+
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5126:1: ( 'action' ( (lv_action_8_0= ruleDetailCode ) ) )?
+ int alt82=2;
+ int LA82_0 = input.LA(1);
+
+ if ( (LA82_0==76) ) {
+ alt82=1;
+ }
+ switch (alt82) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5126:3: 'action' ( (lv_action_8_0= ruleDetailCode ) )
+ {
+ match(input,76,FOLLOW_76_in_ruleContinuationTransition8836);
+
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getActionKeyword_7_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5130:1: ( (lv_action_8_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5131:1: (lv_action_8_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5131:1: (lv_action_8_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5132:3: lv_action_8_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getContinuationTransitionAccess().getActionDetailCodeParserRuleCall_7_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleContinuationTransition8857);
+ lv_action_8_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getContinuationTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "action",
+ lv_action_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleContinuationTransition8869);
+
+ createLeafNode(grammarAccess.getContinuationTransitionAccess().getRightCurlyBracketKeyword_8(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleContinuationTransition
+
+
+ // $ANTLR start entryRuleTriggeredTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5166:1: entryRuleTriggeredTransition returns [EObject current=null] : iv_ruleTriggeredTransition= ruleTriggeredTransition EOF ;
+ public final EObject entryRuleTriggeredTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTriggeredTransition = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5167:2: (iv_ruleTriggeredTransition= ruleTriggeredTransition EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5168:2: iv_ruleTriggeredTransition= ruleTriggeredTransition EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTriggeredTransitionRule(), currentNode);
+ pushFollow(FOLLOW_ruleTriggeredTransition_in_entryRuleTriggeredTransition8905);
+ iv_ruleTriggeredTransition=ruleTriggeredTransition();
+ _fsp--;
+
+ current =iv_ruleTriggeredTransition;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTriggeredTransition8915);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTriggeredTransition
+
+
+ // $ANTLR start ruleTriggeredTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5175:1: ruleTriggeredTransition returns [EObject current=null] : ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'triggers' '{' ( (lv_triggers_9_0= ruleTrigger ) ) ( 'or' ( (lv_triggers_11_0= ruleTrigger ) ) )* '}' ( 'action' ( (lv_action_14_0= ruleDetailCode ) ) )? '}' ) ;
+ public final EObject ruleTriggeredTransition() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_from_3_0 = null;
+
+ EObject lv_to_5_0 = null;
+
+ EObject lv_triggers_9_0 = null;
+
+ EObject lv_triggers_11_0 = null;
+
+ EObject lv_action_14_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5180:6: ( ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'triggers' '{' ( (lv_triggers_9_0= ruleTrigger ) ) ( 'or' ( (lv_triggers_11_0= ruleTrigger ) ) )* '}' ( 'action' ( (lv_action_14_0= ruleDetailCode ) ) )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5181:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'triggers' '{' ( (lv_triggers_9_0= ruleTrigger ) ) ( 'or' ( (lv_triggers_11_0= ruleTrigger ) ) )* '}' ( 'action' ( (lv_action_14_0= ruleDetailCode ) ) )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5181:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'triggers' '{' ( (lv_triggers_9_0= ruleTrigger ) ) ( 'or' ( (lv_triggers_11_0= ruleTrigger ) ) )* '}' ( 'action' ( (lv_action_14_0= ruleDetailCode ) ) )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5181:3: 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'triggers' '{' ( (lv_triggers_9_0= ruleTrigger ) ) ( 'or' ( (lv_triggers_11_0= ruleTrigger ) ) )* '}' ( 'action' ( (lv_action_14_0= ruleDetailCode ) ) )? '}'
+ {
+ match(input,74,FOLLOW_74_in_ruleTriggeredTransition8950);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getTransitionKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5185:1: ( (lv_name_1_0= RULE_ID ) )?
+ int alt83=2;
+ int LA83_0 = input.LA(1);
+
+ if ( (LA83_0==RULE_ID) ) {
+ alt83=1;
+ }
+ switch (alt83) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5186:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5186:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5187:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTriggeredTransition8967);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleTriggeredTransition8983);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getColonKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5213:1: ( (lv_from_3_0= ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5214:1: (lv_from_3_0= ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5214:1: (lv_from_3_0= ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5215:3: lv_from_3_0= ruleTransitionTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_ruleTriggeredTransition9004);
+ lv_from_3_0=ruleTransitionTerminal();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "from",
+ lv_from_3_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,37,FOLLOW_37_in_ruleTriggeredTransition9014);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5241:1: ( (lv_to_5_0= ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5242:1: (lv_to_5_0= ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5242:1: (lv_to_5_0= ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5243:3: lv_to_5_0= ruleTransitionTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_ruleTriggeredTransition9035);
+ lv_to_5_0=ruleTransitionTerminal();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleTriggeredTransition9045);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+
+ match(input,77,FOLLOW_77_in_ruleTriggeredTransition9055);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getTriggersKeyword_7(), null);
+
+ match(input,12,FOLLOW_12_in_ruleTriggeredTransition9065);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getLeftCurlyBracketKeyword_8(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5277:1: ( (lv_triggers_9_0= ruleTrigger ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5278:1: (lv_triggers_9_0= ruleTrigger )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5278:1: (lv_triggers_9_0= ruleTrigger )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5279:3: lv_triggers_9_0= ruleTrigger
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_9_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTrigger_in_ruleTriggeredTransition9086);
+ lv_triggers_9_0=ruleTrigger();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "triggers",
+ lv_triggers_9_0,
+ "Trigger",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5301:2: ( 'or' ( (lv_triggers_11_0= ruleTrigger ) ) )*
+ loop84:
+ do {
+ int alt84=2;
+ int LA84_0 = input.LA(1);
+
+ if ( (LA84_0==78) ) {
+ alt84=1;
+ }
+
+
+ switch (alt84) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5301:4: 'or' ( (lv_triggers_11_0= ruleTrigger ) )
+ {
+ match(input,78,FOLLOW_78_in_ruleTriggeredTransition9097);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getOrKeyword_10_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5305:1: ( (lv_triggers_11_0= ruleTrigger ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5306:1: (lv_triggers_11_0= ruleTrigger )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5306:1: (lv_triggers_11_0= ruleTrigger )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5307:3: lv_triggers_11_0= ruleTrigger
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getTriggersTriggerParserRuleCall_10_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTrigger_in_ruleTriggeredTransition9118);
+ lv_triggers_11_0=ruleTrigger();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "triggers",
+ lv_triggers_11_0,
+ "Trigger",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop84;
+ }
+ } while (true);
+
+ match(input,13,FOLLOW_13_in_ruleTriggeredTransition9130);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_11(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5333:1: ( 'action' ( (lv_action_14_0= ruleDetailCode ) ) )?
+ int alt85=2;
+ int LA85_0 = input.LA(1);
+
+ if ( (LA85_0==76) ) {
+ alt85=1;
+ }
+ switch (alt85) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5333:3: 'action' ( (lv_action_14_0= ruleDetailCode ) )
+ {
+ match(input,76,FOLLOW_76_in_ruleTriggeredTransition9141);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getActionKeyword_12_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5337:1: ( (lv_action_14_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5338:1: (lv_action_14_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5338:1: (lv_action_14_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5339:3: lv_action_14_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggeredTransitionAccess().getActionDetailCodeParserRuleCall_12_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleTriggeredTransition9162);
+ lv_action_14_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggeredTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "action",
+ lv_action_14_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleTriggeredTransition9174);
+
+ createLeafNode(grammarAccess.getTriggeredTransitionAccess().getRightCurlyBracketKeyword_13(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTriggeredTransition
+
+
+ // $ANTLR start entryRuleCPBranchTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5373:1: entryRuleCPBranchTransition returns [EObject current=null] : iv_ruleCPBranchTransition= ruleCPBranchTransition EOF ;
+ public final EObject entryRuleCPBranchTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleCPBranchTransition = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5374:2: (iv_ruleCPBranchTransition= ruleCPBranchTransition EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5375:2: iv_ruleCPBranchTransition= ruleCPBranchTransition EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getCPBranchTransitionRule(), currentNode);
+ pushFollow(FOLLOW_ruleCPBranchTransition_in_entryRuleCPBranchTransition9210);
+ iv_ruleCPBranchTransition=ruleCPBranchTransition();
+ _fsp--;
+
+ current =iv_ruleCPBranchTransition;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleCPBranchTransition9220);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleCPBranchTransition
+
+
+ // $ANTLR start ruleCPBranchTransition
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5382:1: ruleCPBranchTransition returns [EObject current=null] : ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'cond' ( (lv_condition_8_0= ruleDetailCode ) ) ( 'action' ( (lv_action_10_0= ruleDetailCode ) ) )? '}' ) ;
+ public final EObject ruleCPBranchTransition() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_1_0=null;
+ EObject lv_from_3_0 = null;
+
+ EObject lv_to_5_0 = null;
+
+ EObject lv_condition_8_0 = null;
+
+ EObject lv_action_10_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5387:6: ( ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'cond' ( (lv_condition_8_0= ruleDetailCode ) ) ( 'action' ( (lv_action_10_0= ruleDetailCode ) ) )? '}' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5388:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'cond' ( (lv_condition_8_0= ruleDetailCode ) ) ( 'action' ( (lv_action_10_0= ruleDetailCode ) ) )? '}' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5388:1: ( 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'cond' ( (lv_condition_8_0= ruleDetailCode ) ) ( 'action' ( (lv_action_10_0= ruleDetailCode ) ) )? '}' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5388:3: 'Transition' ( (lv_name_1_0= RULE_ID ) )? ':' ( (lv_from_3_0= ruleTransitionTerminal ) ) '->' ( (lv_to_5_0= ruleTransitionTerminal ) ) '{' 'cond' ( (lv_condition_8_0= ruleDetailCode ) ) ( 'action' ( (lv_action_10_0= ruleDetailCode ) ) )? '}'
+ {
+ match(input,74,FOLLOW_74_in_ruleCPBranchTransition9255);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getTransitionKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5392:1: ( (lv_name_1_0= RULE_ID ) )?
+ int alt86=2;
+ int LA86_0 = input.LA(1);
+
+ if ( (LA86_0==RULE_ID) ) {
+ alt86=1;
+ }
+ switch (alt86) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5393:1: (lv_name_1_0= RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5393:1: (lv_name_1_0= RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5394:3: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCPBranchTransition9272);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getNameIDTerminalRuleCall_1_0(), "name");
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+ try {
+ set(
+ current,
+ "name",
+ lv_name_1_0,
+ "ID",
+ lastConsumedNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleCPBranchTransition9288);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getColonKeyword_2(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5420:1: ( (lv_from_3_0= ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5421:1: (lv_from_3_0= ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5421:1: (lv_from_3_0= ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5422:3: lv_from_3_0= ruleTransitionTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getFromTransitionTerminalParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_ruleCPBranchTransition9309);
+ lv_from_3_0=ruleTransitionTerminal();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "from",
+ lv_from_3_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,37,FOLLOW_37_in_ruleCPBranchTransition9319);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getHyphenMinusGreaterThanSignKeyword_4(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5448:1: ( (lv_to_5_0= ruleTransitionTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5449:1: (lv_to_5_0= ruleTransitionTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5449:1: (lv_to_5_0= ruleTransitionTerminal )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5450:3: lv_to_5_0= ruleTransitionTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getToTransitionTerminalParserRuleCall_5_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_ruleCPBranchTransition9340);
+ lv_to_5_0=ruleTransitionTerminal();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "to",
+ lv_to_5_0,
+ "TransitionTerminal",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleCPBranchTransition9350);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getLeftCurlyBracketKeyword_6(), null);
+
+ match(input,79,FOLLOW_79_in_ruleCPBranchTransition9360);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getCondKeyword_7(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5480:1: ( (lv_condition_8_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5481:1: (lv_condition_8_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5481:1: (lv_condition_8_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5482:3: lv_condition_8_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getConditionDetailCodeParserRuleCall_8_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleCPBranchTransition9381);
+ lv_condition_8_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "condition",
+ lv_condition_8_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5504:2: ( 'action' ( (lv_action_10_0= ruleDetailCode ) ) )?
+ int alt87=2;
+ int LA87_0 = input.LA(1);
+
+ if ( (LA87_0==76) ) {
+ alt87=1;
+ }
+ switch (alt87) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5504:4: 'action' ( (lv_action_10_0= ruleDetailCode ) )
+ {
+ match(input,76,FOLLOW_76_in_ruleCPBranchTransition9392);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getActionKeyword_9_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5508:1: ( (lv_action_10_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5509:1: (lv_action_10_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5509:1: (lv_action_10_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5510:3: lv_action_10_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getCPBranchTransitionAccess().getActionDetailCodeParserRuleCall_9_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleCPBranchTransition9413);
+ lv_action_10_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getCPBranchTransitionRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "action",
+ lv_action_10_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleCPBranchTransition9425);
+
+ createLeafNode(grammarAccess.getCPBranchTransitionAccess().getRightCurlyBracketKeyword_10(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleCPBranchTransition
+
+
+ // $ANTLR start entryRuleTransitionTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5544:1: entryRuleTransitionTerminal returns [EObject current=null] : iv_ruleTransitionTerminal= ruleTransitionTerminal EOF ;
+ public final EObject entryRuleTransitionTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTransitionTerminal = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5545:2: (iv_ruleTransitionTerminal= ruleTransitionTerminal EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5546:2: iv_ruleTransitionTerminal= ruleTransitionTerminal EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTransitionTerminalRule(), currentNode);
+ pushFollow(FOLLOW_ruleTransitionTerminal_in_entryRuleTransitionTerminal9461);
+ iv_ruleTransitionTerminal=ruleTransitionTerminal();
+ _fsp--;
+
+ current =iv_ruleTransitionTerminal;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransitionTerminal9471);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTransitionTerminal
+
+
+ // $ANTLR start ruleTransitionTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5553:1: ruleTransitionTerminal returns [EObject current=null] : (this_StateTerminal_0= ruleStateTerminal | this_TrPointTerminal_1= ruleTrPointTerminal | this_SubStateTrPointTerminal_2= ruleSubStateTrPointTerminal | this_ChoicepointTerminal_3= ruleChoicepointTerminal ) ;
+ public final EObject ruleTransitionTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_StateTerminal_0 = null;
+
+ EObject this_TrPointTerminal_1 = null;
+
+ EObject this_SubStateTrPointTerminal_2 = null;
+
+ EObject this_ChoicepointTerminal_3 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5558:6: ( (this_StateTerminal_0= ruleStateTerminal | this_TrPointTerminal_1= ruleTrPointTerminal | this_SubStateTrPointTerminal_2= ruleSubStateTrPointTerminal | this_ChoicepointTerminal_3= ruleChoicepointTerminal ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5559:1: (this_StateTerminal_0= ruleStateTerminal | this_TrPointTerminal_1= ruleTrPointTerminal | this_SubStateTrPointTerminal_2= ruleSubStateTrPointTerminal | this_ChoicepointTerminal_3= ruleChoicepointTerminal )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5559:1: (this_StateTerminal_0= ruleStateTerminal | this_TrPointTerminal_1= ruleTrPointTerminal | this_SubStateTrPointTerminal_2= ruleSubStateTrPointTerminal | this_ChoicepointTerminal_3= ruleChoicepointTerminal )
+ int alt88=4;
+ switch ( input.LA(1) ) {
+ case RULE_ID:
+ {
+ int LA88_1 = input.LA(2);
+
+ if ( (LA88_1==50) ) {
+ alt88=3;
+ }
+ else if ( (LA88_1==EOF||LA88_1==12||LA88_1==37) ) {
+ alt88=1;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("5559:1: (this_StateTerminal_0= ruleStateTerminal | this_TrPointTerminal_1= ruleTrPointTerminal | this_SubStateTrPointTerminal_2= ruleSubStateTrPointTerminal | this_ChoicepointTerminal_3= ruleChoicepointTerminal )", 88, 1, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ case 80:
+ {
+ alt88=2;
+ }
+ break;
+ case 81:
+ {
+ alt88=4;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("5559:1: (this_StateTerminal_0= ruleStateTerminal | this_TrPointTerminal_1= ruleTrPointTerminal | this_SubStateTrPointTerminal_2= ruleSubStateTrPointTerminal | this_ChoicepointTerminal_3= ruleChoicepointTerminal )", 88, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt88) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5560:5: this_StateTerminal_0= ruleStateTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getStateTerminalParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleStateTerminal_in_ruleTransitionTerminal9518);
+ this_StateTerminal_0=ruleStateTerminal();
+ _fsp--;
+
+
+ current = this_StateTerminal_0;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5570:5: this_TrPointTerminal_1= ruleTrPointTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getTrPointTerminalParserRuleCall_1(), currentNode);
+
+ pushFollow(FOLLOW_ruleTrPointTerminal_in_ruleTransitionTerminal9545);
+ this_TrPointTerminal_1=ruleTrPointTerminal();
+ _fsp--;
+
+
+ current = this_TrPointTerminal_1;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5580:5: this_SubStateTrPointTerminal_2= ruleSubStateTrPointTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getSubStateTrPointTerminalParserRuleCall_2(), currentNode);
+
+ pushFollow(FOLLOW_ruleSubStateTrPointTerminal_in_ruleTransitionTerminal9572);
+ this_SubStateTrPointTerminal_2=ruleSubStateTrPointTerminal();
+ _fsp--;
+
+
+ current = this_SubStateTrPointTerminal_2;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5590:5: this_ChoicepointTerminal_3= ruleChoicepointTerminal
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTransitionTerminalAccess().getChoicepointTerminalParserRuleCall_3(), currentNode);
+
+ pushFollow(FOLLOW_ruleChoicepointTerminal_in_ruleTransitionTerminal9599);
+ this_ChoicepointTerminal_3=ruleChoicepointTerminal();
+ _fsp--;
+
+
+ current = this_ChoicepointTerminal_3;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTransitionTerminal
+
+
+ // $ANTLR start entryRuleStateTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5606:1: entryRuleStateTerminal returns [EObject current=null] : iv_ruleStateTerminal= ruleStateTerminal EOF ;
+ public final EObject entryRuleStateTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleStateTerminal = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5607:2: (iv_ruleStateTerminal= ruleStateTerminal EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5608:2: iv_ruleStateTerminal= ruleStateTerminal EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getStateTerminalRule(), currentNode);
+ pushFollow(FOLLOW_ruleStateTerminal_in_entryRuleStateTerminal9634);
+ iv_ruleStateTerminal=ruleStateTerminal();
+ _fsp--;
+
+ current =iv_ruleStateTerminal;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleStateTerminal9644);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleStateTerminal
+
+
+ // $ANTLR start ruleStateTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5615:1: ruleStateTerminal returns [EObject current=null] : ( ( RULE_ID ) ) ;
+ public final EObject ruleStateTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5620:6: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5621:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5621:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5622:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5622:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5623:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getStateTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStateTerminal9686);
+
+ createLeafNode(grammarAccess.getStateTerminalAccess().getStateBaseStateCrossReference_0(), "state");
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleStateTerminal
+
+
+ // $ANTLR start entryRuleTrPointTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5643:1: entryRuleTrPointTerminal returns [EObject current=null] : iv_ruleTrPointTerminal= ruleTrPointTerminal EOF ;
+ public final EObject entryRuleTrPointTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTrPointTerminal = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5644:2: (iv_ruleTrPointTerminal= ruleTrPointTerminal EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5645:2: iv_ruleTrPointTerminal= ruleTrPointTerminal EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTrPointTerminalRule(), currentNode);
+ pushFollow(FOLLOW_ruleTrPointTerminal_in_entryRuleTrPointTerminal9721);
+ iv_ruleTrPointTerminal=ruleTrPointTerminal();
+ _fsp--;
+
+ current =iv_ruleTrPointTerminal;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTrPointTerminal9731);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTrPointTerminal
+
+
+ // $ANTLR start ruleTrPointTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5652:1: ruleTrPointTerminal returns [EObject current=null] : ( 'my' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleTrPointTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5657:6: ( ( 'my' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5658:1: ( 'my' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5658:1: ( 'my' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5658:3: 'my' ( ( RULE_ID ) )
+ {
+ match(input,80,FOLLOW_80_in_ruleTrPointTerminal9766);
+
+ createLeafNode(grammarAccess.getTrPointTerminalAccess().getMyKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5662:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5663:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5663:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5664:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTrPointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTrPointTerminal9784);
+
+ createLeafNode(grammarAccess.getTrPointTerminalAccess().getTrPointTrPointCrossReference_1_0(), "trPoint");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTrPointTerminal
+
+
+ // $ANTLR start entryRuleSubStateTrPointTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5684:1: entryRuleSubStateTrPointTerminal returns [EObject current=null] : iv_ruleSubStateTrPointTerminal= ruleSubStateTrPointTerminal EOF ;
+ public final EObject entryRuleSubStateTrPointTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSubStateTrPointTerminal = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5685:2: (iv_ruleSubStateTrPointTerminal= ruleSubStateTrPointTerminal EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5686:2: iv_ruleSubStateTrPointTerminal= ruleSubStateTrPointTerminal EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getSubStateTrPointTerminalRule(), currentNode);
+ pushFollow(FOLLOW_ruleSubStateTrPointTerminal_in_entryRuleSubStateTrPointTerminal9820);
+ iv_ruleSubStateTrPointTerminal=ruleSubStateTrPointTerminal();
+ _fsp--;
+
+ current =iv_ruleSubStateTrPointTerminal;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSubStateTrPointTerminal9830);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSubStateTrPointTerminal
+
+
+ // $ANTLR start ruleSubStateTrPointTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5693:1: ruleSubStateTrPointTerminal returns [EObject current=null] : ( ( ( RULE_ID ) ) 'of' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleSubStateTrPointTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5698:6: ( ( ( ( RULE_ID ) ) 'of' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5699:1: ( ( ( RULE_ID ) ) 'of' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5699:1: ( ( ( RULE_ID ) ) 'of' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5699:2: ( ( RULE_ID ) ) 'of' ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5699:2: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5700:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5700:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5701:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubStateTrPointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSubStateTrPointTerminal9873);
+
+ createLeafNode(grammarAccess.getSubStateTrPointTerminalAccess().getTrPointTrPointCrossReference_0_0(), "trPoint");
+
+
+ }
+
+
+ }
+
+ match(input,50,FOLLOW_50_in_ruleSubStateTrPointTerminal9883);
+
+ createLeafNode(grammarAccess.getSubStateTrPointTerminalAccess().getOfKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5717:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5718:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5718:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5719:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getSubStateTrPointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSubStateTrPointTerminal9901);
+
+ createLeafNode(grammarAccess.getSubStateTrPointTerminalAccess().getStateBaseStateCrossReference_2_0(), "state");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSubStateTrPointTerminal
+
+
+ // $ANTLR start entryRuleChoicepointTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5739:1: entryRuleChoicepointTerminal returns [EObject current=null] : iv_ruleChoicepointTerminal= ruleChoicepointTerminal EOF ;
+ public final EObject entryRuleChoicepointTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleChoicepointTerminal = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5740:2: (iv_ruleChoicepointTerminal= ruleChoicepointTerminal EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5741:2: iv_ruleChoicepointTerminal= ruleChoicepointTerminal EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getChoicepointTerminalRule(), currentNode);
+ pushFollow(FOLLOW_ruleChoicepointTerminal_in_entryRuleChoicepointTerminal9937);
+ iv_ruleChoicepointTerminal=ruleChoicepointTerminal();
+ _fsp--;
+
+ current =iv_ruleChoicepointTerminal;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleChoicepointTerminal9947);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleChoicepointTerminal
+
+
+ // $ANTLR start ruleChoicepointTerminal
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5748:1: ruleChoicepointTerminal returns [EObject current=null] : ( 'cp' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleChoicepointTerminal() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5753:6: ( ( 'cp' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5754:1: ( 'cp' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5754:1: ( 'cp' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5754:3: 'cp' ( ( RULE_ID ) )
+ {
+ match(input,81,FOLLOW_81_in_ruleChoicepointTerminal9982);
+
+ createLeafNode(grammarAccess.getChoicepointTerminalAccess().getCpKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5758:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5759:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5759:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5760:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getChoicepointTerminalRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChoicepointTerminal10000);
+
+ createLeafNode(grammarAccess.getChoicepointTerminalAccess().getCpChoicePointCrossReference_1_0(), "cp");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleChoicepointTerminal
+
+
+ // $ANTLR start entryRuleTrigger
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5780:1: entryRuleTrigger returns [EObject current=null] : iv_ruleTrigger= ruleTrigger EOF ;
+ public final EObject entryRuleTrigger() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTrigger = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5781:2: (iv_ruleTrigger= ruleTrigger EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5782:2: iv_ruleTrigger= ruleTrigger EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getTriggerRule(), currentNode);
+ pushFollow(FOLLOW_ruleTrigger_in_entryRuleTrigger10036);
+ iv_ruleTrigger=ruleTrigger();
+ _fsp--;
+
+ current =iv_ruleTrigger;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTrigger10046);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleTrigger
+
+
+ // $ANTLR start ruleTrigger
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5789:1: ruleTrigger returns [EObject current=null] : ( '<' ( (lv_msgFromIfPairs_1_0= ruleMessageFromIf ) ) ( '|' ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) ) )* ( (lv_guard_4_0= ruleGuard ) )? '>' ) ;
+ public final EObject ruleTrigger() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_msgFromIfPairs_1_0 = null;
+
+ EObject lv_msgFromIfPairs_3_0 = null;
+
+ EObject lv_guard_4_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5794:6: ( ( '<' ( (lv_msgFromIfPairs_1_0= ruleMessageFromIf ) ) ( '|' ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) ) )* ( (lv_guard_4_0= ruleGuard ) )? '>' ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5795:1: ( '<' ( (lv_msgFromIfPairs_1_0= ruleMessageFromIf ) ) ( '|' ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) ) )* ( (lv_guard_4_0= ruleGuard ) )? '>' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5795:1: ( '<' ( (lv_msgFromIfPairs_1_0= ruleMessageFromIf ) ) ( '|' ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) ) )* ( (lv_guard_4_0= ruleGuard ) )? '>' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5795:3: '<' ( (lv_msgFromIfPairs_1_0= ruleMessageFromIf ) ) ( '|' ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) ) )* ( (lv_guard_4_0= ruleGuard ) )? '>'
+ {
+ match(input,82,FOLLOW_82_in_ruleTrigger10081);
+
+ createLeafNode(grammarAccess.getTriggerAccess().getLessThanSignKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5799:1: ( (lv_msgFromIfPairs_1_0= ruleMessageFromIf ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5800:1: (lv_msgFromIfPairs_1_0= ruleMessageFromIf )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5800:1: (lv_msgFromIfPairs_1_0= ruleMessageFromIf )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5801:3: lv_msgFromIfPairs_1_0= ruleMessageFromIf
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleMessageFromIf_in_ruleTrigger10102);
+ lv_msgFromIfPairs_1_0=ruleMessageFromIf();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "msgFromIfPairs",
+ lv_msgFromIfPairs_1_0,
+ "MessageFromIf",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5823:2: ( '|' ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) ) )*
+ loop89:
+ do {
+ int alt89=2;
+ int LA89_0 = input.LA(1);
+
+ if ( (LA89_0==83) ) {
+ alt89=1;
+ }
+
+
+ switch (alt89) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5823:4: '|' ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) )
+ {
+ match(input,83,FOLLOW_83_in_ruleTrigger10113);
+
+ createLeafNode(grammarAccess.getTriggerAccess().getVerticalLineKeyword_2_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5827:1: ( (lv_msgFromIfPairs_3_0= ruleMessageFromIf ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5828:1: (lv_msgFromIfPairs_3_0= ruleMessageFromIf )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5828:1: (lv_msgFromIfPairs_3_0= ruleMessageFromIf )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5829:3: lv_msgFromIfPairs_3_0= ruleMessageFromIf
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleMessageFromIf_in_ruleTrigger10134);
+ lv_msgFromIfPairs_3_0=ruleMessageFromIf();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ add(
+ current,
+ "msgFromIfPairs",
+ lv_msgFromIfPairs_3_0,
+ "MessageFromIf",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop89;
+ }
+ } while (true);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5851:4: ( (lv_guard_4_0= ruleGuard ) )?
+ int alt90=2;
+ int LA90_0 = input.LA(1);
+
+ if ( (LA90_0==85) ) {
+ alt90=1;
+ }
+ switch (alt90) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5852:1: (lv_guard_4_0= ruleGuard )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5852:1: (lv_guard_4_0= ruleGuard )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5853:3: lv_guard_4_0= ruleGuard
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getGuardGuardParserRuleCall_3_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleGuard_in_ruleTrigger10157);
+ lv_guard_4_0=ruleGuard();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "guard",
+ lv_guard_4_0,
+ "Guard",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ match(input,84,FOLLOW_84_in_ruleTrigger10168);
+
+ createLeafNode(grammarAccess.getTriggerAccess().getGreaterThanSignKeyword_4(), null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleTrigger
+
+
+ // $ANTLR start entryRuleMessageFromIf
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5887:1: entryRuleMessageFromIf returns [EObject current=null] : iv_ruleMessageFromIf= ruleMessageFromIf EOF ;
+ public final EObject entryRuleMessageFromIf() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleMessageFromIf = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5888:2: (iv_ruleMessageFromIf= ruleMessageFromIf EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5889:2: iv_ruleMessageFromIf= ruleMessageFromIf EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getMessageFromIfRule(), currentNode);
+ pushFollow(FOLLOW_ruleMessageFromIf_in_entryRuleMessageFromIf10204);
+ iv_ruleMessageFromIf=ruleMessageFromIf();
+ _fsp--;
+
+ current =iv_ruleMessageFromIf;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMessageFromIf10214);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleMessageFromIf
+
+
+ // $ANTLR start ruleMessageFromIf
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5896:1: ruleMessageFromIf returns [EObject current=null] : ( ( ( RULE_ID ) ) ':' ( ( RULE_ID ) ) ) ;
+ public final EObject ruleMessageFromIf() throws RecognitionException {
+ EObject current = null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5901:6: ( ( ( ( RULE_ID ) ) ':' ( ( RULE_ID ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5902:1: ( ( ( RULE_ID ) ) ':' ( ( RULE_ID ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5902:1: ( ( ( RULE_ID ) ) ':' ( ( RULE_ID ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5902:2: ( ( RULE_ID ) ) ':' ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5902:2: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5903:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5903:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5904:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getMessageFromIfRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMessageFromIf10257);
+
+ createLeafNode(grammarAccess.getMessageFromIfAccess().getMessageMessageCrossReference_0_0(), "message");
+
+
+ }
+
+
+ }
+
+ match(input,14,FOLLOW_14_in_ruleMessageFromIf10267);
+
+ createLeafNode(grammarAccess.getMessageFromIfAccess().getColonKeyword_1(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5920:1: ( ( RULE_ID ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5921:1: ( RULE_ID )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5921:1: ( RULE_ID )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5922:3: RULE_ID
+ {
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getMessageFromIfRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMessageFromIf10285);
+
+ createLeafNode(grammarAccess.getMessageFromIfAccess().getFromInterfaceItemCrossReference_2_0(), "from");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleMessageFromIf
+
+
+ // $ANTLR start entryRuleGuard
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5942:1: entryRuleGuard returns [EObject current=null] : iv_ruleGuard= ruleGuard EOF ;
+ public final EObject entryRuleGuard() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleGuard = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5943:2: (iv_ruleGuard= ruleGuard EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5944:2: iv_ruleGuard= ruleGuard EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getGuardRule(), currentNode);
+ pushFollow(FOLLOW_ruleGuard_in_entryRuleGuard10321);
+ iv_ruleGuard=ruleGuard();
+ _fsp--;
+
+ current =iv_ruleGuard;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleGuard10331);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleGuard
+
+
+ // $ANTLR start ruleGuard
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5951:1: ruleGuard returns [EObject current=null] : ( 'guard' ( (lv_guard_1_0= ruleDetailCode ) ) ) ;
+ public final EObject ruleGuard() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_guard_1_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5956:6: ( ( 'guard' ( (lv_guard_1_0= ruleDetailCode ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5957:1: ( 'guard' ( (lv_guard_1_0= ruleDetailCode ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5957:1: ( 'guard' ( (lv_guard_1_0= ruleDetailCode ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5957:3: 'guard' ( (lv_guard_1_0= ruleDetailCode ) )
+ {
+ match(input,85,FOLLOW_85_in_ruleGuard10366);
+
+ createLeafNode(grammarAccess.getGuardAccess().getGuardKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5961:1: ( (lv_guard_1_0= ruleDetailCode ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5962:1: (lv_guard_1_0= ruleDetailCode )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5962:1: (lv_guard_1_0= ruleDetailCode )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5963:3: lv_guard_1_0= ruleDetailCode
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getGuardAccess().getGuardDetailCodeParserRuleCall_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleDetailCode_in_ruleGuard10387);
+ lv_guard_1_0=ruleDetailCode();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getGuardRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "guard",
+ lv_guard_1_0,
+ "DetailCode",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleGuard
+
+
+ // $ANTLR start entryRuleImport
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5993:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
+ public final EObject entryRuleImport() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleImport = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5994:2: (iv_ruleImport= ruleImport EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:5995:2: iv_ruleImport= ruleImport EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getImportRule(), currentNode);
+ pushFollow(FOLLOW_ruleImport_in_entryRuleImport10423);
+ iv_ruleImport=ruleImport();
+ _fsp--;
+
+ current =iv_ruleImport;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleImport10433);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleImport
+
+
+ // $ANTLR start ruleImport
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6002:1: ruleImport returns [EObject current=null] : ( 'import' ( (lv_importedNamespace_1_0= ruleImportedFQN ) ) ) ;
+ public final EObject ruleImport() throws RecognitionException {
+ EObject current = null;
+
+ AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6007:6: ( ( 'import' ( (lv_importedNamespace_1_0= ruleImportedFQN ) ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6008:1: ( 'import' ( (lv_importedNamespace_1_0= ruleImportedFQN ) ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6008:1: ( 'import' ( (lv_importedNamespace_1_0= ruleImportedFQN ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6008:3: 'import' ( (lv_importedNamespace_1_0= ruleImportedFQN ) )
+ {
+ match(input,86,FOLLOW_86_in_ruleImport10468);
+
+ createLeafNode(grammarAccess.getImportAccess().getImportKeyword_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6012:1: ( (lv_importedNamespace_1_0= ruleImportedFQN ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6013:1: (lv_importedNamespace_1_0= ruleImportedFQN )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6013:1: (lv_importedNamespace_1_0= ruleImportedFQN )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6014:3: lv_importedNamespace_1_0= ruleImportedFQN
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceImportedFQNParserRuleCall_1_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleImportedFQN_in_ruleImport10489);
+ lv_importedNamespace_1_0=ruleImportedFQN();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create(grammarAccess.getImportRule().getType().getClassifier());
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+ try {
+ set(
+ current,
+ "importedNamespace",
+ lv_importedNamespace_1_0,
+ "ImportedFQN",
+ currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleImport
+
+
+ // $ANTLR start entryRuleImportedFQN
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6044:1: entryRuleImportedFQN returns [String current=null] : iv_ruleImportedFQN= ruleImportedFQN EOF ;
+ public final String entryRuleImportedFQN() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleImportedFQN = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6045:2: (iv_ruleImportedFQN= ruleImportedFQN EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6046:2: iv_ruleImportedFQN= ruleImportedFQN EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getImportedFQNRule(), currentNode);
+ pushFollow(FOLLOW_ruleImportedFQN_in_entryRuleImportedFQN10526);
+ iv_ruleImportedFQN=ruleImportedFQN();
+ _fsp--;
+
+ current =iv_ruleImportedFQN.getText();
+ match(input,EOF,FOLLOW_EOF_in_entryRuleImportedFQN10537);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleImportedFQN
+
+
+ // $ANTLR start ruleImportedFQN
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6053:1: ruleImportedFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FQN_0= ruleFQN (kw= '.' kw= '*' )? ) ;
+ public final AntlrDatatypeRuleToken ruleImportedFQN() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token kw=null;
+ AntlrDatatypeRuleToken this_FQN_0 = null;
+
+
+ setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6058:6: ( (this_FQN_0= ruleFQN (kw= '.' kw= '*' )? ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6059:1: (this_FQN_0= ruleFQN (kw= '.' kw= '*' )? )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6059:1: (this_FQN_0= ruleFQN (kw= '.' kw= '*' )? )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6060:5: this_FQN_0= ruleFQN (kw= '.' kw= '*' )?
+ {
+
+ currentNode=createCompositeNode(grammarAccess.getImportedFQNAccess().getFQNParserRuleCall_0(), currentNode);
+
+ pushFollow(FOLLOW_ruleFQN_in_ruleImportedFQN10584);
+ this_FQN_0=ruleFQN();
+ _fsp--;
+
+
+ current.merge(this_FQN_0);
+
+
+ currentNode = currentNode.getParent();
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6070:1: (kw= '.' kw= '*' )?
+ int alt91=2;
+ int LA91_0 = input.LA(1);
+
+ if ( (LA91_0==55) ) {
+ alt91=1;
+ }
+ switch (alt91) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6071:2: kw= '.' kw= '*'
+ {
+ kw=(Token)input.LT(1);
+ match(input,55,FOLLOW_55_in_ruleImportedFQN10603);
+
+ current.merge(kw);
+ createLeafNode(grammarAccess.getImportedFQNAccess().getFullStopKeyword_1_0(), null);
+
+ kw=(Token)input.LT(1);
+ match(input,87,FOLLOW_87_in_ruleImportedFQN10616);
+
+ current.merge(kw);
+ createLeafNode(grammarAccess.getImportedFQNAccess().getAsteriskKeyword_1_1(), null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleImportedFQN
+
+
+ // $ANTLR start entryRuleFQN
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6090:1: entryRuleFQN returns [String current=null] : iv_ruleFQN= ruleFQN EOF ;
+ public final String entryRuleFQN() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleFQN = null;
+
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6091:2: (iv_ruleFQN= ruleFQN EOF )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6092:2: iv_ruleFQN= ruleFQN EOF
+ {
+ currentNode = createCompositeNode(grammarAccess.getFQNRule(), currentNode);
+ pushFollow(FOLLOW_ruleFQN_in_entryRuleFQN10659);
+ iv_ruleFQN=ruleFQN();
+ _fsp--;
+
+ current =iv_ruleFQN.getText();
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFQN10670);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleFQN
+
+
+ // $ANTLR start ruleFQN
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6099:1: ruleFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
+ public final AntlrDatatypeRuleToken ruleFQN() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token this_ID_0=null;
+ Token kw=null;
+ Token this_ID_2=null;
+
+ setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6104:6: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6105:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6105:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6105:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
+ {
+ this_ID_0=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFQN10710);
+
+ current.merge(this_ID_0);
+
+
+ createLeafNode(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0(), null);
+
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6112:1: (kw= '.' this_ID_2= RULE_ID )*
+ loop92:
+ do {
+ int alt92=2;
+ int LA92_0 = input.LA(1);
+
+ if ( (LA92_0==55) ) {
+ int LA92_2 = input.LA(2);
+
+ if ( (LA92_2==RULE_ID) ) {
+ alt92=1;
+ }
+
+
+ }
+
+
+ switch (alt92) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6113:2: kw= '.' this_ID_2= RULE_ID
+ {
+ kw=(Token)input.LT(1);
+ match(input,55,FOLLOW_55_in_ruleFQN10729);
+
+ current.merge(kw);
+ createLeafNode(grammarAccess.getFQNAccess().getFullStopKeyword_1_0(), null);
+
+ this_ID_2=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFQN10744);
+
+ current.merge(this_ID_2);
+
+
+ createLeafNode(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1(), null);
+
+
+ }
+ break;
+
+ default :
+ break loop92;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleFQN
+
+
+ // $ANTLR start rulePrimitiveType
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6133:1: rulePrimitiveType returns [Enumerator current=null] : ( ( 'void' ) | ( 'int8' ) | ( 'int16' ) | ( 'int32' ) | ( 'uint8' ) | ( 'uint16' ) | ( 'uint32' ) | ( 'float32' ) | ( 'float64' ) | ( 'boolean' ) | ( 'string' ) | ( 'char' ) ) ;
+ public final Enumerator rulePrimitiveType() throws RecognitionException {
+ Enumerator current = null;
+
+ setCurrentLookahead(); resetLookahead();
+ try {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6137:6: ( ( ( 'void' ) | ( 'int8' ) | ( 'int16' ) | ( 'int32' ) | ( 'uint8' ) | ( 'uint16' ) | ( 'uint32' ) | ( 'float32' ) | ( 'float64' ) | ( 'boolean' ) | ( 'string' ) | ( 'char' ) ) )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6138:1: ( ( 'void' ) | ( 'int8' ) | ( 'int16' ) | ( 'int32' ) | ( 'uint8' ) | ( 'uint16' ) | ( 'uint32' ) | ( 'float32' ) | ( 'float64' ) | ( 'boolean' ) | ( 'string' ) | ( 'char' ) )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6138:1: ( ( 'void' ) | ( 'int8' ) | ( 'int16' ) | ( 'int32' ) | ( 'uint8' ) | ( 'uint16' ) | ( 'uint32' ) | ( 'float32' ) | ( 'float64' ) | ( 'boolean' ) | ( 'string' ) | ( 'char' ) )
+ int alt93=12;
+ switch ( input.LA(1) ) {
+ case 88:
+ {
+ alt93=1;
+ }
+ break;
+ case 89:
+ {
+ alt93=2;
+ }
+ break;
+ case 90:
+ {
+ alt93=3;
+ }
+ break;
+ case 91:
+ {
+ alt93=4;
+ }
+ break;
+ case 92:
+ {
+ alt93=5;
+ }
+ break;
+ case 93:
+ {
+ alt93=6;
+ }
+ break;
+ case 94:
+ {
+ alt93=7;
+ }
+ break;
+ case 95:
+ {
+ alt93=8;
+ }
+ break;
+ case 96:
+ {
+ alt93=9;
+ }
+ break;
+ case 97:
+ {
+ alt93=10;
+ }
+ break;
+ case 98:
+ {
+ alt93=11;
+ }
+ break;
+ case 99:
+ {
+ alt93=12;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("6138:1: ( ( 'void' ) | ( 'int8' ) | ( 'int16' ) | ( 'int32' ) | ( 'uint8' ) | ( 'uint16' ) | ( 'uint32' ) | ( 'float32' ) | ( 'float64' ) | ( 'boolean' ) | ( 'string' ) | ( 'char' ) )", 93, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt93) {
+ case 1 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6138:2: ( 'void' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6138:2: ( 'void' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6138:4: 'void'
+ {
+ match(input,88,FOLLOW_88_in_rulePrimitiveType10803);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getVoidEnumLiteralDeclaration_0(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6144:6: ( 'int8' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6144:6: ( 'int8' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6144:8: 'int8'
+ {
+ match(input,89,FOLLOW_89_in_rulePrimitiveType10818);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getInt8EnumLiteralDeclaration_1(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6150:6: ( 'int16' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6150:6: ( 'int16' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6150:8: 'int16'
+ {
+ match(input,90,FOLLOW_90_in_rulePrimitiveType10833);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getInt16EnumLiteralDeclaration_2(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6156:6: ( 'int32' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6156:6: ( 'int32' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6156:8: 'int32'
+ {
+ match(input,91,FOLLOW_91_in_rulePrimitiveType10848);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getInt32EnumLiteralDeclaration_3(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6162:6: ( 'uint8' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6162:6: ( 'uint8' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6162:8: 'uint8'
+ {
+ match(input,92,FOLLOW_92_in_rulePrimitiveType10863);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getUint8EnumLiteralDeclaration_4(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6168:6: ( 'uint16' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6168:6: ( 'uint16' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6168:8: 'uint16'
+ {
+ match(input,93,FOLLOW_93_in_rulePrimitiveType10878);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getUint16EnumLiteralDeclaration_5(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6174:6: ( 'uint32' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6174:6: ( 'uint32' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6174:8: 'uint32'
+ {
+ match(input,94,FOLLOW_94_in_rulePrimitiveType10893);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getUint32EnumLiteralDeclaration_6(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6180:6: ( 'float32' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6180:6: ( 'float32' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6180:8: 'float32'
+ {
+ match(input,95,FOLLOW_95_in_rulePrimitiveType10908);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getFloat32EnumLiteralDeclaration_7(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 9 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6186:6: ( 'float64' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6186:6: ( 'float64' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6186:8: 'float64'
+ {
+ match(input,96,FOLLOW_96_in_rulePrimitiveType10923);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getFloat64EnumLiteralDeclaration_8(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 10 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6192:6: ( 'boolean' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6192:6: ( 'boolean' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6192:8: 'boolean'
+ {
+ match(input,97,FOLLOW_97_in_rulePrimitiveType10938);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getBooleanEnumLiteralDeclaration_9(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 11 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6198:6: ( 'string' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6198:6: ( 'string' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6198:8: 'string'
+ {
+ match(input,98,FOLLOW_98_in_rulePrimitiveType10953);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getStringEnumLiteralDeclaration_10(), null);
+
+
+ }
+
+
+ }
+ break;
+ case 12 :
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6204:6: ( 'char' )
+ {
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6204:6: ( 'char' )
+ // ../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g:6204:8: 'char'
+ {
+ match(input,99,FOLLOW_99_in_rulePrimitiveType10968);
+
+ current = grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
+ createLeafNode(grammarAccess.getPrimitiveTypeAccess().getCharEnumLiteralDeclaration_11(), null);
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+ lastConsumedNode = currentNode;
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end rulePrimitiveType
+
+
+
+
+ public static final BitSet FOLLOW_ruleRoomModel_in_entryRuleRoomModel75 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRoomModel85 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_11_in_ruleRoomModel120 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleRoomModel141 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleRoomModel151 = new BitSet(new long[]{0x0028018001008000L,0x0000000000400000L});
+ public static final BitSet FOLLOW_ruleImport_in_ruleRoomModel172 = new BitSet(new long[]{0x0028018001008000L,0x0000000000400000L});
+ public static final BitSet FOLLOW_ruleDataClass_in_ruleRoomModel195 = new BitSet(new long[]{0x002801800100A000L});
+ public static final BitSet FOLLOW_ruleProtocolClass_in_ruleRoomModel222 = new BitSet(new long[]{0x002801800100A000L});
+ public static final BitSet FOLLOW_ruleActorClass_in_ruleRoomModel249 = new BitSet(new long[]{0x002801800100A000L});
+ public static final BitSet FOLLOW_ruleSubSystemClass_in_ruleRoomModel276 = new BitSet(new long[]{0x002801800100A000L});
+ public static final BitSet FOLLOW_ruleLogicalSystem_in_ruleRoomModel303 = new BitSet(new long[]{0x002801800100A000L});
+ public static final BitSet FOLLOW_13_in_ruleRoomModel315 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStructureClass_in_entryRuleStructureClass353 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStructureClass363 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorContainerClass_in_ruleStructureClass410 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalSystem_in_ruleStructureClass437 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorContainerClass_in_entryRuleActorContainerClass472 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorContainerClass482 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorClass_in_ruleActorContainerClass529 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemClass_in_ruleActorContainerClass556 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTypedID_in_entryRuleTypedID591 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTypedID601 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleTypedID643 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleTypedID658 = new BitSet(new long[]{0x0000000000000010L,0x0000000FFF000000L});
+ public static final BitSet FOLLOW_ruleType_in_ruleTypedID679 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeTypedID_in_entryRuleFreeTypedID715 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFreeTypedID725 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleFreeTypedID767 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleFreeTypedID782 = new BitSet(new long[]{0x0000000000000010L,0x0000000FFF000000L});
+ public static final BitSet FOLLOW_ruleFreeType_in_ruleFreeTypedID803 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleType_in_entryRuleType839 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleType849 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimitiveType_in_ruleType895 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleType924 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFreeType_in_entryRuleFreeType960 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFreeType970 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimitiveType_in_ruleFreeType1016 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleFreeType1039 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDataClass_in_entryRuleDataClass1080 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDataClass1090 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_15_in_ruleDataClass1125 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleDataClass1142 = new BitSet(new long[]{0x0000000000011000L});
+ public static final BitSet FOLLOW_16_in_ruleDataClass1158 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleDataClass1181 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleDataClass1193 = new BitSet(new long[]{0x0000000000020000L,0x0000000000400000L});
+ public static final BitSet FOLLOW_ruleImport_in_ruleDataClass1214 = new BitSet(new long[]{0x0000000000020000L,0x0000000000400000L});
+ public static final BitSet FOLLOW_ruleAttribute_in_ruleDataClass1236 = new BitSet(new long[]{0x0000000000122000L});
+ public static final BitSet FOLLOW_ruleOperation_in_ruleDataClass1258 = new BitSet(new long[]{0x0000000000102000L});
+ public static final BitSet FOLLOW_13_in_ruleDataClass1269 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute1305 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleAttribute1315 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_17_in_ruleAttribute1350 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleAttribute1367 = new BitSet(new long[]{0x0000000000044000L});
+ public static final BitSet FOLLOW_18_in_ruleAttribute1383 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_RULE_INT_in_ruleAttribute1400 = new BitSet(new long[]{0x0000000000080000L});
+ public static final BitSet FOLLOW_19_in_ruleAttribute1415 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleAttribute1427 = new BitSet(new long[]{0x0000000000000010L,0x0000000FFF000000L});
+ public static final BitSet FOLLOW_ruleType_in_ruleAttribute1448 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleOperation_in_entryRuleOperation1484 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleOperation1494 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_20_in_ruleOperation1529 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleOperation1546 = new BitSet(new long[]{0x0000000000200000L});
+ public static final BitSet FOLLOW_21_in_ruleOperation1561 = new BitSet(new long[]{0x0000000000800010L});
+ public static final BitSet FOLLOW_ruleFreeTypedID_in_ruleOperation1583 = new BitSet(new long[]{0x0000000000C00000L});
+ public static final BitSet FOLLOW_22_in_ruleOperation1594 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFreeTypedID_in_ruleOperation1615 = new BitSet(new long[]{0x0000000000C00000L});
+ public static final BitSet FOLLOW_23_in_ruleOperation1629 = new BitSet(new long[]{0x0000000000005000L});
+ public static final BitSet FOLLOW_14_in_ruleOperation1640 = new BitSet(new long[]{0x0000000000000010L,0x0000000FFF000000L});
+ public static final BitSet FOLLOW_ruleFreeType_in_ruleOperation1661 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleOperation1684 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleProtocolClass_in_entryRuleProtocolClass1720 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleProtocolClass1730 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_24_in_ruleProtocolClass1765 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleProtocolClass1782 = new BitSet(new long[]{0x0000000000011000L});
+ public static final BitSet FOLLOW_16_in_ruleProtocolClass1798 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleProtocolClass1821 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleProtocolClass1833 = new BitSet(new long[]{0x000000000E000000L});
+ public static final BitSet FOLLOW_25_in_ruleProtocolClass1844 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleProtocolClass1865 = new BitSet(new long[]{0x000000000C000000L});
+ public static final BitSet FOLLOW_26_in_ruleProtocolClass1878 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleProtocolClass1899 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_ruleProtocolClass1911 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleProtocolClass1921 = new BitSet(new long[]{0x0000000100002000L});
+ public static final BitSet FOLLOW_ruleMessage_in_ruleProtocolClass1942 = new BitSet(new long[]{0x0000000100002000L});
+ public static final BitSet FOLLOW_13_in_ruleProtocolClass1953 = new BitSet(new long[]{0x0000000010000000L});
+ public static final BitSet FOLLOW_28_in_ruleProtocolClass1963 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleProtocolClass1973 = new BitSet(new long[]{0x0000000100002000L});
+ public static final BitSet FOLLOW_ruleMessage_in_ruleProtocolClass1994 = new BitSet(new long[]{0x0000000100002000L});
+ public static final BitSet FOLLOW_13_in_ruleProtocolClass2005 = new BitSet(new long[]{0x00000008A0002000L});
+ public static final BitSet FOLLOW_29_in_ruleProtocolClass2016 = new BitSet(new long[]{0x0000000040000000L});
+ public static final BitSet FOLLOW_30_in_ruleProtocolClass2026 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_rulePortClass_in_ruleProtocolClass2047 = new BitSet(new long[]{0x0000000880002000L});
+ public static final BitSet FOLLOW_31_in_ruleProtocolClass2060 = new BitSet(new long[]{0x0000000040000000L});
+ public static final BitSet FOLLOW_30_in_ruleProtocolClass2070 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_rulePortClass_in_ruleProtocolClass2091 = new BitSet(new long[]{0x0000000800002000L});
+ public static final BitSet FOLLOW_ruleProtocolSemantics_in_ruleProtocolClass2114 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleProtocolClass2125 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessage_in_entryRuleMessage2161 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMessage2171 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_32_in_ruleMessage2206 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleMessage2223 = new BitSet(new long[]{0x0000000000200000L});
+ public static final BitSet FOLLOW_21_in_ruleMessage2238 = new BitSet(new long[]{0x0000000000800010L});
+ public static final BitSet FOLLOW_ruleTypedID_in_ruleMessage2260 = new BitSet(new long[]{0x0000000000C00000L});
+ public static final BitSet FOLLOW_22_in_ruleMessage2271 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleTypedID_in_ruleMessage2292 = new BitSet(new long[]{0x0000000000C00000L});
+ public static final BitSet FOLLOW_23_in_ruleMessage2306 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePortClass_in_entryRulePortClass2342 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePortClass2352 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_12_in_rulePortClass2387 = new BitSet(new long[]{0x0000000600120000L});
+ public static final BitSet FOLLOW_33_in_rulePortClass2398 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_rulePortClass2419 = new BitSet(new long[]{0x0000000400120000L});
+ public static final BitSet FOLLOW_ruleAttribute_in_rulePortClass2443 = new BitSet(new long[]{0x0000000400122000L});
+ public static final BitSet FOLLOW_ruleOperation_in_rulePortClass2470 = new BitSet(new long[]{0x0000000400122000L});
+ public static final BitSet FOLLOW_ruleMessageHandler_in_rulePortClass2497 = new BitSet(new long[]{0x0000000400122000L});
+ public static final BitSet FOLLOW_13_in_rulePortClass2509 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessageHandler_in_entryRuleMessageHandler2545 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMessageHandler2555 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_34_in_ruleMessageHandler2590 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleMessageHandler2608 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleMessageHandler2629 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleProtocolSemantics_in_entryRuleProtocolSemantics2665 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleProtocolSemantics2675 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_35_in_ruleProtocolSemantics2710 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleProtocolSemantics2720 = new BitSet(new long[]{0x0000005000000000L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_ruleProtocolSemantics2741 = new BitSet(new long[]{0x0000005000002000L});
+ public static final BitSet FOLLOW_13_in_ruleProtocolSemantics2752 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_entryRuleSemanticsRule2788 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSemanticsRule2798 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsInRule_in_ruleSemanticsRule2845 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsOutRule_in_ruleSemanticsRule2872 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsInRule_in_entryRuleSemanticsInRule2907 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSemanticsInRule2917 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_36_in_ruleSemanticsInRule2952 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSemanticsInRule2970 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_ruleSemanticsInRule2980 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleSemanticsInRule2990 = new BitSet(new long[]{0x0000005000002000L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_ruleSemanticsInRule3011 = new BitSet(new long[]{0x0000005000002000L});
+ public static final BitSet FOLLOW_13_in_ruleSemanticsInRule3022 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSemanticsOutRule_in_entryRuleSemanticsOutRule3058 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSemanticsOutRule3068 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_38_in_ruleSemanticsOutRule3103 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSemanticsOutRule3121 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_ruleSemanticsOutRule3131 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleSemanticsOutRule3141 = new BitSet(new long[]{0x0000005000002000L});
+ public static final BitSet FOLLOW_ruleSemanticsRule_in_ruleSemanticsOutRule3162 = new BitSet(new long[]{0x0000005000002000L});
+ public static final BitSet FOLLOW_13_in_ruleSemanticsOutRule3173 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorClass_in_entryRuleActorClass3209 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorClass3219 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_39_in_ruleActorClass3262 = new BitSet(new long[]{0x0000010000000000L});
+ public static final BitSet FOLLOW_40_in_ruleActorClass3286 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleActorClass3303 = new BitSet(new long[]{0x0000000000011000L});
+ public static final BitSet FOLLOW_16_in_ruleActorClass3319 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleActorClass3342 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleActorClass3354 = new BitSet(new long[]{0x00000E0000002000L});
+ public static final BitSet FOLLOW_41_in_ruleActorClass3365 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleActorClass3375 = new BitSet(new long[]{0x0001300000002000L});
+ public static final BitSet FOLLOW_rulePort_in_ruleActorClass3396 = new BitSet(new long[]{0x0001300000002000L});
+ public static final BitSet FOLLOW_ruleSPPRef_in_ruleActorClass3418 = new BitSet(new long[]{0x0001000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleActorClass3429 = new BitSet(new long[]{0x00000C0000002000L});
+ public static final BitSet FOLLOW_42_in_ruleActorClass3442 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleActorClass3452 = new BitSet(new long[]{0x4502F00006022000L});
+ public static final BitSet FOLLOW_25_in_ruleActorClass3463 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleActorClass3484 = new BitSet(new long[]{0x4502F00004022000L});
+ public static final BitSet FOLLOW_26_in_ruleActorClass3497 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleActorClass3518 = new BitSet(new long[]{0x4502F00000022000L});
+ public static final BitSet FOLLOW_rulePort_in_ruleActorClass3542 = new BitSet(new long[]{0x4502F00000022000L});
+ public static final BitSet FOLLOW_ruleExternalPort_in_ruleActorClass3569 = new BitSet(new long[]{0x4502F00000022000L});
+ public static final BitSet FOLLOW_ruleServiceImplementation_in_ruleActorClass3592 = new BitSet(new long[]{0x4502800000022000L});
+ public static final BitSet FOLLOW_ruleSAPRef_in_ruleActorClass3614 = new BitSet(new long[]{0x4500800000022000L});
+ public static final BitSet FOLLOW_ruleAttribute_in_ruleActorClass3636 = new BitSet(new long[]{0x4500000000022000L});
+ public static final BitSet FOLLOW_ruleActorRef_in_ruleActorClass3658 = new BitSet(new long[]{0x4500000000002000L});
+ public static final BitSet FOLLOW_ruleBinding_in_ruleActorClass3680 = new BitSet(new long[]{0x0500000000002000L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_ruleActorClass3702 = new BitSet(new long[]{0x0400000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleActorClass3713 = new BitSet(new long[]{0x0000080000002000L});
+ public static final BitSet FOLLOW_43_in_ruleActorClass3726 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleActorClass3736 = new BitSet(new long[]{0x8000000000102000L});
+ public static final BitSet FOLLOW_ruleOperation_in_ruleActorClass3757 = new BitSet(new long[]{0x8000000000102000L});
+ public static final BitSet FOLLOW_ruleStateMachine_in_ruleActorClass3779 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleActorClass3790 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleActorClass3802 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePort_in_entryRulePort3840 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePort3850 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_44_in_rulePort3893 = new BitSet(new long[]{0x0000200000000000L});
+ public static final BitSet FOLLOW_45_in_rulePort3917 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_rulePort3934 = new BitSet(new long[]{0x0000000000044000L});
+ public static final BitSet FOLLOW_18_in_rulePort3950 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_RULE_INT_in_rulePort3967 = new BitSet(new long[]{0x0000000000080000L});
+ public static final BitSet FOLLOW_19_in_rulePort3982 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_rulePort3994 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_rulePort4017 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExternalPort_in_entryRuleExternalPort4053 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleExternalPort4063 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_ruleExternalPort4098 = new BitSet(new long[]{0x0000200000000000L});
+ public static final BitSet FOLLOW_45_in_ruleExternalPort4108 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleExternalPort4126 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSAPRef_in_entryRuleSAPRef4162 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSAPRef4172 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_47_in_ruleSAPRef4207 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSAPRef4224 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleSAPRef4239 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleSAPRef4262 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSPPRef_in_entryRuleSPPRef4298 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSPPRef4308 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_48_in_ruleSPPRef4343 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSPPRef4360 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleSPPRef4375 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleSPPRef4398 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleServiceImplementation_in_entryRuleServiceImplementation4434 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleServiceImplementation4444 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_ruleServiceImplementation4479 = new BitSet(new long[]{0x0004000000000000L});
+ public static final BitSet FOLLOW_50_in_ruleServiceImplementation4489 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleServiceImplementation4507 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalSystem_in_entryRuleLogicalSystem4543 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleLogicalSystem4553 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_51_in_ruleLogicalSystem4588 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleLogicalSystem4605 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleLogicalSystem4620 = new BitSet(new long[]{0x0010000000000000L});
+ public static final BitSet FOLLOW_ruleSubSystemRef_in_ruleLogicalSystem4641 = new BitSet(new long[]{0x0510000000002000L});
+ public static final BitSet FOLLOW_ruleBinding_in_ruleLogicalSystem4663 = new BitSet(new long[]{0x0500000000002000L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_ruleLogicalSystem4685 = new BitSet(new long[]{0x0400000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleLogicalSystem4696 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemRef_in_entryRuleSubSystemRef4734 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSubSystemRef4744 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_52_in_ruleSubSystemRef4779 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSubSystemRef4796 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleSubSystemRef4811 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleSubSystemRef4834 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubSystemClass_in_entryRuleSubSystemClass4870 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSubSystemClass4880 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_53_in_ruleSubSystemClass4915 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSubSystemClass4932 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleSubSystemClass4947 = new BitSet(new long[]{0x4001300000000000L});
+ public static final BitSet FOLLOW_rulePort_in_ruleSubSystemClass4968 = new BitSet(new long[]{0x4001300000000000L});
+ public static final BitSet FOLLOW_ruleSPPRef_in_ruleSubSystemClass4990 = new BitSet(new long[]{0x4001000000000000L});
+ public static final BitSet FOLLOW_ruleActorRef_in_ruleSubSystemClass5012 = new BitSet(new long[]{0x4540000000002000L});
+ public static final BitSet FOLLOW_ruleBinding_in_ruleSubSystemClass5034 = new BitSet(new long[]{0x0540000000002000L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_ruleSubSystemClass5056 = new BitSet(new long[]{0x0440000000002000L});
+ public static final BitSet FOLLOW_ruleLogicalThread_in_ruleSubSystemClass5078 = new BitSet(new long[]{0x0040000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleSubSystemClass5089 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLogicalThread_in_entryRuleLogicalThread5125 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleLogicalThread5135 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_54_in_ruleLogicalThread5170 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleLogicalThread5187 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleLogicalThread5202 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleActorInstancePath_in_ruleLogicalThread5223 = new BitSet(new long[]{0x0000000000402000L});
+ public static final BitSet FOLLOW_22_in_ruleLogicalThread5234 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleActorInstancePath_in_ruleLogicalThread5255 = new BitSet(new long[]{0x0000000000402000L});
+ public static final BitSet FOLLOW_13_in_ruleLogicalThread5267 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorInstancePath_in_entryRuleActorInstancePath5303 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorInstancePath5313 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleActorInstancePath5355 = new BitSet(new long[]{0x0080000000000002L});
+ public static final BitSet FOLLOW_55_in_ruleActorInstancePath5371 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleActorInstancePath5388 = new BitSet(new long[]{0x0080000000000002L});
+ public static final BitSet FOLLOW_ruleBinding_in_entryRuleBinding5431 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBinding5441 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_56_in_ruleBinding5476 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleBindingEndPoint_in_ruleBinding5497 = new BitSet(new long[]{0x0200000000000000L});
+ public static final BitSet FOLLOW_57_in_ruleBinding5507 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleBindingEndPoint_in_ruleBinding5528 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBindingEndPoint_in_entryRuleBindingEndPoint5564 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBindingEndPoint5574 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleBindingEndPoint5618 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_55_in_ruleBindingEndPoint5628 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleBindingEndPoint5648 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleLayerConnection_in_entryRuleLayerConnection5684 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleLayerConnection5694 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_58_in_ruleLayerConnection5729 = new BitSet(new long[]{0x3000000000000000L});
+ public static final BitSet FOLLOW_ruleSAPoint_in_ruleLayerConnection5750 = new BitSet(new long[]{0x0800000000000000L});
+ public static final BitSet FOLLOW_59_in_ruleLayerConnection5760 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleSPPoint_in_ruleLayerConnection5781 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSAPoint_in_entryRuleSAPoint5817 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSAPoint5827 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefSAPoint_in_ruleSAPoint5874 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRelaySAPoint_in_ruleSAPoint5901 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefSAPoint_in_entryRuleRefSAPoint5936 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRefSAPoint5946 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_60_in_ruleRefSAPoint5981 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleRefSAPoint5999 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRelaySAPoint_in_entryRuleRelaySAPoint6035 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRelaySAPoint6045 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_61_in_ruleRelaySAPoint6080 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleRelaySAPoint6098 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSPPoint_in_entryRuleSPPoint6134 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSPPoint6144 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSPPoint6187 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_55_in_ruleSPPoint6197 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSPPoint6215 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleActorRef_in_entryRuleActorRef6251 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleActorRef6261 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_62_in_ruleActorRef6296 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleActorRef6313 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleActorRef6328 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleActorRef6351 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateGraphNode_in_entryRuleStateGraphNode6387 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateGraphNode6397 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleState_in_ruleStateGraphNode6444 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_ruleStateGraphNode6471 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_ruleStateGraphNode6498 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleState_in_entryRuleState6535 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleState6545 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBaseState_in_ruleState6592 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefinedState_in_ruleState6619 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateGraph_in_entryRuleStateGraph6654 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateGraph6664 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_12_in_ruleStateGraph6699 = new BitSet(new long[]{0x0000000000000000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleState_in_ruleStateGraph6721 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_ruleStateGraph6748 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_ruleStateGraph6775 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleTransition_in_ruleStateGraph6802 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_13_in_ruleStateGraph6814 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateMachine_in_entryRuleStateMachine6850 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateMachine6860 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_63_in_ruleStateMachine6895 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleStateMachine6905 = new BitSet(new long[]{0x0000000000000000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleState_in_ruleStateMachine6927 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_ruleStateMachine6954 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_ruleStateMachine6981 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_ruleTransition_in_ruleStateMachine7008 = new BitSet(new long[]{0x0000000000002000L,0x00000000000007F1L});
+ public static final BitSet FOLLOW_13_in_ruleStateMachine7020 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBaseState_in_entryRuleBaseState7056 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBaseState7066 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_64_in_ruleBaseState7101 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleBaseState7118 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleBaseState7133 = new BitSet(new long[]{0x0000000000002000L,0x000000000000000EL});
+ public static final BitSet FOLLOW_65_in_ruleBaseState7144 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleBaseState7165 = new BitSet(new long[]{0x0000000000002000L,0x000000000000000CL});
+ public static final BitSet FOLLOW_66_in_ruleBaseState7178 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleBaseState7199 = new BitSet(new long[]{0x0000000000002000L,0x0000000000000008L});
+ public static final BitSet FOLLOW_67_in_ruleBaseState7212 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleStateGraph_in_ruleBaseState7233 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleBaseState7245 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleRefinedState_in_entryRuleRefinedState7281 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleRefinedState7291 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_68_in_ruleRefinedState7326 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleRefinedState7349 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleRefinedState7359 = new BitSet(new long[]{0x0000000000002000L,0x000000000000000EL});
+ public static final BitSet FOLLOW_65_in_ruleRefinedState7370 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleRefinedState7391 = new BitSet(new long[]{0x0000000000002000L,0x000000000000000CL});
+ public static final BitSet FOLLOW_66_in_ruleRefinedState7404 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleRefinedState7425 = new BitSet(new long[]{0x0000000000002000L,0x0000000000000008L});
+ public static final BitSet FOLLOW_67_in_ruleRefinedState7438 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleStateGraph_in_ruleRefinedState7459 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleRefinedState7471 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_entryRuleDetailCode7507 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDetailCode7517 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_12_in_ruleDetailCode7552 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RULE_STRING_in_ruleDetailCode7569 = new BitSet(new long[]{0x0000000000002040L});
+ public static final BitSet FOLLOW_13_in_ruleDetailCode7585 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPoint_in_entryRuleTrPoint7621 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTrPoint7631 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionPoint_in_ruleTrPoint7678 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEntryPoint_in_ruleTrPoint7705 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExitPoint_in_ruleTrPoint7732 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionPoint_in_entryRuleTransitionPoint7767 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransitionPoint7777 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_69_in_ruleTransitionPoint7820 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+ public static final BitSet FOLLOW_70_in_ruleTransitionPoint7844 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleTransitionPoint7861 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEntryPoint_in_entryRuleEntryPoint7902 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleEntryPoint7912 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_71_in_ruleEntryPoint7947 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleEntryPoint7964 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExitPoint_in_entryRuleExitPoint8005 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleExitPoint8015 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_72_in_ruleExitPoint8050 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleExitPoint8067 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicePoint_in_entryRuleChoicePoint8108 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleChoicePoint8118 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_73_in_ruleChoicePoint8153 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleChoicePoint8170 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransition_in_entryRuleTransition8211 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransition8221 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInitialTransition_in_ruleTransition8268 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNonInitialTransition_in_ruleTransition8295 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNonInitialTransition_in_entryRuleNonInitialTransition8330 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleNonInitialTransition8340 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTriggeredTransition_in_ruleNonInitialTransition8387 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleContinuationTransition_in_ruleNonInitialTransition8414 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleCPBranchTransition_in_ruleNonInitialTransition8441 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleInitialTransition_in_entryRuleInitialTransition8476 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleInitialTransition8486 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_74_in_ruleInitialTransition8521 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleInitialTransition8538 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleInitialTransition8554 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+ public static final BitSet FOLLOW_75_in_ruleInitialTransition8564 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_ruleInitialTransition8574 = new BitSet(new long[]{0x0000000000000010L,0x0000000000030000L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_ruleInitialTransition8595 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleInitialTransition8605 = new BitSet(new long[]{0x0000000000002000L,0x0000000000001000L});
+ public static final BitSet FOLLOW_76_in_ruleInitialTransition8616 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleInitialTransition8637 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleInitialTransition8649 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleContinuationTransition_in_entryRuleContinuationTransition8685 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleContinuationTransition8695 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_74_in_ruleContinuationTransition8730 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleContinuationTransition8747 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleContinuationTransition8763 = new BitSet(new long[]{0x0000000000000010L,0x0000000000030000L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_ruleContinuationTransition8784 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_ruleContinuationTransition8794 = new BitSet(new long[]{0x0000000000000010L,0x0000000000030000L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_ruleContinuationTransition8815 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleContinuationTransition8825 = new BitSet(new long[]{0x0000000000002000L,0x0000000000001000L});
+ public static final BitSet FOLLOW_76_in_ruleContinuationTransition8836 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleContinuationTransition8857 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleContinuationTransition8869 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTriggeredTransition_in_entryRuleTriggeredTransition8905 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTriggeredTransition8915 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_74_in_ruleTriggeredTransition8950 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleTriggeredTransition8967 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleTriggeredTransition8983 = new BitSet(new long[]{0x0000000000000010L,0x0000000000030000L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_ruleTriggeredTransition9004 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_ruleTriggeredTransition9014 = new BitSet(new long[]{0x0000000000000010L,0x0000000000030000L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_ruleTriggeredTransition9035 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleTriggeredTransition9045 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+ public static final BitSet FOLLOW_77_in_ruleTriggeredTransition9055 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleTriggeredTransition9065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+ public static final BitSet FOLLOW_ruleTrigger_in_ruleTriggeredTransition9086 = new BitSet(new long[]{0x0000000000002000L,0x0000000000004000L});
+ public static final BitSet FOLLOW_78_in_ruleTriggeredTransition9097 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+ public static final BitSet FOLLOW_ruleTrigger_in_ruleTriggeredTransition9118 = new BitSet(new long[]{0x0000000000002000L,0x0000000000004000L});
+ public static final BitSet FOLLOW_13_in_ruleTriggeredTransition9130 = new BitSet(new long[]{0x0000000000002000L,0x0000000000001000L});
+ public static final BitSet FOLLOW_76_in_ruleTriggeredTransition9141 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleTriggeredTransition9162 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleTriggeredTransition9174 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleCPBranchTransition_in_entryRuleCPBranchTransition9210 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleCPBranchTransition9220 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_74_in_ruleCPBranchTransition9255 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleCPBranchTransition9272 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleCPBranchTransition9288 = new BitSet(new long[]{0x0000000000000010L,0x0000000000030000L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_ruleCPBranchTransition9309 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_ruleCPBranchTransition9319 = new BitSet(new long[]{0x0000000000000010L,0x0000000000030000L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_ruleCPBranchTransition9340 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_12_in_ruleCPBranchTransition9350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+ public static final BitSet FOLLOW_79_in_ruleCPBranchTransition9360 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleCPBranchTransition9381 = new BitSet(new long[]{0x0000000000002000L,0x0000000000001000L});
+ public static final BitSet FOLLOW_76_in_ruleCPBranchTransition9392 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleCPBranchTransition9413 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleCPBranchTransition9425 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionTerminal_in_entryRuleTransitionTerminal9461 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransitionTerminal9471 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateTerminal_in_ruleTransitionTerminal9518 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPointTerminal_in_ruleTransitionTerminal9545 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubStateTrPointTerminal_in_ruleTransitionTerminal9572 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicepointTerminal_in_ruleTransitionTerminal9599 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleStateTerminal_in_entryRuleStateTerminal9634 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleStateTerminal9644 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleStateTerminal9686 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrPointTerminal_in_entryRuleTrPointTerminal9721 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTrPointTerminal9731 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_80_in_ruleTrPointTerminal9766 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleTrPointTerminal9784 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleSubStateTrPointTerminal_in_entryRuleSubStateTrPointTerminal9820 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleSubStateTrPointTerminal9830 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSubStateTrPointTerminal9873 = new BitSet(new long[]{0x0004000000000000L});
+ public static final BitSet FOLLOW_50_in_ruleSubStateTrPointTerminal9883 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleSubStateTrPointTerminal9901 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleChoicepointTerminal_in_entryRuleChoicepointTerminal9937 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleChoicepointTerminal9947 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_81_in_ruleChoicepointTerminal9982 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleChoicepointTerminal10000 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTrigger_in_entryRuleTrigger10036 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTrigger10046 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_82_in_ruleTrigger10081 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleMessageFromIf_in_ruleTrigger10102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000380000L});
+ public static final BitSet FOLLOW_83_in_ruleTrigger10113 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleMessageFromIf_in_ruleTrigger10134 = new BitSet(new long[]{0x0000000000000000L,0x0000000000380000L});
+ public static final BitSet FOLLOW_ruleGuard_in_ruleTrigger10157 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+ public static final BitSet FOLLOW_84_in_ruleTrigger10168 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMessageFromIf_in_entryRuleMessageFromIf10204 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMessageFromIf10214 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleMessageFromIf10257 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_14_in_ruleMessageFromIf10267 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleMessageFromIf10285 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleGuard_in_entryRuleGuard10321 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleGuard10331 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_85_in_ruleGuard10366 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_ruleDetailCode_in_ruleGuard10387 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImport_in_entryRuleImport10423 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleImport10433 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_86_in_ruleImport10468 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_ruleImportedFQN_in_ruleImport10489 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImportedFQN_in_entryRuleImportedFQN10526 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleImportedFQN10537 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_ruleImportedFQN10584 = new BitSet(new long[]{0x0080000000000002L});
+ public static final BitSet FOLLOW_55_in_ruleImportedFQN10603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+ public static final BitSet FOLLOW_87_in_ruleImportedFQN10616 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFQN_in_entryRuleFQN10659 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFQN10670 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleFQN10710 = new BitSet(new long[]{0x0080000000000002L});
+ public static final BitSet FOLLOW_55_in_ruleFQN10729 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleFQN10744 = new BitSet(new long[]{0x0080000000000002L});
+ public static final BitSet FOLLOW_88_in_rulePrimitiveType10803 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_89_in_rulePrimitiveType10818 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_90_in_rulePrimitiveType10833 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_91_in_rulePrimitiveType10848 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_92_in_rulePrimitiveType10863 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_93_in_rulePrimitiveType10878 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_94_in_rulePrimitiveType10893 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_95_in_rulePrimitiveType10908 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_96_in_rulePrimitiveType10923 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_97_in_rulePrimitiveType10938 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_98_in_rulePrimitiveType10953 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_99_in_rulePrimitiveType10968 = new BitSet(new long[]{0x0000000000000002L});
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom__.g b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom__.g
new file mode 100644
index 000000000..d04c4e90a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom__.g
@@ -0,0 +1,121 @@
+lexer grammar InternalRoom;
+@header {
+package org.eclipse.etrice.core.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+T11 : 'RoomModel' ;
+T12 : '{' ;
+T13 : '}' ;
+T14 : ':' ;
+T15 : 'DataClass' ;
+T16 : 'extends' ;
+T17 : 'Attribute' ;
+T18 : '[' ;
+T19 : ']' ;
+T20 : 'Operation' ;
+T21 : '(' ;
+T22 : ',' ;
+T23 : ')' ;
+T24 : 'ProtocolClass' ;
+T25 : 'usercode1' ;
+T26 : 'usercode2' ;
+T27 : 'incoming' ;
+T28 : 'outgoing' ;
+T29 : 'regular' ;
+T30 : 'PortClass' ;
+T31 : 'conjugate' ;
+T32 : 'Message' ;
+T33 : 'usercode' ;
+T34 : 'handle' ;
+T35 : 'semantics' ;
+T36 : 'in' ;
+T37 : '->' ;
+T38 : 'out' ;
+T39 : 'abstract' ;
+T40 : 'ActorClass' ;
+T41 : 'Interface' ;
+T42 : 'Structure' ;
+T43 : 'Behavior' ;
+T44 : 'conjugated' ;
+T45 : 'Port' ;
+T46 : 'external' ;
+T47 : 'SAP' ;
+T48 : 'SPP' ;
+T49 : 'ServiceImplementation' ;
+T50 : 'of' ;
+T51 : 'LogicalSystem' ;
+T52 : 'SubSystemRef' ;
+T53 : 'SubSystemClass' ;
+T54 : 'LogicalThread' ;
+T55 : '.' ;
+T56 : 'Binding' ;
+T57 : 'and' ;
+T58 : 'LayerConnection' ;
+T59 : 'satisfied_by' ;
+T60 : 'ref' ;
+T61 : 'relay_sap' ;
+T62 : 'ActorRef' ;
+T63 : 'StateMachine' ;
+T64 : 'State' ;
+T65 : 'entry' ;
+T66 : 'exit' ;
+T67 : 'subgraph' ;
+T68 : 'RefinedState' ;
+T69 : 'handler' ;
+T70 : 'TransitionPoint' ;
+T71 : 'EntryPoint' ;
+T72 : 'ExitPoint' ;
+T73 : 'ChoicePoint' ;
+T74 : 'Transition' ;
+T75 : 'initial' ;
+T76 : 'action' ;
+T77 : 'triggers' ;
+T78 : 'or' ;
+T79 : 'cond' ;
+T80 : 'my' ;
+T81 : 'cp' ;
+T82 : '<' ;
+T83 : '|' ;
+T84 : '>' ;
+T85 : 'guard' ;
+T86 : 'import' ;
+T87 : '*' ;
+T88 : 'void' ;
+T89 : 'int8' ;
+T90 : 'int16' ;
+T91 : 'int32' ;
+T92 : 'uint8' ;
+T93 : 'uint16' ;
+T94 : 'uint32' ;
+T95 : 'float32' ;
+T96 : 'float64' ;
+T97 : 'boolean' ;
+T98 : 'string' ;
+T99 : 'char' ;
+
+// $ANTLR src "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g" 6213
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+// $ANTLR src "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g" 6215
+RULE_INT : ('0'..'9')+;
+
+// $ANTLR src "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g" 6217
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+// $ANTLR src "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g" 6219
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+// $ANTLR src "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g" 6221
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+// $ANTLR src "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g" 6223
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+// $ANTLR src "../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoom.g" 6225
+RULE_ANY_OTHER : .;
+
+
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorClass.java
new file mode 100644
index 000000000..d894b6ade
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorClass.java
@@ -0,0 +1,282 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Actor Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getBase <em>Base</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getIfPorts <em>If Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getUserCode1 <em>User Code1</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getUserCode2 <em>User Code2</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getIntPorts <em>Int Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getExtPorts <em>Ext Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getServiceImplementations <em>Service Implementations</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getStrSAPs <em>Str SA Ps</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getAttributes <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getOperations <em>Operations</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorClass#getStateMachine <em>State Machine</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass()
+ * @model
+ * @generated
+ */
+public interface ActorClass extends ActorContainerClass
+{
+ /**
+ * Returns the value of the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Abstract</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Abstract</em>' attribute.
+ * @see #setAbstract(boolean)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_Abstract()
+ * @model
+ * @generated
+ */
+ boolean isAbstract();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ActorClass#isAbstract <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Abstract</em>' attribute.
+ * @see #isAbstract()
+ * @generated
+ */
+ void setAbstract(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base</em>' reference.
+ * @see #setBase(ActorClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_Base()
+ * @model
+ * @generated
+ */
+ ActorClass getBase();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ActorClass#getBase <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base</em>' reference.
+ * @see #getBase()
+ * @generated
+ */
+ void setBase(ActorClass value);
+
+ /**
+ * Returns the value of the '<em><b>If Ports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Port}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>If Ports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>If Ports</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_IfPorts()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Port> getIfPorts();
+
+ /**
+ * Returns the value of the '<em><b>User Code1</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>User Code1</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User Code1</em>' containment reference.
+ * @see #setUserCode1(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_UserCode1()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getUserCode1();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ActorClass#getUserCode1 <em>User Code1</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>User Code1</em>' containment reference.
+ * @see #getUserCode1()
+ * @generated
+ */
+ void setUserCode1(DetailCode value);
+
+ /**
+ * Returns the value of the '<em><b>User Code2</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>User Code2</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User Code2</em>' containment reference.
+ * @see #setUserCode2(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_UserCode2()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getUserCode2();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ActorClass#getUserCode2 <em>User Code2</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>User Code2</em>' containment reference.
+ * @see #getUserCode2()
+ * @generated
+ */
+ void setUserCode2(DetailCode value);
+
+ /**
+ * Returns the value of the '<em><b>Int Ports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Port}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Int Ports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Int Ports</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_IntPorts()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Port> getIntPorts();
+
+ /**
+ * Returns the value of the '<em><b>Ext Ports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ExternalPort}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ext Ports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ext Ports</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_ExtPorts()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ExternalPort> getExtPorts();
+
+ /**
+ * Returns the value of the '<em><b>Service Implementations</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ServiceImplementation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Service Implementations</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Service Implementations</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_ServiceImplementations()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ServiceImplementation> getServiceImplementations();
+
+ /**
+ * Returns the value of the '<em><b>Str SA Ps</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.SAPRef}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Str SA Ps</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Str SA Ps</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_StrSAPs()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SAPRef> getStrSAPs();
+
+ /**
+ * Returns the value of the '<em><b>Attributes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Attribute}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attributes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attributes</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_Attributes()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Attribute> getAttributes();
+
+ /**
+ * Returns the value of the '<em><b>Operations</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Operation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operations</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operations</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_Operations()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Operation> getOperations();
+
+ /**
+ * Returns the value of the '<em><b>State Machine</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>State Machine</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>State Machine</em>' containment reference.
+ * @see #setStateMachine(StateGraph)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_StateMachine()
+ * @model containment="true"
+ * @generated
+ */
+ StateGraph getStateMachine();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ActorClass#getStateMachine <em>State Machine</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>State Machine</em>' containment reference.
+ * @see #getStateMachine()
+ * @generated
+ */
+ void setStateMachine(StateGraph value);
+
+} // ActorClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerClass.java
new file mode 100644
index 000000000..217199f1f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerClass.java
@@ -0,0 +1,62 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Actor Container Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ActorContainerClass#getIfSPPs <em>If SP Ps</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ActorContainerClass#getActorRefs <em>Actor Refs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorContainerClass()
+ * @model
+ * @generated
+ */
+public interface ActorContainerClass extends StructureClass
+{
+ /**
+ * Returns the value of the '<em><b>If SP Ps</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.SPPRef}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>If SP Ps</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>If SP Ps</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorContainerClass_IfSPPs()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SPPRef> getIfSPPs();
+
+ /**
+ * Returns the value of the '<em><b>Actor Refs</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ActorRef}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actor Refs</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actor Refs</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorContainerClass_ActorRefs()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ActorRef> getActorRefs();
+
+} // ActorContainerClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerRef.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerRef.java
new file mode 100644
index 000000000..f0dd79027
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorContainerRef.java
@@ -0,0 +1,55 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Actor Container Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ActorContainerRef#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorContainerRef()
+ * @model
+ * @generated
+ */
+public interface ActorContainerRef extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorContainerRef_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ActorContainerRef#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // ActorContainerRef
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorInstancePath.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorInstancePath.java
new file mode 100644
index 000000000..7ac566b42
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorInstancePath.java
@@ -0,0 +1,47 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Actor Instance Path</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ActorInstancePath#getSegments <em>Segments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorInstancePath()
+ * @model
+ * @generated
+ */
+public interface ActorInstancePath extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Segments</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Segments</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Segments</em>' attribute list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorInstancePath_Segments()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getSegments();
+
+} // ActorInstancePath
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorRef.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorRef.java
new file mode 100644
index 000000000..7b6c30ae7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ActorRef.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Actor Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ActorRef#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorRef()
+ * @model
+ * @generated
+ */
+public interface ActorRef extends ActorContainerRef
+{
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(ActorClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getActorRef_Type()
+ * @model
+ * @generated
+ */
+ ActorClass getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ActorRef#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(ActorClass value);
+
+} // ActorRef
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Attribute.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Attribute.java
new file mode 100644
index 000000000..3aea641c7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Attribute.java
@@ -0,0 +1,109 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Attribute#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Attribute#getSize <em>Size</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Attribute#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getAttribute()
+ * @model
+ * @generated
+ */
+public interface Attribute extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getAttribute_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Attribute#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Size</em>' attribute.
+ * @see #setSize(int)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getAttribute_Size()
+ * @model
+ * @generated
+ */
+ int getSize();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Attribute#getSize <em>Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Size</em>' attribute.
+ * @see #getSize()
+ * @generated
+ */
+ void setSize(int value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' containment reference.
+ * @see #setType(Type)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getAttribute_Type()
+ * @model containment="true"
+ * @generated
+ */
+ Type getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Attribute#getType <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' containment reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Type value);
+
+} // Attribute
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BaseState.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BaseState.java
new file mode 100644
index 000000000..f6d39da62
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BaseState.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Base State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.BaseState#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBaseState()
+ * @model
+ * @generated
+ */
+public interface BaseState extends State
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBaseState_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.BaseState#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // BaseState
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Binding.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Binding.java
new file mode 100644
index 000000000..9f2ea32e5
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Binding.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Binding#getEndpoint1 <em>Endpoint1</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Binding#getEndpoint2 <em>Endpoint2</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBinding()
+ * @model
+ * @generated
+ */
+public interface Binding extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Endpoint1</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Endpoint1</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Endpoint1</em>' containment reference.
+ * @see #setEndpoint1(BindingEndPoint)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBinding_Endpoint1()
+ * @model containment="true"
+ * @generated
+ */
+ BindingEndPoint getEndpoint1();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Binding#getEndpoint1 <em>Endpoint1</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Endpoint1</em>' containment reference.
+ * @see #getEndpoint1()
+ * @generated
+ */
+ void setEndpoint1(BindingEndPoint value);
+
+ /**
+ * Returns the value of the '<em><b>Endpoint2</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Endpoint2</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Endpoint2</em>' containment reference.
+ * @see #setEndpoint2(BindingEndPoint)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBinding_Endpoint2()
+ * @model containment="true"
+ * @generated
+ */
+ BindingEndPoint getEndpoint2();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Binding#getEndpoint2 <em>Endpoint2</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Endpoint2</em>' containment reference.
+ * @see #getEndpoint2()
+ * @generated
+ */
+ void setEndpoint2(BindingEndPoint value);
+
+} // Binding
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BindingEndPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BindingEndPoint.java
new file mode 100644
index 000000000..72cad3193
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/BindingEndPoint.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Binding End Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.BindingEndPoint#getActorRef <em>Actor Ref</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.BindingEndPoint#getPort <em>Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBindingEndPoint()
+ * @model
+ * @generated
+ */
+public interface BindingEndPoint extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Actor Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actor Ref</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actor Ref</em>' reference.
+ * @see #setActorRef(ActorContainerRef)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBindingEndPoint_ActorRef()
+ * @model
+ * @generated
+ */
+ ActorContainerRef getActorRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.BindingEndPoint#getActorRef <em>Actor Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Actor Ref</em>' reference.
+ * @see #getActorRef()
+ * @generated
+ */
+ void setActorRef(ActorContainerRef value);
+
+ /**
+ * Returns the value of the '<em><b>Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Port</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Port</em>' reference.
+ * @see #setPort(Port)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getBindingEndPoint_Port()
+ * @model
+ * @generated
+ */
+ Port getPort();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.BindingEndPoint#getPort <em>Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Port</em>' reference.
+ * @see #getPort()
+ * @generated
+ */
+ void setPort(Port value);
+
+} // BindingEndPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/CPBranchTransition.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/CPBranchTransition.java
new file mode 100644
index 000000000..174c644d3
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/CPBranchTransition.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>CP Branch Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.CPBranchTransition#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getCPBranchTransition()
+ * @model
+ * @generated
+ */
+public interface CPBranchTransition extends NonInitialTransition
+{
+ /**
+ * Returns the value of the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Condition</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Condition</em>' containment reference.
+ * @see #setCondition(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getCPBranchTransition_Condition()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getCondition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.CPBranchTransition#getCondition <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Condition</em>' containment reference.
+ * @see #getCondition()
+ * @generated
+ */
+ void setCondition(DetailCode value);
+
+} // CPBranchTransition
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicePoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicePoint.java
new file mode 100644
index 000000000..6ab1ff5ea
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicePoint.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Choice Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ChoicePoint#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getChoicePoint()
+ * @model
+ * @generated
+ */
+public interface ChoicePoint extends StateGraphNode
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getChoicePoint_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ChoicePoint#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // ChoicePoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicepointTerminal.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicepointTerminal.java
new file mode 100644
index 000000000..2f18c8826
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ChoicepointTerminal.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Choicepoint Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ChoicepointTerminal#getCp <em>Cp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getChoicepointTerminal()
+ * @model
+ * @generated
+ */
+public interface ChoicepointTerminal extends TransitionTerminal
+{
+ /**
+ * Returns the value of the '<em><b>Cp</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cp</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cp</em>' reference.
+ * @see #setCp(ChoicePoint)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getChoicepointTerminal_Cp()
+ * @model
+ * @generated
+ */
+ ChoicePoint getCp();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ChoicepointTerminal#getCp <em>Cp</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cp</em>' reference.
+ * @see #getCp()
+ * @generated
+ */
+ void setCp(ChoicePoint value);
+
+} // ChoicepointTerminal
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ContinuationTransition.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ContinuationTransition.java
new file mode 100644
index 000000000..7625e234b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ContinuationTransition.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Continuation Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getContinuationTransition()
+ * @model
+ * @generated
+ */
+public interface ContinuationTransition extends NonInitialTransition
+{
+} // ContinuationTransition
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DataClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DataClass.java
new file mode 100644
index 000000000..ff39f7902
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DataClass.java
@@ -0,0 +1,106 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.DataClass#getBase <em>Base</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.DataClass#getImports <em>Imports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.DataClass#getAttributes <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.DataClass#getOperations <em>Operations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getDataClass()
+ * @model
+ * @generated
+ */
+public interface DataClass extends RoomClass
+{
+ /**
+ * Returns the value of the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base</em>' reference.
+ * @see #setBase(DataClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getDataClass_Base()
+ * @model
+ * @generated
+ */
+ DataClass getBase();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.DataClass#getBase <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base</em>' reference.
+ * @see #getBase()
+ * @generated
+ */
+ void setBase(DataClass value);
+
+ /**
+ * Returns the value of the '<em><b>Imports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Import}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Imports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Imports</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getDataClass_Imports()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Import> getImports();
+
+ /**
+ * Returns the value of the '<em><b>Attributes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Attribute}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attributes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attributes</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getDataClass_Attributes()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Attribute> getAttributes();
+
+ /**
+ * Returns the value of the '<em><b>Operations</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Operation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operations</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operations</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getDataClass_Operations()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Operation> getOperations();
+
+} // DataClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DetailCode.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DetailCode.java
new file mode 100644
index 000000000..d46cf4138
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/DetailCode.java
@@ -0,0 +1,47 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Detail Code</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.DetailCode#getCommands <em>Commands</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getDetailCode()
+ * @model
+ * @generated
+ */
+public interface DetailCode extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Commands</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Commands</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Commands</em>' attribute list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getDetailCode_Commands()
+ * @model unique="false"
+ * @generated
+ */
+ EList<String> getCommands();
+
+} // DetailCode
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/EntryPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/EntryPoint.java
new file mode 100644
index 000000000..9e0de54da
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/EntryPoint.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entry Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getEntryPoint()
+ * @model
+ * @generated
+ */
+public interface EntryPoint extends TrPoint
+{
+} // EntryPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExitPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExitPoint.java
new file mode 100644
index 000000000..eb9647a44
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExitPoint.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Exit Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getExitPoint()
+ * @model
+ * @generated
+ */
+public interface ExitPoint extends TrPoint
+{
+} // ExitPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExternalPort.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExternalPort.java
new file mode 100644
index 000000000..da787abac
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ExternalPort.java
@@ -0,0 +1,55 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>External Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ExternalPort#getIfport <em>Ifport</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getExternalPort()
+ * @model
+ * @generated
+ */
+public interface ExternalPort extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Ifport</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ifport</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ifport</em>' reference.
+ * @see #setIfport(Port)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getExternalPort_Ifport()
+ * @model
+ * @generated
+ */
+ Port getIfport();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ExternalPort#getIfport <em>Ifport</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ifport</em>' reference.
+ * @see #getIfport()
+ * @generated
+ */
+ void setIfport(Port value);
+
+} // ExternalPort
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeType.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeType.java
new file mode 100644
index 000000000..c5c1e633d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeType.java
@@ -0,0 +1,85 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Free Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.FreeType#getPrim <em>Prim</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.FreeType#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getFreeType()
+ * @model
+ * @generated
+ */
+public interface FreeType extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Prim</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.etrice.core.room.PrimitiveType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Prim</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Prim</em>' attribute.
+ * @see org.eclipse.etrice.core.room.PrimitiveType
+ * @see #setPrim(PrimitiveType)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getFreeType_Prim()
+ * @model
+ * @generated
+ */
+ PrimitiveType getPrim();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.FreeType#getPrim <em>Prim</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Prim</em>' attribute.
+ * @see org.eclipse.etrice.core.room.PrimitiveType
+ * @see #getPrim()
+ * @generated
+ */
+ void setPrim(PrimitiveType value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' attribute.
+ * @see #setType(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getFreeType_Type()
+ * @model
+ * @generated
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.FreeType#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see #getType()
+ * @generated
+ */
+ void setType(String value);
+
+} // FreeType
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeTypedID.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeTypedID.java
new file mode 100644
index 000000000..78eb614ad
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/FreeTypedID.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Free Typed ID</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.FreeTypedID#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.FreeTypedID#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getFreeTypedID()
+ * @model
+ * @generated
+ */
+public interface FreeTypedID extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getFreeTypedID_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.FreeTypedID#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' containment reference.
+ * @see #setType(FreeType)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getFreeTypedID_Type()
+ * @model containment="true"
+ * @generated
+ */
+ FreeType getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.FreeTypedID#getType <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' containment reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(FreeType value);
+
+} // FreeTypedID
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Guard.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Guard.java
new file mode 100644
index 000000000..d2a26bdde
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Guard.java
@@ -0,0 +1,55 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Guard</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Guard#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getGuard()
+ * @model
+ * @generated
+ */
+public interface Guard extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Guard</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Guard</em>' containment reference.
+ * @see #setGuard(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getGuard_Guard()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getGuard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Guard#getGuard <em>Guard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Guard</em>' containment reference.
+ * @see #getGuard()
+ * @generated
+ */
+ void setGuard(DetailCode value);
+
+} // Guard
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Import.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Import.java
new file mode 100644
index 000000000..46e314edd
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Import.java
@@ -0,0 +1,55 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Import</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Import#getImportedNamespace <em>Imported Namespace</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getImport()
+ * @model
+ * @generated
+ */
+public interface Import extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Imported Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Imported Namespace</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Imported Namespace</em>' attribute.
+ * @see #setImportedNamespace(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getImport_ImportedNamespace()
+ * @model
+ * @generated
+ */
+ String getImportedNamespace();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Import#getImportedNamespace <em>Imported Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Imported Namespace</em>' attribute.
+ * @see #getImportedNamespace()
+ * @generated
+ */
+ void setImportedNamespace(String value);
+
+} // Import
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InitialTransition.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InitialTransition.java
new file mode 100644
index 000000000..07054e3a7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InitialTransition.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Initial Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getInitialTransition()
+ * @model
+ * @generated
+ */
+public interface InitialTransition extends Transition
+{
+} // InitialTransition
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InterfaceItem.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InterfaceItem.java
new file mode 100644
index 000000000..1cdfa3b48
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/InterfaceItem.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Interface Item</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.InterfaceItem#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.InterfaceItem#getProtocol <em>Protocol</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getInterfaceItem()
+ * @model
+ * @generated
+ */
+public interface InterfaceItem extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getInterfaceItem_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.InterfaceItem#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Protocol</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Protocol</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Protocol</em>' reference.
+ * @see #setProtocol(ProtocolClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getInterfaceItem_Protocol()
+ * @model
+ * @generated
+ */
+ ProtocolClass getProtocol();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.InterfaceItem#getProtocol <em>Protocol</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Protocol</em>' reference.
+ * @see #getProtocol()
+ * @generated
+ */
+ void setProtocol(ProtocolClass value);
+
+} // InterfaceItem
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LayerConnection.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LayerConnection.java
new file mode 100644
index 000000000..6e391d91a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LayerConnection.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Connection</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.LayerConnection#getFrom <em>From</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.LayerConnection#getTo <em>To</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLayerConnection()
+ * @model
+ * @generated
+ */
+public interface LayerConnection extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>From</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>From</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>From</em>' containment reference.
+ * @see #setFrom(SAPoint)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLayerConnection_From()
+ * @model containment="true"
+ * @generated
+ */
+ SAPoint getFrom();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.LayerConnection#getFrom <em>From</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>From</em>' containment reference.
+ * @see #getFrom()
+ * @generated
+ */
+ void setFrom(SAPoint value);
+
+ /**
+ * Returns the value of the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>To</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>To</em>' containment reference.
+ * @see #setTo(SPPoint)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLayerConnection_To()
+ * @model containment="true"
+ * @generated
+ */
+ SPPoint getTo();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.LayerConnection#getTo <em>To</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>To</em>' containment reference.
+ * @see #getTo()
+ * @generated
+ */
+ void setTo(SPPoint value);
+
+} // LayerConnection
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalSystem.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalSystem.java
new file mode 100644
index 000000000..f01a4e7b1
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalSystem.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Logical System</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.LogicalSystem#getSubSystems <em>Sub Systems</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLogicalSystem()
+ * @model
+ * @generated
+ */
+public interface LogicalSystem extends StructureClass
+{
+ /**
+ * Returns the value of the '<em><b>Sub Systems</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.SubSystemRef}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sub Systems</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sub Systems</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLogicalSystem_SubSystems()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SubSystemRef> getSubSystems();
+
+} // LogicalSystem
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalThread.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalThread.java
new file mode 100644
index 000000000..895f98250
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/LogicalThread.java
@@ -0,0 +1,74 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Logical Thread</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.LogicalThread#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.LogicalThread#getInstances <em>Instances</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLogicalThread()
+ * @model
+ * @generated
+ */
+public interface LogicalThread extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLogicalThread_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.LogicalThread#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Instances</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ActorInstancePath}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Instances</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Instances</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getLogicalThread_Instances()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ActorInstancePath> getInstances();
+
+} // LogicalThread
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Message.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Message.java
new file mode 100644
index 000000000..881b34d0e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Message.java
@@ -0,0 +1,74 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Message</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Message#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Message#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessage()
+ * @model
+ * @generated
+ */
+public interface Message extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessage_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Message#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Arguments</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.TypedID}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arguments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Arguments</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessage_Arguments()
+ * @model containment="true"
+ * @generated
+ */
+ EList<TypedID> getArguments();
+
+} // Message
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageFromIf.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageFromIf.java
new file mode 100644
index 000000000..6f8f882c6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageFromIf.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Message From If</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.MessageFromIf#getMessage <em>Message</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.MessageFromIf#getFrom <em>From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessageFromIf()
+ * @model
+ * @generated
+ */
+public interface MessageFromIf extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Message</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Message</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Message</em>' reference.
+ * @see #setMessage(Message)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessageFromIf_Message()
+ * @model
+ * @generated
+ */
+ Message getMessage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.MessageFromIf#getMessage <em>Message</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Message</em>' reference.
+ * @see #getMessage()
+ * @generated
+ */
+ void setMessage(Message value);
+
+ /**
+ * Returns the value of the '<em><b>From</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>From</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>From</em>' reference.
+ * @see #setFrom(InterfaceItem)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessageFromIf_From()
+ * @model
+ * @generated
+ */
+ InterfaceItem getFrom();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.MessageFromIf#getFrom <em>From</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>From</em>' reference.
+ * @see #getFrom()
+ * @generated
+ */
+ void setFrom(InterfaceItem value);
+
+} // MessageFromIf
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageHandler.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageHandler.java
new file mode 100644
index 000000000..bd8b5937f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/MessageHandler.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Message Handler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.MessageHandler#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.MessageHandler#getDetailCode <em>Detail Code</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessageHandler()
+ * @model
+ * @generated
+ */
+public interface MessageHandler extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Msg</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Msg</em>' reference.
+ * @see #setMsg(Message)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessageHandler_Msg()
+ * @model
+ * @generated
+ */
+ Message getMsg();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.MessageHandler#getMsg <em>Msg</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Msg</em>' reference.
+ * @see #getMsg()
+ * @generated
+ */
+ void setMsg(Message value);
+
+ /**
+ * Returns the value of the '<em><b>Detail Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Detail Code</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Detail Code</em>' containment reference.
+ * @see #setDetailCode(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getMessageHandler_DetailCode()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getDetailCode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.MessageHandler#getDetailCode <em>Detail Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Detail Code</em>' containment reference.
+ * @see #getDetailCode()
+ * @generated
+ */
+ void setDetailCode(DetailCode value);
+
+} // MessageHandler
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/NonInitialTransition.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/NonInitialTransition.java
new file mode 100644
index 000000000..7c5daa695
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/NonInitialTransition.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Non Initial Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.NonInitialTransition#getFrom <em>From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getNonInitialTransition()
+ * @model
+ * @generated
+ */
+public interface NonInitialTransition extends Transition
+{
+ /**
+ * Returns the value of the '<em><b>From</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>From</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>From</em>' containment reference.
+ * @see #setFrom(TransitionTerminal)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getNonInitialTransition_From()
+ * @model containment="true"
+ * @generated
+ */
+ TransitionTerminal getFrom();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.NonInitialTransition#getFrom <em>From</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>From</em>' containment reference.
+ * @see #getFrom()
+ * @generated
+ */
+ void setFrom(TransitionTerminal value);
+
+} // NonInitialTransition
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Operation.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Operation.java
new file mode 100644
index 000000000..65faf010c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Operation.java
@@ -0,0 +1,128 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Operation#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Operation#getArguments <em>Arguments</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Operation#getReturntype <em>Returntype</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Operation#getDetailCode <em>Detail Code</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getOperation()
+ * @model
+ * @generated
+ */
+public interface Operation extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getOperation_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Operation#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Arguments</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.FreeTypedID}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arguments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Arguments</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getOperation_Arguments()
+ * @model containment="true"
+ * @generated
+ */
+ EList<FreeTypedID> getArguments();
+
+ /**
+ * Returns the value of the '<em><b>Returntype</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Returntype</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Returntype</em>' containment reference.
+ * @see #setReturntype(FreeType)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getOperation_Returntype()
+ * @model containment="true"
+ * @generated
+ */
+ FreeType getReturntype();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Operation#getReturntype <em>Returntype</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Returntype</em>' containment reference.
+ * @see #getReturntype()
+ * @generated
+ */
+ void setReturntype(FreeType value);
+
+ /**
+ * Returns the value of the '<em><b>Detail Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Detail Code</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Detail Code</em>' containment reference.
+ * @see #setDetailCode(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getOperation_DetailCode()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getDetailCode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Operation#getDetailCode <em>Detail Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Detail Code</em>' containment reference.
+ * @see #getDetailCode()
+ * @generated
+ */
+ void setDetailCode(DetailCode value);
+
+} // Operation
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Port.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Port.java
new file mode 100644
index 000000000..da5b4df71
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Port.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Port#isConjugated <em>Conjugated</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Port#getMultiplicity <em>Multiplicity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPort()
+ * @model
+ * @generated
+ */
+public interface Port extends InterfaceItem
+{
+ /**
+ * Returns the value of the '<em><b>Conjugated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Conjugated</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Conjugated</em>' attribute.
+ * @see #setConjugated(boolean)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPort_Conjugated()
+ * @model
+ * @generated
+ */
+ boolean isConjugated();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Port#isConjugated <em>Conjugated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Conjugated</em>' attribute.
+ * @see #isConjugated()
+ * @generated
+ */
+ void setConjugated(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Multiplicity</b></em>' attribute.
+ * The default value is <code>"1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Multiplicity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Multiplicity</em>' attribute.
+ * @see #setMultiplicity(int)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPort_Multiplicity()
+ * @model default="1"
+ * @generated
+ */
+ int getMultiplicity();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Port#getMultiplicity <em>Multiplicity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Multiplicity</em>' attribute.
+ * @see #getMultiplicity()
+ * @generated
+ */
+ void setMultiplicity(int value);
+
+} // Port
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PortClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PortClass.java
new file mode 100644
index 000000000..9cbbeebce
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PortClass.java
@@ -0,0 +1,108 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.PortClass#getUserCode <em>User Code</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.PortClass#getAttributes <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.PortClass#getOperations <em>Operations</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.PortClass#getMsgHandlers <em>Msg Handlers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPortClass()
+ * @model
+ * @generated
+ */
+public interface PortClass extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>User Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>User Code</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User Code</em>' containment reference.
+ * @see #setUserCode(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPortClass_UserCode()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getUserCode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.PortClass#getUserCode <em>User Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>User Code</em>' containment reference.
+ * @see #getUserCode()
+ * @generated
+ */
+ void setUserCode(DetailCode value);
+
+ /**
+ * Returns the value of the '<em><b>Attributes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Attribute}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attributes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attributes</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPortClass_Attributes()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Attribute> getAttributes();
+
+ /**
+ * Returns the value of the '<em><b>Operations</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Operation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operations</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operations</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPortClass_Operations()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Operation> getOperations();
+
+ /**
+ * Returns the value of the '<em><b>Msg Handlers</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.MessageHandler}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Msg Handlers</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Msg Handlers</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPortClass_MsgHandlers()
+ * @model containment="true"
+ * @generated
+ */
+ EList<MessageHandler> getMsgHandlers();
+
+} // PortClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PrimitiveType.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PrimitiveType.java
new file mode 100644
index 000000000..e3cf80b35
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/PrimitiveType.java
@@ -0,0 +1,497 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Primitive Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.RoomPackage#getPrimitiveType()
+ * @model
+ * @generated
+ */
+public enum PrimitiveType implements Enumerator
+{
+ /**
+ * The '<em><b>Void</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #VOID_VALUE
+ * @generated
+ * @ordered
+ */
+ VOID(0, "void", "void"),
+
+ /**
+ * The '<em><b>Int8</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INT8_VALUE
+ * @generated
+ * @ordered
+ */
+ INT8(1, "int8", "int8"),
+
+ /**
+ * The '<em><b>Int16</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INT16_VALUE
+ * @generated
+ * @ordered
+ */
+ INT16(2, "int16", "int16"),
+
+ /**
+ * The '<em><b>Int32</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INT32_VALUE
+ * @generated
+ * @ordered
+ */
+ INT32(3, "int32", "int32"),
+
+ /**
+ * The '<em><b>Uint8</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UINT8_VALUE
+ * @generated
+ * @ordered
+ */
+ UINT8(4, "uint8", "uint8"),
+
+ /**
+ * The '<em><b>Uint16</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UINT16_VALUE
+ * @generated
+ * @ordered
+ */
+ UINT16(5, "uint16", "uint16"),
+
+ /**
+ * The '<em><b>Uint32</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UINT32_VALUE
+ * @generated
+ * @ordered
+ */
+ UINT32(6, "uint32", "uint32"),
+
+ /**
+ * The '<em><b>Float32</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FLOAT32_VALUE
+ * @generated
+ * @ordered
+ */
+ FLOAT32(7, "float32", "float32"),
+
+ /**
+ * The '<em><b>Float64</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FLOAT64_VALUE
+ * @generated
+ * @ordered
+ */
+ FLOAT64(8, "float64", "float64"),
+
+ /**
+ * The '<em><b>Boolean</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #BOOLEAN_VALUE
+ * @generated
+ * @ordered
+ */
+ BOOLEAN(9, "boolean", "boolean"),
+
+ /**
+ * The '<em><b>String</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #STRING_VALUE
+ * @generated
+ * @ordered
+ */
+ STRING(10, "string", "string"),
+
+ /**
+ * The '<em><b>Char</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #CHAR_VALUE
+ * @generated
+ * @ordered
+ */
+ CHAR(11, "char", "char");
+
+ /**
+ * The '<em><b>Void</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Void</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #VOID
+ * @model name="void"
+ * @generated
+ * @ordered
+ */
+ public static final int VOID_VALUE = 0;
+
+ /**
+ * The '<em><b>Int8</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Int8</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INT8
+ * @model name="int8"
+ * @generated
+ * @ordered
+ */
+ public static final int INT8_VALUE = 1;
+
+ /**
+ * The '<em><b>Int16</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Int16</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INT16
+ * @model name="int16"
+ * @generated
+ * @ordered
+ */
+ public static final int INT16_VALUE = 2;
+
+ /**
+ * The '<em><b>Int32</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Int32</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INT32
+ * @model name="int32"
+ * @generated
+ * @ordered
+ */
+ public static final int INT32_VALUE = 3;
+
+ /**
+ * The '<em><b>Uint8</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Uint8</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UINT8
+ * @model name="uint8"
+ * @generated
+ * @ordered
+ */
+ public static final int UINT8_VALUE = 4;
+
+ /**
+ * The '<em><b>Uint16</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Uint16</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UINT16
+ * @model name="uint16"
+ * @generated
+ * @ordered
+ */
+ public static final int UINT16_VALUE = 5;
+
+ /**
+ * The '<em><b>Uint32</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Uint32</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UINT32
+ * @model name="uint32"
+ * @generated
+ * @ordered
+ */
+ public static final int UINT32_VALUE = 6;
+
+ /**
+ * The '<em><b>Float32</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Float32</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FLOAT32
+ * @model name="float32"
+ * @generated
+ * @ordered
+ */
+ public static final int FLOAT32_VALUE = 7;
+
+ /**
+ * The '<em><b>Float64</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Float64</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FLOAT64
+ * @model name="float64"
+ * @generated
+ * @ordered
+ */
+ public static final int FLOAT64_VALUE = 8;
+
+ /**
+ * The '<em><b>Boolean</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Boolean</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #BOOLEAN
+ * @model name="boolean"
+ * @generated
+ * @ordered
+ */
+ public static final int BOOLEAN_VALUE = 9;
+
+ /**
+ * The '<em><b>String</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>String</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #STRING
+ * @model name="string"
+ * @generated
+ * @ordered
+ */
+ public static final int STRING_VALUE = 10;
+
+ /**
+ * The '<em><b>Char</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Char</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #CHAR
+ * @model name="char"
+ * @generated
+ * @ordered
+ */
+ public static final int CHAR_VALUE = 11;
+
+ /**
+ * An array of all the '<em><b>Primitive Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final PrimitiveType[] VALUES_ARRAY =
+ new PrimitiveType[]
+ {
+ VOID,
+ INT8,
+ INT16,
+ INT32,
+ UINT8,
+ UINT16,
+ UINT32,
+ FLOAT32,
+ FLOAT64,
+ BOOLEAN,
+ STRING,
+ CHAR,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Primitive Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<PrimitiveType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Primitive Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PrimitiveType get(String literal)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ PrimitiveType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Primitive Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PrimitiveType getByName(String name)
+ {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i)
+ {
+ PrimitiveType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name))
+ {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Primitive Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PrimitiveType get(int value)
+ {
+ switch (value)
+ {
+ case VOID_VALUE: return VOID;
+ case INT8_VALUE: return INT8;
+ case INT16_VALUE: return INT16;
+ case INT32_VALUE: return INT32;
+ case UINT8_VALUE: return UINT8;
+ case UINT16_VALUE: return UINT16;
+ case UINT32_VALUE: return UINT32;
+ case FLOAT32_VALUE: return FLOAT32;
+ case FLOAT64_VALUE: return FLOAT64;
+ case BOOLEAN_VALUE: return BOOLEAN;
+ case STRING_VALUE: return STRING;
+ case CHAR_VALUE: return CHAR;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private PrimitiveType(int value, String name, String literal)
+ {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral()
+ {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ return literal;
+ }
+
+} //PrimitiveType
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolClass.java
new file mode 100644
index 000000000..2088a1b5f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolClass.java
@@ -0,0 +1,224 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Protocol Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getBase <em>Base</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getUserCode1 <em>User Code1</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getUserCode2 <em>User Code2</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getIncomingMessages <em>Incoming Messages</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getOutgoingMessages <em>Outgoing Messages</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getRegular <em>Regular</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getConjugate <em>Conjugate</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolClass#getSemantics <em>Semantics</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass()
+ * @model
+ * @generated
+ */
+public interface ProtocolClass extends RoomClass
+{
+ /**
+ * Returns the value of the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base</em>' reference.
+ * @see #setBase(ProtocolClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_Base()
+ * @model
+ * @generated
+ */
+ ProtocolClass getBase();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ProtocolClass#getBase <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base</em>' reference.
+ * @see #getBase()
+ * @generated
+ */
+ void setBase(ProtocolClass value);
+
+ /**
+ * Returns the value of the '<em><b>User Code1</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>User Code1</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User Code1</em>' containment reference.
+ * @see #setUserCode1(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_UserCode1()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getUserCode1();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ProtocolClass#getUserCode1 <em>User Code1</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>User Code1</em>' containment reference.
+ * @see #getUserCode1()
+ * @generated
+ */
+ void setUserCode1(DetailCode value);
+
+ /**
+ * Returns the value of the '<em><b>User Code2</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>User Code2</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User Code2</em>' containment reference.
+ * @see #setUserCode2(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_UserCode2()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getUserCode2();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ProtocolClass#getUserCode2 <em>User Code2</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>User Code2</em>' containment reference.
+ * @see #getUserCode2()
+ * @generated
+ */
+ void setUserCode2(DetailCode value);
+
+ /**
+ * Returns the value of the '<em><b>Incoming Messages</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Message}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Incoming Messages</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Incoming Messages</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_IncomingMessages()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Message> getIncomingMessages();
+
+ /**
+ * Returns the value of the '<em><b>Outgoing Messages</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Message}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Outgoing Messages</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Outgoing Messages</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_OutgoingMessages()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Message> getOutgoingMessages();
+
+ /**
+ * Returns the value of the '<em><b>Regular</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Regular</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Regular</em>' containment reference.
+ * @see #setRegular(PortClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_Regular()
+ * @model containment="true"
+ * @generated
+ */
+ PortClass getRegular();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ProtocolClass#getRegular <em>Regular</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Regular</em>' containment reference.
+ * @see #getRegular()
+ * @generated
+ */
+ void setRegular(PortClass value);
+
+ /**
+ * Returns the value of the '<em><b>Conjugate</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Conjugate</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Conjugate</em>' containment reference.
+ * @see #setConjugate(PortClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_Conjugate()
+ * @model containment="true"
+ * @generated
+ */
+ PortClass getConjugate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ProtocolClass#getConjugate <em>Conjugate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Conjugate</em>' containment reference.
+ * @see #getConjugate()
+ * @generated
+ */
+ void setConjugate(PortClass value);
+
+ /**
+ * Returns the value of the '<em><b>Semantics</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Semantics</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Semantics</em>' containment reference.
+ * @see #setSemantics(ProtocolSemantics)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolClass_Semantics()
+ * @model containment="true"
+ * @generated
+ */
+ ProtocolSemantics getSemantics();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ProtocolClass#getSemantics <em>Semantics</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Semantics</em>' containment reference.
+ * @see #getSemantics()
+ * @generated
+ */
+ void setSemantics(ProtocolSemantics value);
+
+} // ProtocolClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolSemantics.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolSemantics.java
new file mode 100644
index 000000000..3ed151ba8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ProtocolSemantics.java
@@ -0,0 +1,47 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Protocol Semantics</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ProtocolSemantics#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolSemantics()
+ * @model
+ * @generated
+ */
+public interface ProtocolSemantics extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Rules</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.SemanticsRule}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Rules</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Rules</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getProtocolSemantics_Rules()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SemanticsRule> getRules();
+
+} // ProtocolSemantics
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefSAPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefSAPoint.java
new file mode 100644
index 000000000..0020d4999
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefSAPoint.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ref SA Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.RefSAPoint#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRefSAPoint()
+ * @model
+ * @generated
+ */
+public interface RefSAPoint extends SAPoint
+{
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' reference.
+ * @see #setRef(ActorContainerRef)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRefSAPoint_Ref()
+ * @model
+ * @generated
+ */
+ ActorContainerRef getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.RefSAPoint#getRef <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' reference.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(ActorContainerRef value);
+
+} // RefSAPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefinedState.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefinedState.java
new file mode 100644
index 000000000..e3e9a0a06
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RefinedState.java
@@ -0,0 +1,63 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Refined State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.RefinedState#getBase <em>Base</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRefinedState()
+ * @model
+ * @generated
+ */
+public interface RefinedState extends State
+{
+ /**
+ * Returns the value of the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base</em>' reference.
+ * @see #setBase(BaseState)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRefinedState_Base()
+ * @model
+ * @generated
+ */
+ BaseState getBase();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.RefinedState#getBase <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base</em>' reference.
+ * @see #getBase()
+ * @generated
+ */
+ void setBase(BaseState value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return getBase()==null? \"\":getBase().getName();'"
+ * @generated
+ */
+ String getName();
+
+} // RefinedState
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RelaySAPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RelaySAPoint.java
new file mode 100644
index 000000000..833d165cc
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RelaySAPoint.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Relay SA Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.RelaySAPoint#getRelay <em>Relay</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRelaySAPoint()
+ * @model
+ * @generated
+ */
+public interface RelaySAPoint extends SAPoint
+{
+ /**
+ * Returns the value of the '<em><b>Relay</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Relay</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Relay</em>' reference.
+ * @see #setRelay(SPPRef)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRelaySAPoint_Relay()
+ * @model
+ * @generated
+ */
+ SPPRef getRelay();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.RelaySAPoint#getRelay <em>Relay</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Relay</em>' reference.
+ * @see #getRelay()
+ * @generated
+ */
+ void setRelay(SPPRef value);
+
+} // RelaySAPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomClass.java
new file mode 100644
index 000000000..0c6b9f01c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomClass.java
@@ -0,0 +1,55 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.RoomClass#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomClass()
+ * @model
+ * @generated
+ */
+public interface RoomClass extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomClass_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.RoomClass#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // RoomClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomFactory.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomFactory.java
new file mode 100644
index 000000000..fd1754f9d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomFactory.java
@@ -0,0 +1,641 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.RoomPackage
+ * @generated
+ */
+public interface RoomFactory extends EFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ RoomFactory eINSTANCE = org.eclipse.etrice.core.room.impl.RoomFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Model</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Model</em>'.
+ * @generated
+ */
+ RoomModel createRoomModel();
+
+ /**
+ * Returns a new object of class '<em>Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Class</em>'.
+ * @generated
+ */
+ RoomClass createRoomClass();
+
+ /**
+ * Returns a new object of class '<em>Structure Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Structure Class</em>'.
+ * @generated
+ */
+ StructureClass createStructureClass();
+
+ /**
+ * Returns a new object of class '<em>Actor Container Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Actor Container Class</em>'.
+ * @generated
+ */
+ ActorContainerClass createActorContainerClass();
+
+ /**
+ * Returns a new object of class '<em>Typed ID</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Typed ID</em>'.
+ * @generated
+ */
+ TypedID createTypedID();
+
+ /**
+ * Returns a new object of class '<em>Free Typed ID</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Free Typed ID</em>'.
+ * @generated
+ */
+ FreeTypedID createFreeTypedID();
+
+ /**
+ * Returns a new object of class '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type</em>'.
+ * @generated
+ */
+ Type createType();
+
+ /**
+ * Returns a new object of class '<em>Free Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Free Type</em>'.
+ * @generated
+ */
+ FreeType createFreeType();
+
+ /**
+ * Returns a new object of class '<em>Data Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Class</em>'.
+ * @generated
+ */
+ DataClass createDataClass();
+
+ /**
+ * Returns a new object of class '<em>Attribute</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Attribute</em>'.
+ * @generated
+ */
+ Attribute createAttribute();
+
+ /**
+ * Returns a new object of class '<em>Operation</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Operation</em>'.
+ * @generated
+ */
+ Operation createOperation();
+
+ /**
+ * Returns a new object of class '<em>Protocol Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Protocol Class</em>'.
+ * @generated
+ */
+ ProtocolClass createProtocolClass();
+
+ /**
+ * Returns a new object of class '<em>Message</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Message</em>'.
+ * @generated
+ */
+ Message createMessage();
+
+ /**
+ * Returns a new object of class '<em>Port Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Port Class</em>'.
+ * @generated
+ */
+ PortClass createPortClass();
+
+ /**
+ * Returns a new object of class '<em>Message Handler</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Message Handler</em>'.
+ * @generated
+ */
+ MessageHandler createMessageHandler();
+
+ /**
+ * Returns a new object of class '<em>Protocol Semantics</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Protocol Semantics</em>'.
+ * @generated
+ */
+ ProtocolSemantics createProtocolSemantics();
+
+ /**
+ * Returns a new object of class '<em>Semantics Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Semantics Rule</em>'.
+ * @generated
+ */
+ SemanticsRule createSemanticsRule();
+
+ /**
+ * Returns a new object of class '<em>Semantics In Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Semantics In Rule</em>'.
+ * @generated
+ */
+ SemanticsInRule createSemanticsInRule();
+
+ /**
+ * Returns a new object of class '<em>Semantics Out Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Semantics Out Rule</em>'.
+ * @generated
+ */
+ SemanticsOutRule createSemanticsOutRule();
+
+ /**
+ * Returns a new object of class '<em>Actor Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Actor Class</em>'.
+ * @generated
+ */
+ ActorClass createActorClass();
+
+ /**
+ * Returns a new object of class '<em>Interface Item</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Interface Item</em>'.
+ * @generated
+ */
+ InterfaceItem createInterfaceItem();
+
+ /**
+ * Returns a new object of class '<em>Port</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Port</em>'.
+ * @generated
+ */
+ Port createPort();
+
+ /**
+ * Returns a new object of class '<em>External Port</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>External Port</em>'.
+ * @generated
+ */
+ ExternalPort createExternalPort();
+
+ /**
+ * Returns a new object of class '<em>SAP Ref</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>SAP Ref</em>'.
+ * @generated
+ */
+ SAPRef createSAPRef();
+
+ /**
+ * Returns a new object of class '<em>SPP Ref</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>SPP Ref</em>'.
+ * @generated
+ */
+ SPPRef createSPPRef();
+
+ /**
+ * Returns a new object of class '<em>Service Implementation</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Service Implementation</em>'.
+ * @generated
+ */
+ ServiceImplementation createServiceImplementation();
+
+ /**
+ * Returns a new object of class '<em>Logical System</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Logical System</em>'.
+ * @generated
+ */
+ LogicalSystem createLogicalSystem();
+
+ /**
+ * Returns a new object of class '<em>Actor Container Ref</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Actor Container Ref</em>'.
+ * @generated
+ */
+ ActorContainerRef createActorContainerRef();
+
+ /**
+ * Returns a new object of class '<em>Sub System Ref</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sub System Ref</em>'.
+ * @generated
+ */
+ SubSystemRef createSubSystemRef();
+
+ /**
+ * Returns a new object of class '<em>Sub System Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sub System Class</em>'.
+ * @generated
+ */
+ SubSystemClass createSubSystemClass();
+
+ /**
+ * Returns a new object of class '<em>Logical Thread</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Logical Thread</em>'.
+ * @generated
+ */
+ LogicalThread createLogicalThread();
+
+ /**
+ * Returns a new object of class '<em>Actor Instance Path</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Actor Instance Path</em>'.
+ * @generated
+ */
+ ActorInstancePath createActorInstancePath();
+
+ /**
+ * Returns a new object of class '<em>Binding</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Binding</em>'.
+ * @generated
+ */
+ Binding createBinding();
+
+ /**
+ * Returns a new object of class '<em>Binding End Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Binding End Point</em>'.
+ * @generated
+ */
+ BindingEndPoint createBindingEndPoint();
+
+ /**
+ * Returns a new object of class '<em>Layer Connection</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Connection</em>'.
+ * @generated
+ */
+ LayerConnection createLayerConnection();
+
+ /**
+ * Returns a new object of class '<em>SA Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>SA Point</em>'.
+ * @generated
+ */
+ SAPoint createSAPoint();
+
+ /**
+ * Returns a new object of class '<em>Ref SA Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Ref SA Point</em>'.
+ * @generated
+ */
+ RefSAPoint createRefSAPoint();
+
+ /**
+ * Returns a new object of class '<em>Relay SA Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Relay SA Point</em>'.
+ * @generated
+ */
+ RelaySAPoint createRelaySAPoint();
+
+ /**
+ * Returns a new object of class '<em>SP Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>SP Point</em>'.
+ * @generated
+ */
+ SPPoint createSPPoint();
+
+ /**
+ * Returns a new object of class '<em>Actor Ref</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Actor Ref</em>'.
+ * @generated
+ */
+ ActorRef createActorRef();
+
+ /**
+ * Returns a new object of class '<em>State Graph Node</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>State Graph Node</em>'.
+ * @generated
+ */
+ StateGraphNode createStateGraphNode();
+
+ /**
+ * Returns a new object of class '<em>State Graph Item</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>State Graph Item</em>'.
+ * @generated
+ */
+ StateGraphItem createStateGraphItem();
+
+ /**
+ * Returns a new object of class '<em>State</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>State</em>'.
+ * @generated
+ */
+ State createState();
+
+ /**
+ * Returns a new object of class '<em>State Graph</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>State Graph</em>'.
+ * @generated
+ */
+ StateGraph createStateGraph();
+
+ /**
+ * Returns a new object of class '<em>Base State</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Base State</em>'.
+ * @generated
+ */
+ BaseState createBaseState();
+
+ /**
+ * Returns a new object of class '<em>Refined State</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Refined State</em>'.
+ * @generated
+ */
+ RefinedState createRefinedState();
+
+ /**
+ * Returns a new object of class '<em>Detail Code</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Detail Code</em>'.
+ * @generated
+ */
+ DetailCode createDetailCode();
+
+ /**
+ * Returns a new object of class '<em>Tr Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Tr Point</em>'.
+ * @generated
+ */
+ TrPoint createTrPoint();
+
+ /**
+ * Returns a new object of class '<em>Transition Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Transition Point</em>'.
+ * @generated
+ */
+ TransitionPoint createTransitionPoint();
+
+ /**
+ * Returns a new object of class '<em>Entry Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Entry Point</em>'.
+ * @generated
+ */
+ EntryPoint createEntryPoint();
+
+ /**
+ * Returns a new object of class '<em>Exit Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Exit Point</em>'.
+ * @generated
+ */
+ ExitPoint createExitPoint();
+
+ /**
+ * Returns a new object of class '<em>Choice Point</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Choice Point</em>'.
+ * @generated
+ */
+ ChoicePoint createChoicePoint();
+
+ /**
+ * Returns a new object of class '<em>Transition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Transition</em>'.
+ * @generated
+ */
+ Transition createTransition();
+
+ /**
+ * Returns a new object of class '<em>Non Initial Transition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Non Initial Transition</em>'.
+ * @generated
+ */
+ NonInitialTransition createNonInitialTransition();
+
+ /**
+ * Returns a new object of class '<em>Initial Transition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Initial Transition</em>'.
+ * @generated
+ */
+ InitialTransition createInitialTransition();
+
+ /**
+ * Returns a new object of class '<em>Continuation Transition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Continuation Transition</em>'.
+ * @generated
+ */
+ ContinuationTransition createContinuationTransition();
+
+ /**
+ * Returns a new object of class '<em>Triggered Transition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Triggered Transition</em>'.
+ * @generated
+ */
+ TriggeredTransition createTriggeredTransition();
+
+ /**
+ * Returns a new object of class '<em>CP Branch Transition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>CP Branch Transition</em>'.
+ * @generated
+ */
+ CPBranchTransition createCPBranchTransition();
+
+ /**
+ * Returns a new object of class '<em>Transition Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Transition Terminal</em>'.
+ * @generated
+ */
+ TransitionTerminal createTransitionTerminal();
+
+ /**
+ * Returns a new object of class '<em>State Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>State Terminal</em>'.
+ * @generated
+ */
+ StateTerminal createStateTerminal();
+
+ /**
+ * Returns a new object of class '<em>Tr Point Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Tr Point Terminal</em>'.
+ * @generated
+ */
+ TrPointTerminal createTrPointTerminal();
+
+ /**
+ * Returns a new object of class '<em>Sub State Tr Point Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sub State Tr Point Terminal</em>'.
+ * @generated
+ */
+ SubStateTrPointTerminal createSubStateTrPointTerminal();
+
+ /**
+ * Returns a new object of class '<em>Choicepoint Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Choicepoint Terminal</em>'.
+ * @generated
+ */
+ ChoicepointTerminal createChoicepointTerminal();
+
+ /**
+ * Returns a new object of class '<em>Trigger</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Trigger</em>'.
+ * @generated
+ */
+ Trigger createTrigger();
+
+ /**
+ * Returns a new object of class '<em>Message From If</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Message From If</em>'.
+ * @generated
+ */
+ MessageFromIf createMessageFromIf();
+
+ /**
+ * Returns a new object of class '<em>Guard</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Guard</em>'.
+ * @generated
+ */
+ Guard createGuard();
+
+ /**
+ * Returns a new object of class '<em>Import</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Import</em>'.
+ * @generated
+ */
+ Import createImport();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ RoomPackage getRoomPackage();
+
+} //RoomFactory
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomModel.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomModel.java
new file mode 100644
index 000000000..80a9b4b9c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomModel.java
@@ -0,0 +1,159 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.RoomModel#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.RoomModel#getImports <em>Imports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.RoomModel#getDataClasses <em>Data Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.RoomModel#getProtocolClasses <em>Protocol Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.RoomModel#getActorClasses <em>Actor Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.RoomModel#getSubSystemClasses <em>Sub System Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.RoomModel#getSystems <em>Systems</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel()
+ * @model
+ * @generated
+ */
+public interface RoomModel extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.RoomModel#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Imports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Import}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Imports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Imports</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel_Imports()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Import> getImports();
+
+ /**
+ * Returns the value of the '<em><b>Data Classes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.DataClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data Classes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data Classes</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel_DataClasses()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DataClass> getDataClasses();
+
+ /**
+ * Returns the value of the '<em><b>Protocol Classes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ProtocolClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Protocol Classes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Protocol Classes</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel_ProtocolClasses()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ProtocolClass> getProtocolClasses();
+
+ /**
+ * Returns the value of the '<em><b>Actor Classes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ActorClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actor Classes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actor Classes</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel_ActorClasses()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ActorClass> getActorClasses();
+
+ /**
+ * Returns the value of the '<em><b>Sub System Classes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.SubSystemClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sub System Classes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sub System Classes</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel_SubSystemClasses()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SubSystemClass> getSubSystemClasses();
+
+ /**
+ * Returns the value of the '<em><b>Systems</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.LogicalSystem}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Systems</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Systems</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getRoomModel_Systems()
+ * @model containment="true"
+ * @generated
+ */
+ EList<LogicalSystem> getSystems();
+
+} // RoomModel
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomPackage.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomPackage.java
new file mode 100644
index 000000000..3930a3951
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/RoomPackage.java
@@ -0,0 +1,6531 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.RoomFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface RoomPackage extends EPackage
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "room";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/etrice/Room";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "room";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ RoomPackage eINSTANCE = org.eclipse.etrice.core.room.impl.RoomPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.RoomModelImpl <em>Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RoomModelImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRoomModel()
+ * @generated
+ */
+ int ROOM_MODEL = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL__IMPORTS = 1;
+
+ /**
+ * The feature id for the '<em><b>Data Classes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL__DATA_CLASSES = 2;
+
+ /**
+ * The feature id for the '<em><b>Protocol Classes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL__PROTOCOL_CLASSES = 3;
+
+ /**
+ * The feature id for the '<em><b>Actor Classes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL__ACTOR_CLASSES = 4;
+
+ /**
+ * The feature id for the '<em><b>Sub System Classes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL__SUB_SYSTEM_CLASSES = 5;
+
+ /**
+ * The feature id for the '<em><b>Systems</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL__SYSTEMS = 6;
+
+ /**
+ * The number of structural features of the '<em>Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_MODEL_FEATURE_COUNT = 7;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.RoomClassImpl <em>Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RoomClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRoomClass()
+ * @generated
+ */
+ int ROOM_CLASS = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_CLASS__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOM_CLASS_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.StructureClassImpl <em>Structure Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StructureClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStructureClass()
+ * @generated
+ */
+ int STRUCTURE_CLASS = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_CLASS__NAME = ROOM_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_CLASS__BINDINGS = ROOM_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_CLASS__CONNECTIONS = ROOM_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Structure Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_CLASS_FEATURE_COUNT = ROOM_CLASS_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ActorContainerClassImpl <em>Actor Container Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorContainerClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorContainerClass()
+ * @generated
+ */
+ int ACTOR_CONTAINER_CLASS = 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_CLASS__NAME = STRUCTURE_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_CLASS__BINDINGS = STRUCTURE_CLASS__BINDINGS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_CLASS__CONNECTIONS = STRUCTURE_CLASS__CONNECTIONS;
+
+ /**
+ * The feature id for the '<em><b>If SP Ps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_CLASS__IF_SP_PS = STRUCTURE_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Actor Refs</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_CLASS__ACTOR_REFS = STRUCTURE_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Actor Container Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_CLASS_FEATURE_COUNT = STRUCTURE_CLASS_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TypedIDImpl <em>Typed ID</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TypedIDImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTypedID()
+ * @generated
+ */
+ int TYPED_ID = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_ID__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_ID__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Typed ID</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_ID_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.FreeTypedIDImpl <em>Free Typed ID</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.FreeTypedIDImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getFreeTypedID()
+ * @generated
+ */
+ int FREE_TYPED_ID = 5;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FREE_TYPED_ID__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FREE_TYPED_ID__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Free Typed ID</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FREE_TYPED_ID_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TypeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getType()
+ * @generated
+ */
+ int TYPE = 6;
+
+ /**
+ * The feature id for the '<em><b>Prim</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE__PRIM = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.FreeTypeImpl <em>Free Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.FreeTypeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getFreeType()
+ * @generated
+ */
+ int FREE_TYPE = 7;
+
+ /**
+ * The feature id for the '<em><b>Prim</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FREE_TYPE__PRIM = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FREE_TYPE__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Free Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FREE_TYPE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.DataClassImpl <em>Data Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.DataClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getDataClass()
+ * @generated
+ */
+ int DATA_CLASS = 8;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_CLASS__NAME = ROOM_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_CLASS__BASE = ROOM_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_CLASS__IMPORTS = ROOM_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_CLASS__ATTRIBUTES = ROOM_CLASS_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_CLASS__OPERATIONS = ROOM_CLASS_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Data Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_CLASS_FEATURE_COUNT = ROOM_CLASS_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.AttributeImpl <em>Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.AttributeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getAttribute()
+ * @generated
+ */
+ int ATTRIBUTE = 9;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__SIZE = 1;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__TYPE = 2;
+
+ /**
+ * The number of structural features of the '<em>Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.OperationImpl <em>Operation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.OperationImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getOperation()
+ * @generated
+ */
+ int OPERATION = 10;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION__ARGUMENTS = 1;
+
+ /**
+ * The feature id for the '<em><b>Returntype</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION__RETURNTYPE = 2;
+
+ /**
+ * The feature id for the '<em><b>Detail Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION__DETAIL_CODE = 3;
+
+ /**
+ * The number of structural features of the '<em>Operation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl <em>Protocol Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ProtocolClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getProtocolClass()
+ * @generated
+ */
+ int PROTOCOL_CLASS = 11;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__NAME = ROOM_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__BASE = ROOM_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>User Code1</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__USER_CODE1 = ROOM_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>User Code2</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__USER_CODE2 = ROOM_CLASS_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Incoming Messages</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__INCOMING_MESSAGES = ROOM_CLASS_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Outgoing Messages</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__OUTGOING_MESSAGES = ROOM_CLASS_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Regular</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__REGULAR = ROOM_CLASS_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Conjugate</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__CONJUGATE = ROOM_CLASS_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Semantics</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS__SEMANTICS = ROOM_CLASS_FEATURE_COUNT + 7;
+
+ /**
+ * The number of structural features of the '<em>Protocol Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_CLASS_FEATURE_COUNT = ROOM_CLASS_FEATURE_COUNT + 8;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.MessageImpl <em>Message</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.MessageImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getMessage()
+ * @generated
+ */
+ int MESSAGE = 12;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE__ARGUMENTS = 1;
+
+ /**
+ * The number of structural features of the '<em>Message</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.PortClassImpl <em>Port Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.PortClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getPortClass()
+ * @generated
+ */
+ int PORT_CLASS = 13;
+
+ /**
+ * The feature id for the '<em><b>User Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_CLASS__USER_CODE = 0;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_CLASS__ATTRIBUTES = 1;
+
+ /**
+ * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_CLASS__OPERATIONS = 2;
+
+ /**
+ * The feature id for the '<em><b>Msg Handlers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_CLASS__MSG_HANDLERS = 3;
+
+ /**
+ * The number of structural features of the '<em>Port Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_CLASS_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.MessageHandlerImpl <em>Message Handler</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.MessageHandlerImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getMessageHandler()
+ * @generated
+ */
+ int MESSAGE_HANDLER = 14;
+
+ /**
+ * The feature id for the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE_HANDLER__MSG = 0;
+
+ /**
+ * The feature id for the '<em><b>Detail Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE_HANDLER__DETAIL_CODE = 1;
+
+ /**
+ * The number of structural features of the '<em>Message Handler</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE_HANDLER_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ProtocolSemanticsImpl <em>Protocol Semantics</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ProtocolSemanticsImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getProtocolSemantics()
+ * @generated
+ */
+ int PROTOCOL_SEMANTICS = 15;
+
+ /**
+ * The feature id for the '<em><b>Rules</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_SEMANTICS__RULES = 0;
+
+ /**
+ * The number of structural features of the '<em>Protocol Semantics</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROTOCOL_SEMANTICS_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SemanticsRuleImpl <em>Semantics Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SemanticsRuleImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSemanticsRule()
+ * @generated
+ */
+ int SEMANTICS_RULE = 16;
+
+ /**
+ * The feature id for the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_RULE__MSG = 0;
+
+ /**
+ * The feature id for the '<em><b>Follow Ups</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_RULE__FOLLOW_UPS = 1;
+
+ /**
+ * The number of structural features of the '<em>Semantics Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_RULE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SemanticsInRuleImpl <em>Semantics In Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SemanticsInRuleImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSemanticsInRule()
+ * @generated
+ */
+ int SEMANTICS_IN_RULE = 17;
+
+ /**
+ * The feature id for the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_IN_RULE__MSG = SEMANTICS_RULE__MSG;
+
+ /**
+ * The feature id for the '<em><b>Follow Ups</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_IN_RULE__FOLLOW_UPS = SEMANTICS_RULE__FOLLOW_UPS;
+
+ /**
+ * The number of structural features of the '<em>Semantics In Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_IN_RULE_FEATURE_COUNT = SEMANTICS_RULE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SemanticsOutRuleImpl <em>Semantics Out Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SemanticsOutRuleImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSemanticsOutRule()
+ * @generated
+ */
+ int SEMANTICS_OUT_RULE = 18;
+
+ /**
+ * The feature id for the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_OUT_RULE__MSG = SEMANTICS_RULE__MSG;
+
+ /**
+ * The feature id for the '<em><b>Follow Ups</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_OUT_RULE__FOLLOW_UPS = SEMANTICS_RULE__FOLLOW_UPS;
+
+ /**
+ * The number of structural features of the '<em>Semantics Out Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEMANTICS_OUT_RULE_FEATURE_COUNT = SEMANTICS_RULE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ActorClassImpl <em>Actor Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorClass()
+ * @generated
+ */
+ int ACTOR_CLASS = 19;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__NAME = ACTOR_CONTAINER_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__BINDINGS = ACTOR_CONTAINER_CLASS__BINDINGS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__CONNECTIONS = ACTOR_CONTAINER_CLASS__CONNECTIONS;
+
+ /**
+ * The feature id for the '<em><b>If SP Ps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__IF_SP_PS = ACTOR_CONTAINER_CLASS__IF_SP_PS;
+
+ /**
+ * The feature id for the '<em><b>Actor Refs</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__ACTOR_REFS = ACTOR_CONTAINER_CLASS__ACTOR_REFS;
+
+ /**
+ * The feature id for the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__ABSTRACT = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__BASE = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>If Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__IF_PORTS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>User Code1</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__USER_CODE1 = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>User Code2</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__USER_CODE2 = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Int Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__INT_PORTS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Ext Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__EXT_PORTS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Service Implementations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__SERVICE_IMPLEMENTATIONS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Str SA Ps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__STR_SA_PS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__ATTRIBUTES = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__OPERATIONS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>State Machine</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS__STATE_MACHINE = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 11;
+
+ /**
+ * The number of structural features of the '<em>Actor Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CLASS_FEATURE_COUNT = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 12;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.InterfaceItemImpl <em>Interface Item</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.InterfaceItemImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getInterfaceItem()
+ * @generated
+ */
+ int INTERFACE_ITEM = 20;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Protocol</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM__PROTOCOL = 1;
+
+ /**
+ * The number of structural features of the '<em>Interface Item</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.PortImpl <em>Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.PortImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getPort()
+ * @generated
+ */
+ int PORT = 21;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__NAME = INTERFACE_ITEM__NAME;
+
+ /**
+ * The feature id for the '<em><b>Protocol</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__PROTOCOL = INTERFACE_ITEM__PROTOCOL;
+
+ /**
+ * The feature id for the '<em><b>Conjugated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__CONJUGATED = INTERFACE_ITEM_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Multiplicity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__MULTIPLICITY = INTERFACE_ITEM_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_FEATURE_COUNT = INTERFACE_ITEM_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ExternalPortImpl <em>External Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ExternalPortImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getExternalPort()
+ * @generated
+ */
+ int EXTERNAL_PORT = 22;
+
+ /**
+ * The feature id for the '<em><b>Ifport</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_PORT__IFPORT = 0;
+
+ /**
+ * The number of structural features of the '<em>External Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_PORT_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SAPRefImpl <em>SAP Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SAPRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSAPRef()
+ * @generated
+ */
+ int SAP_REF = 23;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_REF__NAME = INTERFACE_ITEM__NAME;
+
+ /**
+ * The feature id for the '<em><b>Protocol</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_REF__PROTOCOL = INTERFACE_ITEM__PROTOCOL;
+
+ /**
+ * The number of structural features of the '<em>SAP Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_REF_FEATURE_COUNT = INTERFACE_ITEM_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SPPRefImpl <em>SPP Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SPPRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSPPRef()
+ * @generated
+ */
+ int SPP_REF = 24;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_REF__NAME = INTERFACE_ITEM__NAME;
+
+ /**
+ * The feature id for the '<em><b>Protocol</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_REF__PROTOCOL = INTERFACE_ITEM__PROTOCOL;
+
+ /**
+ * The number of structural features of the '<em>SPP Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_REF_FEATURE_COUNT = INTERFACE_ITEM_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ServiceImplementationImpl <em>Service Implementation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ServiceImplementationImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getServiceImplementation()
+ * @generated
+ */
+ int SERVICE_IMPLEMENTATION = 25;
+
+ /**
+ * The feature id for the '<em><b>Spp</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPLEMENTATION__SPP = 0;
+
+ /**
+ * The number of structural features of the '<em>Service Implementation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPLEMENTATION_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.LogicalSystemImpl <em>Logical System</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.LogicalSystemImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getLogicalSystem()
+ * @generated
+ */
+ int LOGICAL_SYSTEM = 26;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_SYSTEM__NAME = STRUCTURE_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_SYSTEM__BINDINGS = STRUCTURE_CLASS__BINDINGS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_SYSTEM__CONNECTIONS = STRUCTURE_CLASS__CONNECTIONS;
+
+ /**
+ * The feature id for the '<em><b>Sub Systems</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_SYSTEM__SUB_SYSTEMS = STRUCTURE_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Logical System</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_SYSTEM_FEATURE_COUNT = STRUCTURE_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ActorContainerRefImpl <em>Actor Container Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorContainerRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorContainerRef()
+ * @generated
+ */
+ int ACTOR_CONTAINER_REF = 27;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_REF__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Actor Container Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_CONTAINER_REF_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SubSystemRefImpl <em>Sub System Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SubSystemRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSubSystemRef()
+ * @generated
+ */
+ int SUB_SYSTEM_REF = 28;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_REF__NAME = ACTOR_CONTAINER_REF__NAME;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_REF__TYPE = ACTOR_CONTAINER_REF_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Sub System Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_REF_FEATURE_COUNT = ACTOR_CONTAINER_REF_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SubSystemClassImpl <em>Sub System Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SubSystemClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSubSystemClass()
+ * @generated
+ */
+ int SUB_SYSTEM_CLASS = 29;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS__NAME = ACTOR_CONTAINER_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS__BINDINGS = ACTOR_CONTAINER_CLASS__BINDINGS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS__CONNECTIONS = ACTOR_CONTAINER_CLASS__CONNECTIONS;
+
+ /**
+ * The feature id for the '<em><b>If SP Ps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS__IF_SP_PS = ACTOR_CONTAINER_CLASS__IF_SP_PS;
+
+ /**
+ * The feature id for the '<em><b>Actor Refs</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS__ACTOR_REFS = ACTOR_CONTAINER_CLASS__ACTOR_REFS;
+
+ /**
+ * The feature id for the '<em><b>Relay Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS__RELAY_PORTS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Threads</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS__THREADS = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Sub System Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_CLASS_FEATURE_COUNT = ACTOR_CONTAINER_CLASS_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.LogicalThreadImpl <em>Logical Thread</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.LogicalThreadImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getLogicalThread()
+ * @generated
+ */
+ int LOGICAL_THREAD = 30;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_THREAD__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Instances</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_THREAD__INSTANCES = 1;
+
+ /**
+ * The number of structural features of the '<em>Logical Thread</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGICAL_THREAD_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ActorInstancePathImpl <em>Actor Instance Path</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorInstancePathImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorInstancePath()
+ * @generated
+ */
+ int ACTOR_INSTANCE_PATH = 31;
+
+ /**
+ * The feature id for the '<em><b>Segments</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE_PATH__SEGMENTS = 0;
+
+ /**
+ * The number of structural features of the '<em>Actor Instance Path</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE_PATH_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.BindingImpl <em>Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.BindingImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getBinding()
+ * @generated
+ */
+ int BINDING = 32;
+
+ /**
+ * The feature id for the '<em><b>Endpoint1</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING__ENDPOINT1 = 0;
+
+ /**
+ * The feature id for the '<em><b>Endpoint2</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING__ENDPOINT2 = 1;
+
+ /**
+ * The number of structural features of the '<em>Binding</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.BindingEndPointImpl <em>Binding End Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.BindingEndPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getBindingEndPoint()
+ * @generated
+ */
+ int BINDING_END_POINT = 33;
+
+ /**
+ * The feature id for the '<em><b>Actor Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_END_POINT__ACTOR_REF = 0;
+
+ /**
+ * The feature id for the '<em><b>Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_END_POINT__PORT = 1;
+
+ /**
+ * The number of structural features of the '<em>Binding End Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_END_POINT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.LayerConnectionImpl <em>Layer Connection</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.LayerConnectionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getLayerConnection()
+ * @generated
+ */
+ int LAYER_CONNECTION = 34;
+
+ /**
+ * The feature id for the '<em><b>From</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_CONNECTION__FROM = 0;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_CONNECTION__TO = 1;
+
+ /**
+ * The number of structural features of the '<em>Layer Connection</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_CONNECTION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SAPointImpl <em>SA Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SAPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSAPoint()
+ * @generated
+ */
+ int SA_POINT = 35;
+
+ /**
+ * The number of structural features of the '<em>SA Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SA_POINT_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.RefSAPointImpl <em>Ref SA Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RefSAPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRefSAPoint()
+ * @generated
+ */
+ int REF_SA_POINT = 36;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REF_SA_POINT__REF = SA_POINT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Ref SA Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REF_SA_POINT_FEATURE_COUNT = SA_POINT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.RelaySAPointImpl <em>Relay SA Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RelaySAPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRelaySAPoint()
+ * @generated
+ */
+ int RELAY_SA_POINT = 37;
+
+ /**
+ * The feature id for the '<em><b>Relay</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELAY_SA_POINT__RELAY = SA_POINT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Relay SA Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELAY_SA_POINT_FEATURE_COUNT = SA_POINT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SPPointImpl <em>SP Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SPPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSPPoint()
+ * @generated
+ */
+ int SP_POINT = 38;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SP_POINT__REF = 0;
+
+ /**
+ * The feature id for the '<em><b>Service</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SP_POINT__SERVICE = 1;
+
+ /**
+ * The number of structural features of the '<em>SP Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SP_POINT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ActorRefImpl <em>Actor Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorRef()
+ * @generated
+ */
+ int ACTOR_REF = 39;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_REF__NAME = ACTOR_CONTAINER_REF__NAME;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_REF__TYPE = ACTOR_CONTAINER_REF_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Actor Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_REF_FEATURE_COUNT = ACTOR_CONTAINER_REF_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.StateGraphItemImpl <em>State Graph Item</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateGraphItemImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateGraphItem()
+ * @generated
+ */
+ int STATE_GRAPH_ITEM = 41;
+
+ /**
+ * The number of structural features of the '<em>State Graph Item</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_GRAPH_ITEM_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.StateGraphNodeImpl <em>State Graph Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateGraphNodeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateGraphNode()
+ * @generated
+ */
+ int STATE_GRAPH_NODE = 40;
+
+ /**
+ * The number of structural features of the '<em>State Graph Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_GRAPH_NODE_FEATURE_COUNT = STATE_GRAPH_ITEM_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.StateImpl <em>State</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getState()
+ * @generated
+ */
+ int STATE = 42;
+
+ /**
+ * The feature id for the '<em><b>Entry Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE__ENTRY_CODE = STATE_GRAPH_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Exit Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE__EXIT_CODE = STATE_GRAPH_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Subgraph</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE__SUBGRAPH = STATE_GRAPH_NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>State</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_FEATURE_COUNT = STATE_GRAPH_NODE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.StateGraphImpl <em>State Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateGraphImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateGraph()
+ * @generated
+ */
+ int STATE_GRAPH = 43;
+
+ /**
+ * The feature id for the '<em><b>States</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_GRAPH__STATES = 0;
+
+ /**
+ * The feature id for the '<em><b>Tr Points</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_GRAPH__TR_POINTS = 1;
+
+ /**
+ * The feature id for the '<em><b>Ch Points</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_GRAPH__CH_POINTS = 2;
+
+ /**
+ * The feature id for the '<em><b>Transitions</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_GRAPH__TRANSITIONS = 3;
+
+ /**
+ * The number of structural features of the '<em>State Graph</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_GRAPH_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.BaseStateImpl <em>Base State</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.BaseStateImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getBaseState()
+ * @generated
+ */
+ int BASE_STATE = 44;
+
+ /**
+ * The feature id for the '<em><b>Entry Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BASE_STATE__ENTRY_CODE = STATE__ENTRY_CODE;
+
+ /**
+ * The feature id for the '<em><b>Exit Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BASE_STATE__EXIT_CODE = STATE__EXIT_CODE;
+
+ /**
+ * The feature id for the '<em><b>Subgraph</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BASE_STATE__SUBGRAPH = STATE__SUBGRAPH;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BASE_STATE__NAME = STATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Base State</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BASE_STATE_FEATURE_COUNT = STATE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.RefinedStateImpl <em>Refined State</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RefinedStateImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRefinedState()
+ * @generated
+ */
+ int REFINED_STATE = 45;
+
+ /**
+ * The feature id for the '<em><b>Entry Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFINED_STATE__ENTRY_CODE = STATE__ENTRY_CODE;
+
+ /**
+ * The feature id for the '<em><b>Exit Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFINED_STATE__EXIT_CODE = STATE__EXIT_CODE;
+
+ /**
+ * The feature id for the '<em><b>Subgraph</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFINED_STATE__SUBGRAPH = STATE__SUBGRAPH;
+
+ /**
+ * The feature id for the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFINED_STATE__BASE = STATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Refined State</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFINED_STATE_FEATURE_COUNT = STATE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.DetailCodeImpl <em>Detail Code</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.DetailCodeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getDetailCode()
+ * @generated
+ */
+ int DETAIL_CODE = 46;
+
+ /**
+ * The feature id for the '<em><b>Commands</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DETAIL_CODE__COMMANDS = 0;
+
+ /**
+ * The number of structural features of the '<em>Detail Code</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DETAIL_CODE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TrPointImpl <em>Tr Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TrPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTrPoint()
+ * @generated
+ */
+ int TR_POINT = 47;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TR_POINT__NAME = STATE_GRAPH_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Tr Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TR_POINT_FEATURE_COUNT = STATE_GRAPH_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TransitionPointImpl <em>Transition Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TransitionPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTransitionPoint()
+ * @generated
+ */
+ int TRANSITION_POINT = 48;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_POINT__NAME = TR_POINT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Handler</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_POINT__HANDLER = TR_POINT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Transition Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_POINT_FEATURE_COUNT = TR_POINT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.EntryPointImpl <em>Entry Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.EntryPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getEntryPoint()
+ * @generated
+ */
+ int ENTRY_POINT = 49;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTRY_POINT__NAME = TR_POINT__NAME;
+
+ /**
+ * The number of structural features of the '<em>Entry Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTRY_POINT_FEATURE_COUNT = TR_POINT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ExitPointImpl <em>Exit Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ExitPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getExitPoint()
+ * @generated
+ */
+ int EXIT_POINT = 50;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXIT_POINT__NAME = TR_POINT__NAME;
+
+ /**
+ * The number of structural features of the '<em>Exit Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXIT_POINT_FEATURE_COUNT = TR_POINT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ChoicePointImpl <em>Choice Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ChoicePointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getChoicePoint()
+ * @generated
+ */
+ int CHOICE_POINT = 51;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHOICE_POINT__NAME = STATE_GRAPH_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Choice Point</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHOICE_POINT_FEATURE_COUNT = STATE_GRAPH_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TransitionImpl <em>Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTransition()
+ * @generated
+ */
+ int TRANSITION = 52;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__NAME = STATE_GRAPH_ITEM_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__TO = STATE_GRAPH_ITEM_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Action</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__ACTION = STATE_GRAPH_ITEM_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Transition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_FEATURE_COUNT = STATE_GRAPH_ITEM_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.NonInitialTransitionImpl <em>Non Initial Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.NonInitialTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getNonInitialTransition()
+ * @generated
+ */
+ int NON_INITIAL_TRANSITION = 53;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NON_INITIAL_TRANSITION__NAME = TRANSITION__NAME;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NON_INITIAL_TRANSITION__TO = TRANSITION__TO;
+
+ /**
+ * The feature id for the '<em><b>Action</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NON_INITIAL_TRANSITION__ACTION = TRANSITION__ACTION;
+
+ /**
+ * The feature id for the '<em><b>From</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NON_INITIAL_TRANSITION__FROM = TRANSITION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Non Initial Transition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NON_INITIAL_TRANSITION_FEATURE_COUNT = TRANSITION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.InitialTransitionImpl <em>Initial Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.InitialTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getInitialTransition()
+ * @generated
+ */
+ int INITIAL_TRANSITION = 54;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INITIAL_TRANSITION__NAME = TRANSITION__NAME;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INITIAL_TRANSITION__TO = TRANSITION__TO;
+
+ /**
+ * The feature id for the '<em><b>Action</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INITIAL_TRANSITION__ACTION = TRANSITION__ACTION;
+
+ /**
+ * The number of structural features of the '<em>Initial Transition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INITIAL_TRANSITION_FEATURE_COUNT = TRANSITION_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ContinuationTransitionImpl <em>Continuation Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ContinuationTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getContinuationTransition()
+ * @generated
+ */
+ int CONTINUATION_TRANSITION = 55;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTINUATION_TRANSITION__NAME = NON_INITIAL_TRANSITION__NAME;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTINUATION_TRANSITION__TO = NON_INITIAL_TRANSITION__TO;
+
+ /**
+ * The feature id for the '<em><b>Action</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTINUATION_TRANSITION__ACTION = NON_INITIAL_TRANSITION__ACTION;
+
+ /**
+ * The feature id for the '<em><b>From</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTINUATION_TRANSITION__FROM = NON_INITIAL_TRANSITION__FROM;
+
+ /**
+ * The number of structural features of the '<em>Continuation Transition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTINUATION_TRANSITION_FEATURE_COUNT = NON_INITIAL_TRANSITION_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TriggeredTransitionImpl <em>Triggered Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TriggeredTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTriggeredTransition()
+ * @generated
+ */
+ int TRIGGERED_TRANSITION = 56;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGERED_TRANSITION__NAME = NON_INITIAL_TRANSITION__NAME;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGERED_TRANSITION__TO = NON_INITIAL_TRANSITION__TO;
+
+ /**
+ * The feature id for the '<em><b>Action</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGERED_TRANSITION__ACTION = NON_INITIAL_TRANSITION__ACTION;
+
+ /**
+ * The feature id for the '<em><b>From</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGERED_TRANSITION__FROM = NON_INITIAL_TRANSITION__FROM;
+
+ /**
+ * The feature id for the '<em><b>Triggers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGERED_TRANSITION__TRIGGERS = NON_INITIAL_TRANSITION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Triggered Transition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGERED_TRANSITION_FEATURE_COUNT = NON_INITIAL_TRANSITION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.CPBranchTransitionImpl <em>CP Branch Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.CPBranchTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getCPBranchTransition()
+ * @generated
+ */
+ int CP_BRANCH_TRANSITION = 57;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CP_BRANCH_TRANSITION__NAME = NON_INITIAL_TRANSITION__NAME;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CP_BRANCH_TRANSITION__TO = NON_INITIAL_TRANSITION__TO;
+
+ /**
+ * The feature id for the '<em><b>Action</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CP_BRANCH_TRANSITION__ACTION = NON_INITIAL_TRANSITION__ACTION;
+
+ /**
+ * The feature id for the '<em><b>From</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CP_BRANCH_TRANSITION__FROM = NON_INITIAL_TRANSITION__FROM;
+
+ /**
+ * The feature id for the '<em><b>Condition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CP_BRANCH_TRANSITION__CONDITION = NON_INITIAL_TRANSITION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>CP Branch Transition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CP_BRANCH_TRANSITION_FEATURE_COUNT = NON_INITIAL_TRANSITION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TransitionTerminalImpl <em>Transition Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TransitionTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTransitionTerminal()
+ * @generated
+ */
+ int TRANSITION_TERMINAL = 58;
+
+ /**
+ * The number of structural features of the '<em>Transition Terminal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_TERMINAL_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.StateTerminalImpl <em>State Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateTerminal()
+ * @generated
+ */
+ int STATE_TERMINAL = 59;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_TERMINAL__STATE = TRANSITION_TERMINAL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>State Terminal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATE_TERMINAL_FEATURE_COUNT = TRANSITION_TERMINAL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TrPointTerminalImpl <em>Tr Point Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TrPointTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTrPointTerminal()
+ * @generated
+ */
+ int TR_POINT_TERMINAL = 60;
+
+ /**
+ * The feature id for the '<em><b>Tr Point</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TR_POINT_TERMINAL__TR_POINT = TRANSITION_TERMINAL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Tr Point Terminal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TR_POINT_TERMINAL_FEATURE_COUNT = TRANSITION_TERMINAL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.SubStateTrPointTerminalImpl <em>Sub State Tr Point Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SubStateTrPointTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSubStateTrPointTerminal()
+ * @generated
+ */
+ int SUB_STATE_TR_POINT_TERMINAL = 61;
+
+ /**
+ * The feature id for the '<em><b>Tr Point</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_STATE_TR_POINT_TERMINAL__TR_POINT = TRANSITION_TERMINAL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_STATE_TR_POINT_TERMINAL__STATE = TRANSITION_TERMINAL_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Sub State Tr Point Terminal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_STATE_TR_POINT_TERMINAL_FEATURE_COUNT = TRANSITION_TERMINAL_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ChoicepointTerminalImpl <em>Choicepoint Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ChoicepointTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getChoicepointTerminal()
+ * @generated
+ */
+ int CHOICEPOINT_TERMINAL = 62;
+
+ /**
+ * The feature id for the '<em><b>Cp</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHOICEPOINT_TERMINAL__CP = TRANSITION_TERMINAL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Choicepoint Terminal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHOICEPOINT_TERMINAL_FEATURE_COUNT = TRANSITION_TERMINAL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.TriggerImpl <em>Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TriggerImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTrigger()
+ * @generated
+ */
+ int TRIGGER = 63;
+
+ /**
+ * The feature id for the '<em><b>Msg From If Pairs</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__MSG_FROM_IF_PAIRS = 0;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__GUARD = 1;
+
+ /**
+ * The number of structural features of the '<em>Trigger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.MessageFromIfImpl <em>Message From If</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.MessageFromIfImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getMessageFromIf()
+ * @generated
+ */
+ int MESSAGE_FROM_IF = 64;
+
+ /**
+ * The feature id for the '<em><b>Message</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE_FROM_IF__MESSAGE = 0;
+
+ /**
+ * The feature id for the '<em><b>From</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE_FROM_IF__FROM = 1;
+
+ /**
+ * The number of structural features of the '<em>Message From If</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MESSAGE_FROM_IF_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.GuardImpl <em>Guard</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.GuardImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getGuard()
+ * @generated
+ */
+ int GUARD = 65;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GUARD__GUARD = 0;
+
+ /**
+ * The number of structural features of the '<em>Guard</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GUARD_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.impl.ImportImpl <em>Import</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ImportImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getImport()
+ * @generated
+ */
+ int IMPORT = 66;
+
+ /**
+ * The feature id for the '<em><b>Imported Namespace</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT__IMPORTED_NAMESPACE = 0;
+
+ /**
+ * The number of structural features of the '<em>Import</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.core.room.PrimitiveType <em>Primitive Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.PrimitiveType
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getPrimitiveType()
+ * @generated
+ */
+ int PRIMITIVE_TYPE = 67;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.RoomModel <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Model</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel
+ * @generated
+ */
+ EClass getRoomModel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.RoomModel#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel#getName()
+ * @see #getRoomModel()
+ * @generated
+ */
+ EAttribute getRoomModel_Name();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.RoomModel#getImports <em>Imports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Imports</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel#getImports()
+ * @see #getRoomModel()
+ * @generated
+ */
+ EReference getRoomModel_Imports();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.RoomModel#getDataClasses <em>Data Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Data Classes</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel#getDataClasses()
+ * @see #getRoomModel()
+ * @generated
+ */
+ EReference getRoomModel_DataClasses();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.RoomModel#getProtocolClasses <em>Protocol Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Protocol Classes</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel#getProtocolClasses()
+ * @see #getRoomModel()
+ * @generated
+ */
+ EReference getRoomModel_ProtocolClasses();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.RoomModel#getActorClasses <em>Actor Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Actor Classes</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel#getActorClasses()
+ * @see #getRoomModel()
+ * @generated
+ */
+ EReference getRoomModel_ActorClasses();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.RoomModel#getSubSystemClasses <em>Sub System Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Sub System Classes</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel#getSubSystemClasses()
+ * @see #getRoomModel()
+ * @generated
+ */
+ EReference getRoomModel_SubSystemClasses();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.RoomModel#getSystems <em>Systems</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Systems</em>'.
+ * @see org.eclipse.etrice.core.room.RoomModel#getSystems()
+ * @see #getRoomModel()
+ * @generated
+ */
+ EReference getRoomModel_Systems();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.RoomClass <em>Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Class</em>'.
+ * @see org.eclipse.etrice.core.room.RoomClass
+ * @generated
+ */
+ EClass getRoomClass();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.RoomClass#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.RoomClass#getName()
+ * @see #getRoomClass()
+ * @generated
+ */
+ EAttribute getRoomClass_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.StructureClass <em>Structure Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Structure Class</em>'.
+ * @see org.eclipse.etrice.core.room.StructureClass
+ * @generated
+ */
+ EClass getStructureClass();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.StructureClass#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Bindings</em>'.
+ * @see org.eclipse.etrice.core.room.StructureClass#getBindings()
+ * @see #getStructureClass()
+ * @generated
+ */
+ EReference getStructureClass_Bindings();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.StructureClass#getConnections <em>Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Connections</em>'.
+ * @see org.eclipse.etrice.core.room.StructureClass#getConnections()
+ * @see #getStructureClass()
+ * @generated
+ */
+ EReference getStructureClass_Connections();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ActorContainerClass <em>Actor Container Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Actor Container Class</em>'.
+ * @see org.eclipse.etrice.core.room.ActorContainerClass
+ * @generated
+ */
+ EClass getActorContainerClass();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorContainerClass#getIfSPPs <em>If SP Ps</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>If SP Ps</em>'.
+ * @see org.eclipse.etrice.core.room.ActorContainerClass#getIfSPPs()
+ * @see #getActorContainerClass()
+ * @generated
+ */
+ EReference getActorContainerClass_IfSPPs();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorContainerClass#getActorRefs <em>Actor Refs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Actor Refs</em>'.
+ * @see org.eclipse.etrice.core.room.ActorContainerClass#getActorRefs()
+ * @see #getActorContainerClass()
+ * @generated
+ */
+ EReference getActorContainerClass_ActorRefs();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.TypedID <em>Typed ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Typed ID</em>'.
+ * @see org.eclipse.etrice.core.room.TypedID
+ * @generated
+ */
+ EClass getTypedID();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.TypedID#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.TypedID#getName()
+ * @see #getTypedID()
+ * @generated
+ */
+ EAttribute getTypedID_Name();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.TypedID#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.TypedID#getType()
+ * @see #getTypedID()
+ * @generated
+ */
+ EReference getTypedID_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.FreeTypedID <em>Free Typed ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Free Typed ID</em>'.
+ * @see org.eclipse.etrice.core.room.FreeTypedID
+ * @generated
+ */
+ EClass getFreeTypedID();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.FreeTypedID#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.FreeTypedID#getName()
+ * @see #getFreeTypedID()
+ * @generated
+ */
+ EAttribute getFreeTypedID_Name();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.FreeTypedID#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.FreeTypedID#getType()
+ * @see #getFreeTypedID()
+ * @generated
+ */
+ EReference getFreeTypedID_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Type <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.Type
+ * @generated
+ */
+ EClass getType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Type#getPrim <em>Prim</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Prim</em>'.
+ * @see org.eclipse.etrice.core.room.Type#getPrim()
+ * @see #getType()
+ * @generated
+ */
+ EAttribute getType_Prim();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.Type#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.Type#getType()
+ * @see #getType()
+ * @generated
+ */
+ EReference getType_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.FreeType <em>Free Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Free Type</em>'.
+ * @see org.eclipse.etrice.core.room.FreeType
+ * @generated
+ */
+ EClass getFreeType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.FreeType#getPrim <em>Prim</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Prim</em>'.
+ * @see org.eclipse.etrice.core.room.FreeType#getPrim()
+ * @see #getFreeType()
+ * @generated
+ */
+ EAttribute getFreeType_Prim();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.FreeType#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.FreeType#getType()
+ * @see #getFreeType()
+ * @generated
+ */
+ EAttribute getFreeType_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.DataClass <em>Data Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Class</em>'.
+ * @see org.eclipse.etrice.core.room.DataClass
+ * @generated
+ */
+ EClass getDataClass();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.DataClass#getBase <em>Base</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base</em>'.
+ * @see org.eclipse.etrice.core.room.DataClass#getBase()
+ * @see #getDataClass()
+ * @generated
+ */
+ EReference getDataClass_Base();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.DataClass#getImports <em>Imports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Imports</em>'.
+ * @see org.eclipse.etrice.core.room.DataClass#getImports()
+ * @see #getDataClass()
+ * @generated
+ */
+ EReference getDataClass_Imports();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.DataClass#getAttributes <em>Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attributes</em>'.
+ * @see org.eclipse.etrice.core.room.DataClass#getAttributes()
+ * @see #getDataClass()
+ * @generated
+ */
+ EReference getDataClass_Attributes();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.DataClass#getOperations <em>Operations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Operations</em>'.
+ * @see org.eclipse.etrice.core.room.DataClass#getOperations()
+ * @see #getDataClass()
+ * @generated
+ */
+ EReference getDataClass_Operations();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Attribute <em>Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Attribute</em>'.
+ * @see org.eclipse.etrice.core.room.Attribute
+ * @generated
+ */
+ EClass getAttribute();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Attribute#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.Attribute#getName()
+ * @see #getAttribute()
+ * @generated
+ */
+ EAttribute getAttribute_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Attribute#getSize <em>Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Size</em>'.
+ * @see org.eclipse.etrice.core.room.Attribute#getSize()
+ * @see #getAttribute()
+ * @generated
+ */
+ EAttribute getAttribute_Size();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Attribute#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.Attribute#getType()
+ * @see #getAttribute()
+ * @generated
+ */
+ EReference getAttribute_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Operation <em>Operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Operation</em>'.
+ * @see org.eclipse.etrice.core.room.Operation
+ * @generated
+ */
+ EClass getOperation();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Operation#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.Operation#getName()
+ * @see #getOperation()
+ * @generated
+ */
+ EAttribute getOperation_Name();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.Operation#getArguments <em>Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Arguments</em>'.
+ * @see org.eclipse.etrice.core.room.Operation#getArguments()
+ * @see #getOperation()
+ * @generated
+ */
+ EReference getOperation_Arguments();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Operation#getReturntype <em>Returntype</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Returntype</em>'.
+ * @see org.eclipse.etrice.core.room.Operation#getReturntype()
+ * @see #getOperation()
+ * @generated
+ */
+ EReference getOperation_Returntype();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Operation#getDetailCode <em>Detail Code</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Detail Code</em>'.
+ * @see org.eclipse.etrice.core.room.Operation#getDetailCode()
+ * @see #getOperation()
+ * @generated
+ */
+ EReference getOperation_DetailCode();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ProtocolClass <em>Protocol Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Protocol Class</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass
+ * @generated
+ */
+ EClass getProtocolClass();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.ProtocolClass#getBase <em>Base</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getBase()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_Base();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ProtocolClass#getUserCode1 <em>User Code1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>User Code1</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getUserCode1()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_UserCode1();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ProtocolClass#getUserCode2 <em>User Code2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>User Code2</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getUserCode2()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_UserCode2();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ProtocolClass#getIncomingMessages <em>Incoming Messages</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Incoming Messages</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getIncomingMessages()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_IncomingMessages();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ProtocolClass#getOutgoingMessages <em>Outgoing Messages</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Outgoing Messages</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getOutgoingMessages()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_OutgoingMessages();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ProtocolClass#getRegular <em>Regular</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Regular</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getRegular()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_Regular();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ProtocolClass#getConjugate <em>Conjugate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Conjugate</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getConjugate()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_Conjugate();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ProtocolClass#getSemantics <em>Semantics</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Semantics</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolClass#getSemantics()
+ * @see #getProtocolClass()
+ * @generated
+ */
+ EReference getProtocolClass_Semantics();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Message <em>Message</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Message</em>'.
+ * @see org.eclipse.etrice.core.room.Message
+ * @generated
+ */
+ EClass getMessage();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Message#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.Message#getName()
+ * @see #getMessage()
+ * @generated
+ */
+ EAttribute getMessage_Name();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.Message#getArguments <em>Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Arguments</em>'.
+ * @see org.eclipse.etrice.core.room.Message#getArguments()
+ * @see #getMessage()
+ * @generated
+ */
+ EReference getMessage_Arguments();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.PortClass <em>Port Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Port Class</em>'.
+ * @see org.eclipse.etrice.core.room.PortClass
+ * @generated
+ */
+ EClass getPortClass();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.PortClass#getUserCode <em>User Code</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>User Code</em>'.
+ * @see org.eclipse.etrice.core.room.PortClass#getUserCode()
+ * @see #getPortClass()
+ * @generated
+ */
+ EReference getPortClass_UserCode();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.PortClass#getAttributes <em>Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attributes</em>'.
+ * @see org.eclipse.etrice.core.room.PortClass#getAttributes()
+ * @see #getPortClass()
+ * @generated
+ */
+ EReference getPortClass_Attributes();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.PortClass#getOperations <em>Operations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Operations</em>'.
+ * @see org.eclipse.etrice.core.room.PortClass#getOperations()
+ * @see #getPortClass()
+ * @generated
+ */
+ EReference getPortClass_Operations();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.PortClass#getMsgHandlers <em>Msg Handlers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Msg Handlers</em>'.
+ * @see org.eclipse.etrice.core.room.PortClass#getMsgHandlers()
+ * @see #getPortClass()
+ * @generated
+ */
+ EReference getPortClass_MsgHandlers();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.MessageHandler <em>Message Handler</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Message Handler</em>'.
+ * @see org.eclipse.etrice.core.room.MessageHandler
+ * @generated
+ */
+ EClass getMessageHandler();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.MessageHandler#getMsg <em>Msg</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Msg</em>'.
+ * @see org.eclipse.etrice.core.room.MessageHandler#getMsg()
+ * @see #getMessageHandler()
+ * @generated
+ */
+ EReference getMessageHandler_Msg();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.MessageHandler#getDetailCode <em>Detail Code</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Detail Code</em>'.
+ * @see org.eclipse.etrice.core.room.MessageHandler#getDetailCode()
+ * @see #getMessageHandler()
+ * @generated
+ */
+ EReference getMessageHandler_DetailCode();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ProtocolSemantics <em>Protocol Semantics</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Protocol Semantics</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolSemantics
+ * @generated
+ */
+ EClass getProtocolSemantics();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ProtocolSemantics#getRules <em>Rules</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Rules</em>'.
+ * @see org.eclipse.etrice.core.room.ProtocolSemantics#getRules()
+ * @see #getProtocolSemantics()
+ * @generated
+ */
+ EReference getProtocolSemantics_Rules();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SemanticsRule <em>Semantics Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Semantics Rule</em>'.
+ * @see org.eclipse.etrice.core.room.SemanticsRule
+ * @generated
+ */
+ EClass getSemanticsRule();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.SemanticsRule#getMsg <em>Msg</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Msg</em>'.
+ * @see org.eclipse.etrice.core.room.SemanticsRule#getMsg()
+ * @see #getSemanticsRule()
+ * @generated
+ */
+ EReference getSemanticsRule_Msg();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.SemanticsRule#getFollowUps <em>Follow Ups</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Follow Ups</em>'.
+ * @see org.eclipse.etrice.core.room.SemanticsRule#getFollowUps()
+ * @see #getSemanticsRule()
+ * @generated
+ */
+ EReference getSemanticsRule_FollowUps();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SemanticsInRule <em>Semantics In Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Semantics In Rule</em>'.
+ * @see org.eclipse.etrice.core.room.SemanticsInRule
+ * @generated
+ */
+ EClass getSemanticsInRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SemanticsOutRule <em>Semantics Out Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Semantics Out Rule</em>'.
+ * @see org.eclipse.etrice.core.room.SemanticsOutRule
+ * @generated
+ */
+ EClass getSemanticsOutRule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ActorClass <em>Actor Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Actor Class</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass
+ * @generated
+ */
+ EClass getActorClass();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.ActorClass#isAbstract <em>Abstract</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Abstract</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#isAbstract()
+ * @see #getActorClass()
+ * @generated
+ */
+ EAttribute getActorClass_Abstract();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.ActorClass#getBase <em>Base</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getBase()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_Base();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorClass#getIfPorts <em>If Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>If Ports</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getIfPorts()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_IfPorts();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ActorClass#getUserCode1 <em>User Code1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>User Code1</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getUserCode1()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_UserCode1();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ActorClass#getUserCode2 <em>User Code2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>User Code2</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getUserCode2()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_UserCode2();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorClass#getIntPorts <em>Int Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Int Ports</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getIntPorts()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_IntPorts();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorClass#getExtPorts <em>Ext Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Ext Ports</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getExtPorts()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_ExtPorts();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorClass#getServiceImplementations <em>Service Implementations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Service Implementations</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getServiceImplementations()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_ServiceImplementations();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorClass#getStrSAPs <em>Str SA Ps</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Str SA Ps</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getStrSAPs()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_StrSAPs();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorClass#getAttributes <em>Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attributes</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getAttributes()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_Attributes();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.ActorClass#getOperations <em>Operations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Operations</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getOperations()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_Operations();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.ActorClass#getStateMachine <em>State Machine</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>State Machine</em>'.
+ * @see org.eclipse.etrice.core.room.ActorClass#getStateMachine()
+ * @see #getActorClass()
+ * @generated
+ */
+ EReference getActorClass_StateMachine();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.InterfaceItem <em>Interface Item</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Interface Item</em>'.
+ * @see org.eclipse.etrice.core.room.InterfaceItem
+ * @generated
+ */
+ EClass getInterfaceItem();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.InterfaceItem#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.InterfaceItem#getName()
+ * @see #getInterfaceItem()
+ * @generated
+ */
+ EAttribute getInterfaceItem_Name();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.InterfaceItem#getProtocol <em>Protocol</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Protocol</em>'.
+ * @see org.eclipse.etrice.core.room.InterfaceItem#getProtocol()
+ * @see #getInterfaceItem()
+ * @generated
+ */
+ EReference getInterfaceItem_Protocol();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Port <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Port</em>'.
+ * @see org.eclipse.etrice.core.room.Port
+ * @generated
+ */
+ EClass getPort();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Port#isConjugated <em>Conjugated</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Conjugated</em>'.
+ * @see org.eclipse.etrice.core.room.Port#isConjugated()
+ * @see #getPort()
+ * @generated
+ */
+ EAttribute getPort_Conjugated();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Port#getMultiplicity <em>Multiplicity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Multiplicity</em>'.
+ * @see org.eclipse.etrice.core.room.Port#getMultiplicity()
+ * @see #getPort()
+ * @generated
+ */
+ EAttribute getPort_Multiplicity();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ExternalPort <em>External Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>External Port</em>'.
+ * @see org.eclipse.etrice.core.room.ExternalPort
+ * @generated
+ */
+ EClass getExternalPort();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.ExternalPort#getIfport <em>Ifport</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ifport</em>'.
+ * @see org.eclipse.etrice.core.room.ExternalPort#getIfport()
+ * @see #getExternalPort()
+ * @generated
+ */
+ EReference getExternalPort_Ifport();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SAPRef <em>SAP Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>SAP Ref</em>'.
+ * @see org.eclipse.etrice.core.room.SAPRef
+ * @generated
+ */
+ EClass getSAPRef();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SPPRef <em>SPP Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>SPP Ref</em>'.
+ * @see org.eclipse.etrice.core.room.SPPRef
+ * @generated
+ */
+ EClass getSPPRef();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ServiceImplementation <em>Service Implementation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Service Implementation</em>'.
+ * @see org.eclipse.etrice.core.room.ServiceImplementation
+ * @generated
+ */
+ EClass getServiceImplementation();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.ServiceImplementation#getSpp <em>Spp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Spp</em>'.
+ * @see org.eclipse.etrice.core.room.ServiceImplementation#getSpp()
+ * @see #getServiceImplementation()
+ * @generated
+ */
+ EReference getServiceImplementation_Spp();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.LogicalSystem <em>Logical System</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Logical System</em>'.
+ * @see org.eclipse.etrice.core.room.LogicalSystem
+ * @generated
+ */
+ EClass getLogicalSystem();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.LogicalSystem#getSubSystems <em>Sub Systems</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Sub Systems</em>'.
+ * @see org.eclipse.etrice.core.room.LogicalSystem#getSubSystems()
+ * @see #getLogicalSystem()
+ * @generated
+ */
+ EReference getLogicalSystem_SubSystems();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ActorContainerRef <em>Actor Container Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Actor Container Ref</em>'.
+ * @see org.eclipse.etrice.core.room.ActorContainerRef
+ * @generated
+ */
+ EClass getActorContainerRef();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.ActorContainerRef#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.ActorContainerRef#getName()
+ * @see #getActorContainerRef()
+ * @generated
+ */
+ EAttribute getActorContainerRef_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SubSystemRef <em>Sub System Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sub System Ref</em>'.
+ * @see org.eclipse.etrice.core.room.SubSystemRef
+ * @generated
+ */
+ EClass getSubSystemRef();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.SubSystemRef#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.SubSystemRef#getType()
+ * @see #getSubSystemRef()
+ * @generated
+ */
+ EReference getSubSystemRef_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SubSystemClass <em>Sub System Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sub System Class</em>'.
+ * @see org.eclipse.etrice.core.room.SubSystemClass
+ * @generated
+ */
+ EClass getSubSystemClass();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.SubSystemClass#getRelayPorts <em>Relay Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Relay Ports</em>'.
+ * @see org.eclipse.etrice.core.room.SubSystemClass#getRelayPorts()
+ * @see #getSubSystemClass()
+ * @generated
+ */
+ EReference getSubSystemClass_RelayPorts();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.SubSystemClass#getThreads <em>Threads</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Threads</em>'.
+ * @see org.eclipse.etrice.core.room.SubSystemClass#getThreads()
+ * @see #getSubSystemClass()
+ * @generated
+ */
+ EReference getSubSystemClass_Threads();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.LogicalThread <em>Logical Thread</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Logical Thread</em>'.
+ * @see org.eclipse.etrice.core.room.LogicalThread
+ * @generated
+ */
+ EClass getLogicalThread();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.LogicalThread#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.LogicalThread#getName()
+ * @see #getLogicalThread()
+ * @generated
+ */
+ EAttribute getLogicalThread_Name();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.LogicalThread#getInstances <em>Instances</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Instances</em>'.
+ * @see org.eclipse.etrice.core.room.LogicalThread#getInstances()
+ * @see #getLogicalThread()
+ * @generated
+ */
+ EReference getLogicalThread_Instances();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ActorInstancePath <em>Actor Instance Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Actor Instance Path</em>'.
+ * @see org.eclipse.etrice.core.room.ActorInstancePath
+ * @generated
+ */
+ EClass getActorInstancePath();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.etrice.core.room.ActorInstancePath#getSegments <em>Segments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Segments</em>'.
+ * @see org.eclipse.etrice.core.room.ActorInstancePath#getSegments()
+ * @see #getActorInstancePath()
+ * @generated
+ */
+ EAttribute getActorInstancePath_Segments();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Binding <em>Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Binding</em>'.
+ * @see org.eclipse.etrice.core.room.Binding
+ * @generated
+ */
+ EClass getBinding();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Binding#getEndpoint1 <em>Endpoint1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Endpoint1</em>'.
+ * @see org.eclipse.etrice.core.room.Binding#getEndpoint1()
+ * @see #getBinding()
+ * @generated
+ */
+ EReference getBinding_Endpoint1();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Binding#getEndpoint2 <em>Endpoint2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Endpoint2</em>'.
+ * @see org.eclipse.etrice.core.room.Binding#getEndpoint2()
+ * @see #getBinding()
+ * @generated
+ */
+ EReference getBinding_Endpoint2();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.BindingEndPoint <em>Binding End Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Binding End Point</em>'.
+ * @see org.eclipse.etrice.core.room.BindingEndPoint
+ * @generated
+ */
+ EClass getBindingEndPoint();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.BindingEndPoint#getActorRef <em>Actor Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Actor Ref</em>'.
+ * @see org.eclipse.etrice.core.room.BindingEndPoint#getActorRef()
+ * @see #getBindingEndPoint()
+ * @generated
+ */
+ EReference getBindingEndPoint_ActorRef();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.BindingEndPoint#getPort <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Port</em>'.
+ * @see org.eclipse.etrice.core.room.BindingEndPoint#getPort()
+ * @see #getBindingEndPoint()
+ * @generated
+ */
+ EReference getBindingEndPoint_Port();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.LayerConnection <em>Layer Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Connection</em>'.
+ * @see org.eclipse.etrice.core.room.LayerConnection
+ * @generated
+ */
+ EClass getLayerConnection();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.LayerConnection#getFrom <em>From</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>From</em>'.
+ * @see org.eclipse.etrice.core.room.LayerConnection#getFrom()
+ * @see #getLayerConnection()
+ * @generated
+ */
+ EReference getLayerConnection_From();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.LayerConnection#getTo <em>To</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>To</em>'.
+ * @see org.eclipse.etrice.core.room.LayerConnection#getTo()
+ * @see #getLayerConnection()
+ * @generated
+ */
+ EReference getLayerConnection_To();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SAPoint <em>SA Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>SA Point</em>'.
+ * @see org.eclipse.etrice.core.room.SAPoint
+ * @generated
+ */
+ EClass getSAPoint();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.RefSAPoint <em>Ref SA Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Ref SA Point</em>'.
+ * @see org.eclipse.etrice.core.room.RefSAPoint
+ * @generated
+ */
+ EClass getRefSAPoint();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.RefSAPoint#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ref</em>'.
+ * @see org.eclipse.etrice.core.room.RefSAPoint#getRef()
+ * @see #getRefSAPoint()
+ * @generated
+ */
+ EReference getRefSAPoint_Ref();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.RelaySAPoint <em>Relay SA Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Relay SA Point</em>'.
+ * @see org.eclipse.etrice.core.room.RelaySAPoint
+ * @generated
+ */
+ EClass getRelaySAPoint();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.RelaySAPoint#getRelay <em>Relay</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Relay</em>'.
+ * @see org.eclipse.etrice.core.room.RelaySAPoint#getRelay()
+ * @see #getRelaySAPoint()
+ * @generated
+ */
+ EReference getRelaySAPoint_Relay();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SPPoint <em>SP Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>SP Point</em>'.
+ * @see org.eclipse.etrice.core.room.SPPoint
+ * @generated
+ */
+ EClass getSPPoint();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.SPPoint#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ref</em>'.
+ * @see org.eclipse.etrice.core.room.SPPoint#getRef()
+ * @see #getSPPoint()
+ * @generated
+ */
+ EReference getSPPoint_Ref();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.SPPoint#getService <em>Service</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Service</em>'.
+ * @see org.eclipse.etrice.core.room.SPPoint#getService()
+ * @see #getSPPoint()
+ * @generated
+ */
+ EReference getSPPoint_Service();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ActorRef <em>Actor Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Actor Ref</em>'.
+ * @see org.eclipse.etrice.core.room.ActorRef
+ * @generated
+ */
+ EClass getActorRef();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.ActorRef#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.etrice.core.room.ActorRef#getType()
+ * @see #getActorRef()
+ * @generated
+ */
+ EReference getActorRef_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.StateGraphNode <em>State Graph Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>State Graph Node</em>'.
+ * @see org.eclipse.etrice.core.room.StateGraphNode
+ * @generated
+ */
+ EClass getStateGraphNode();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.StateGraphItem <em>State Graph Item</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>State Graph Item</em>'.
+ * @see org.eclipse.etrice.core.room.StateGraphItem
+ * @generated
+ */
+ EClass getStateGraphItem();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.State <em>State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>State</em>'.
+ * @see org.eclipse.etrice.core.room.State
+ * @generated
+ */
+ EClass getState();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.State#getEntryCode <em>Entry Code</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Entry Code</em>'.
+ * @see org.eclipse.etrice.core.room.State#getEntryCode()
+ * @see #getState()
+ * @generated
+ */
+ EReference getState_EntryCode();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.State#getExitCode <em>Exit Code</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Exit Code</em>'.
+ * @see org.eclipse.etrice.core.room.State#getExitCode()
+ * @see #getState()
+ * @generated
+ */
+ EReference getState_ExitCode();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.State#getSubgraph <em>Subgraph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Subgraph</em>'.
+ * @see org.eclipse.etrice.core.room.State#getSubgraph()
+ * @see #getState()
+ * @generated
+ */
+ EReference getState_Subgraph();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.StateGraph <em>State Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>State Graph</em>'.
+ * @see org.eclipse.etrice.core.room.StateGraph
+ * @generated
+ */
+ EClass getStateGraph();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.StateGraph#getStates <em>States</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>States</em>'.
+ * @see org.eclipse.etrice.core.room.StateGraph#getStates()
+ * @see #getStateGraph()
+ * @generated
+ */
+ EReference getStateGraph_States();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.StateGraph#getTrPoints <em>Tr Points</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Tr Points</em>'.
+ * @see org.eclipse.etrice.core.room.StateGraph#getTrPoints()
+ * @see #getStateGraph()
+ * @generated
+ */
+ EReference getStateGraph_TrPoints();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.StateGraph#getChPoints <em>Ch Points</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Ch Points</em>'.
+ * @see org.eclipse.etrice.core.room.StateGraph#getChPoints()
+ * @see #getStateGraph()
+ * @generated
+ */
+ EReference getStateGraph_ChPoints();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.StateGraph#getTransitions <em>Transitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Transitions</em>'.
+ * @see org.eclipse.etrice.core.room.StateGraph#getTransitions()
+ * @see #getStateGraph()
+ * @generated
+ */
+ EReference getStateGraph_Transitions();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.BaseState <em>Base State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Base State</em>'.
+ * @see org.eclipse.etrice.core.room.BaseState
+ * @generated
+ */
+ EClass getBaseState();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.BaseState#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.BaseState#getName()
+ * @see #getBaseState()
+ * @generated
+ */
+ EAttribute getBaseState_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.RefinedState <em>Refined State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Refined State</em>'.
+ * @see org.eclipse.etrice.core.room.RefinedState
+ * @generated
+ */
+ EClass getRefinedState();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.RefinedState#getBase <em>Base</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base</em>'.
+ * @see org.eclipse.etrice.core.room.RefinedState#getBase()
+ * @see #getRefinedState()
+ * @generated
+ */
+ EReference getRefinedState_Base();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.DetailCode <em>Detail Code</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Detail Code</em>'.
+ * @see org.eclipse.etrice.core.room.DetailCode
+ * @generated
+ */
+ EClass getDetailCode();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.etrice.core.room.DetailCode#getCommands <em>Commands</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Commands</em>'.
+ * @see org.eclipse.etrice.core.room.DetailCode#getCommands()
+ * @see #getDetailCode()
+ * @generated
+ */
+ EAttribute getDetailCode_Commands();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.TrPoint <em>Tr Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Tr Point</em>'.
+ * @see org.eclipse.etrice.core.room.TrPoint
+ * @generated
+ */
+ EClass getTrPoint();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.TrPoint#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.TrPoint#getName()
+ * @see #getTrPoint()
+ * @generated
+ */
+ EAttribute getTrPoint_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.TransitionPoint <em>Transition Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Transition Point</em>'.
+ * @see org.eclipse.etrice.core.room.TransitionPoint
+ * @generated
+ */
+ EClass getTransitionPoint();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.TransitionPoint#isHandler <em>Handler</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Handler</em>'.
+ * @see org.eclipse.etrice.core.room.TransitionPoint#isHandler()
+ * @see #getTransitionPoint()
+ * @generated
+ */
+ EAttribute getTransitionPoint_Handler();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.EntryPoint <em>Entry Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Entry Point</em>'.
+ * @see org.eclipse.etrice.core.room.EntryPoint
+ * @generated
+ */
+ EClass getEntryPoint();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ExitPoint <em>Exit Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Exit Point</em>'.
+ * @see org.eclipse.etrice.core.room.ExitPoint
+ * @generated
+ */
+ EClass getExitPoint();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ChoicePoint <em>Choice Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Choice Point</em>'.
+ * @see org.eclipse.etrice.core.room.ChoicePoint
+ * @generated
+ */
+ EClass getChoicePoint();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.ChoicePoint#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.ChoicePoint#getName()
+ * @see #getChoicePoint()
+ * @generated
+ */
+ EAttribute getChoicePoint_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Transition <em>Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Transition</em>'.
+ * @see org.eclipse.etrice.core.room.Transition
+ * @generated
+ */
+ EClass getTransition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Transition#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.core.room.Transition#getName()
+ * @see #getTransition()
+ * @generated
+ */
+ EAttribute getTransition_Name();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Transition#getTo <em>To</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>To</em>'.
+ * @see org.eclipse.etrice.core.room.Transition#getTo()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_To();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Transition#getAction <em>Action</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Action</em>'.
+ * @see org.eclipse.etrice.core.room.Transition#getAction()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_Action();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.NonInitialTransition <em>Non Initial Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Non Initial Transition</em>'.
+ * @see org.eclipse.etrice.core.room.NonInitialTransition
+ * @generated
+ */
+ EClass getNonInitialTransition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.NonInitialTransition#getFrom <em>From</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>From</em>'.
+ * @see org.eclipse.etrice.core.room.NonInitialTransition#getFrom()
+ * @see #getNonInitialTransition()
+ * @generated
+ */
+ EReference getNonInitialTransition_From();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.InitialTransition <em>Initial Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Initial Transition</em>'.
+ * @see org.eclipse.etrice.core.room.InitialTransition
+ * @generated
+ */
+ EClass getInitialTransition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ContinuationTransition <em>Continuation Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Continuation Transition</em>'.
+ * @see org.eclipse.etrice.core.room.ContinuationTransition
+ * @generated
+ */
+ EClass getContinuationTransition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.TriggeredTransition <em>Triggered Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Triggered Transition</em>'.
+ * @see org.eclipse.etrice.core.room.TriggeredTransition
+ * @generated
+ */
+ EClass getTriggeredTransition();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.TriggeredTransition#getTriggers <em>Triggers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Triggers</em>'.
+ * @see org.eclipse.etrice.core.room.TriggeredTransition#getTriggers()
+ * @see #getTriggeredTransition()
+ * @generated
+ */
+ EReference getTriggeredTransition_Triggers();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.CPBranchTransition <em>CP Branch Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>CP Branch Transition</em>'.
+ * @see org.eclipse.etrice.core.room.CPBranchTransition
+ * @generated
+ */
+ EClass getCPBranchTransition();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.CPBranchTransition#getCondition <em>Condition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Condition</em>'.
+ * @see org.eclipse.etrice.core.room.CPBranchTransition#getCondition()
+ * @see #getCPBranchTransition()
+ * @generated
+ */
+ EReference getCPBranchTransition_Condition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.TransitionTerminal <em>Transition Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Transition Terminal</em>'.
+ * @see org.eclipse.etrice.core.room.TransitionTerminal
+ * @generated
+ */
+ EClass getTransitionTerminal();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.StateTerminal <em>State Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>State Terminal</em>'.
+ * @see org.eclipse.etrice.core.room.StateTerminal
+ * @generated
+ */
+ EClass getStateTerminal();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.StateTerminal#getState <em>State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>State</em>'.
+ * @see org.eclipse.etrice.core.room.StateTerminal#getState()
+ * @see #getStateTerminal()
+ * @generated
+ */
+ EReference getStateTerminal_State();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.TrPointTerminal <em>Tr Point Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Tr Point Terminal</em>'.
+ * @see org.eclipse.etrice.core.room.TrPointTerminal
+ * @generated
+ */
+ EClass getTrPointTerminal();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.TrPointTerminal#getTrPoint <em>Tr Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Tr Point</em>'.
+ * @see org.eclipse.etrice.core.room.TrPointTerminal#getTrPoint()
+ * @see #getTrPointTerminal()
+ * @generated
+ */
+ EReference getTrPointTerminal_TrPoint();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal <em>Sub State Tr Point Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sub State Tr Point Terminal</em>'.
+ * @see org.eclipse.etrice.core.room.SubStateTrPointTerminal
+ * @generated
+ */
+ EClass getSubStateTrPointTerminal();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal#getTrPoint <em>Tr Point</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Tr Point</em>'.
+ * @see org.eclipse.etrice.core.room.SubStateTrPointTerminal#getTrPoint()
+ * @see #getSubStateTrPointTerminal()
+ * @generated
+ */
+ EReference getSubStateTrPointTerminal_TrPoint();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal#getState <em>State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>State</em>'.
+ * @see org.eclipse.etrice.core.room.SubStateTrPointTerminal#getState()
+ * @see #getSubStateTrPointTerminal()
+ * @generated
+ */
+ EReference getSubStateTrPointTerminal_State();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.ChoicepointTerminal <em>Choicepoint Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Choicepoint Terminal</em>'.
+ * @see org.eclipse.etrice.core.room.ChoicepointTerminal
+ * @generated
+ */
+ EClass getChoicepointTerminal();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.ChoicepointTerminal#getCp <em>Cp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Cp</em>'.
+ * @see org.eclipse.etrice.core.room.ChoicepointTerminal#getCp()
+ * @see #getChoicepointTerminal()
+ * @generated
+ */
+ EReference getChoicepointTerminal_Cp();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Trigger <em>Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Trigger</em>'.
+ * @see org.eclipse.etrice.core.room.Trigger
+ * @generated
+ */
+ EClass getTrigger();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.core.room.Trigger#getMsgFromIfPairs <em>Msg From If Pairs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Msg From If Pairs</em>'.
+ * @see org.eclipse.etrice.core.room.Trigger#getMsgFromIfPairs()
+ * @see #getTrigger()
+ * @generated
+ */
+ EReference getTrigger_MsgFromIfPairs();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Trigger#getGuard <em>Guard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Guard</em>'.
+ * @see org.eclipse.etrice.core.room.Trigger#getGuard()
+ * @see #getTrigger()
+ * @generated
+ */
+ EReference getTrigger_Guard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.MessageFromIf <em>Message From If</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Message From If</em>'.
+ * @see org.eclipse.etrice.core.room.MessageFromIf
+ * @generated
+ */
+ EClass getMessageFromIf();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.MessageFromIf#getMessage <em>Message</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Message</em>'.
+ * @see org.eclipse.etrice.core.room.MessageFromIf#getMessage()
+ * @see #getMessageFromIf()
+ * @generated
+ */
+ EReference getMessageFromIf_Message();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.core.room.MessageFromIf#getFrom <em>From</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>From</em>'.
+ * @see org.eclipse.etrice.core.room.MessageFromIf#getFrom()
+ * @see #getMessageFromIf()
+ * @generated
+ */
+ EReference getMessageFromIf_From();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Guard <em>Guard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Guard</em>'.
+ * @see org.eclipse.etrice.core.room.Guard
+ * @generated
+ */
+ EClass getGuard();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.room.Guard#getGuard <em>Guard</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Guard</em>'.
+ * @see org.eclipse.etrice.core.room.Guard#getGuard()
+ * @see #getGuard()
+ * @generated
+ */
+ EReference getGuard_Guard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.core.room.Import <em>Import</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Import</em>'.
+ * @see org.eclipse.etrice.core.room.Import
+ * @generated
+ */
+ EClass getImport();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.core.room.Import#getImportedNamespace <em>Imported Namespace</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Imported Namespace</em>'.
+ * @see org.eclipse.etrice.core.room.Import#getImportedNamespace()
+ * @see #getImport()
+ * @generated
+ */
+ EAttribute getImport_ImportedNamespace();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.etrice.core.room.PrimitiveType <em>Primitive Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Primitive Type</em>'.
+ * @see org.eclipse.etrice.core.room.PrimitiveType
+ * @generated
+ */
+ EEnum getPrimitiveType();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ RoomFactory getRoomFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.RoomModelImpl <em>Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RoomModelImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRoomModel()
+ * @generated
+ */
+ EClass ROOM_MODEL = eINSTANCE.getRoomModel();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ROOM_MODEL__NAME = eINSTANCE.getRoomModel_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Imports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOM_MODEL__IMPORTS = eINSTANCE.getRoomModel_Imports();
+
+ /**
+ * The meta object literal for the '<em><b>Data Classes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOM_MODEL__DATA_CLASSES = eINSTANCE.getRoomModel_DataClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Protocol Classes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOM_MODEL__PROTOCOL_CLASSES = eINSTANCE.getRoomModel_ProtocolClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Actor Classes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOM_MODEL__ACTOR_CLASSES = eINSTANCE.getRoomModel_ActorClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Sub System Classes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOM_MODEL__SUB_SYSTEM_CLASSES = eINSTANCE.getRoomModel_SubSystemClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Systems</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOM_MODEL__SYSTEMS = eINSTANCE.getRoomModel_Systems();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.RoomClassImpl <em>Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RoomClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRoomClass()
+ * @generated
+ */
+ EClass ROOM_CLASS = eINSTANCE.getRoomClass();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ROOM_CLASS__NAME = eINSTANCE.getRoomClass_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.StructureClassImpl <em>Structure Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StructureClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStructureClass()
+ * @generated
+ */
+ EClass STRUCTURE_CLASS = eINSTANCE.getStructureClass();
+
+ /**
+ * The meta object literal for the '<em><b>Bindings</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_CLASS__BINDINGS = eINSTANCE.getStructureClass_Bindings();
+
+ /**
+ * The meta object literal for the '<em><b>Connections</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_CLASS__CONNECTIONS = eINSTANCE.getStructureClass_Connections();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ActorContainerClassImpl <em>Actor Container Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorContainerClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorContainerClass()
+ * @generated
+ */
+ EClass ACTOR_CONTAINER_CLASS = eINSTANCE.getActorContainerClass();
+
+ /**
+ * The meta object literal for the '<em><b>If SP Ps</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CONTAINER_CLASS__IF_SP_PS = eINSTANCE.getActorContainerClass_IfSPPs();
+
+ /**
+ * The meta object literal for the '<em><b>Actor Refs</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CONTAINER_CLASS__ACTOR_REFS = eINSTANCE.getActorContainerClass_ActorRefs();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TypedIDImpl <em>Typed ID</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TypedIDImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTypedID()
+ * @generated
+ */
+ EClass TYPED_ID = eINSTANCE.getTypedID();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TYPED_ID__NAME = eINSTANCE.getTypedID_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPED_ID__TYPE = eINSTANCE.getTypedID_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.FreeTypedIDImpl <em>Free Typed ID</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.FreeTypedIDImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getFreeTypedID()
+ * @generated
+ */
+ EClass FREE_TYPED_ID = eINSTANCE.getFreeTypedID();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FREE_TYPED_ID__NAME = eINSTANCE.getFreeTypedID_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FREE_TYPED_ID__TYPE = eINSTANCE.getFreeTypedID_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TypeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getType()
+ * @generated
+ */
+ EClass TYPE = eINSTANCE.getType();
+
+ /**
+ * The meta object literal for the '<em><b>Prim</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TYPE__PRIM = eINSTANCE.getType_Prim();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPE__TYPE = eINSTANCE.getType_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.FreeTypeImpl <em>Free Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.FreeTypeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getFreeType()
+ * @generated
+ */
+ EClass FREE_TYPE = eINSTANCE.getFreeType();
+
+ /**
+ * The meta object literal for the '<em><b>Prim</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FREE_TYPE__PRIM = eINSTANCE.getFreeType_Prim();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FREE_TYPE__TYPE = eINSTANCE.getFreeType_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.DataClassImpl <em>Data Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.DataClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getDataClass()
+ * @generated
+ */
+ EClass DATA_CLASS = eINSTANCE.getDataClass();
+
+ /**
+ * The meta object literal for the '<em><b>Base</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_CLASS__BASE = eINSTANCE.getDataClass_Base();
+
+ /**
+ * The meta object literal for the '<em><b>Imports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_CLASS__IMPORTS = eINSTANCE.getDataClass_Imports();
+
+ /**
+ * The meta object literal for the '<em><b>Attributes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_CLASS__ATTRIBUTES = eINSTANCE.getDataClass_Attributes();
+
+ /**
+ * The meta object literal for the '<em><b>Operations</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_CLASS__OPERATIONS = eINSTANCE.getDataClass_Operations();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.AttributeImpl <em>Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.AttributeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getAttribute()
+ * @generated
+ */
+ EClass ATTRIBUTE = eINSTANCE.getAttribute();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ATTRIBUTE__NAME = eINSTANCE.getAttribute_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Size</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ATTRIBUTE__SIZE = eINSTANCE.getAttribute_Size();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ATTRIBUTE__TYPE = eINSTANCE.getAttribute_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.OperationImpl <em>Operation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.OperationImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getOperation()
+ * @generated
+ */
+ EClass OPERATION = eINSTANCE.getOperation();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute OPERATION__NAME = eINSTANCE.getOperation_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATION__ARGUMENTS = eINSTANCE.getOperation_Arguments();
+
+ /**
+ * The meta object literal for the '<em><b>Returntype</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATION__RETURNTYPE = eINSTANCE.getOperation_Returntype();
+
+ /**
+ * The meta object literal for the '<em><b>Detail Code</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATION__DETAIL_CODE = eINSTANCE.getOperation_DetailCode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl <em>Protocol Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ProtocolClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getProtocolClass()
+ * @generated
+ */
+ EClass PROTOCOL_CLASS = eINSTANCE.getProtocolClass();
+
+ /**
+ * The meta object literal for the '<em><b>Base</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__BASE = eINSTANCE.getProtocolClass_Base();
+
+ /**
+ * The meta object literal for the '<em><b>User Code1</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__USER_CODE1 = eINSTANCE.getProtocolClass_UserCode1();
+
+ /**
+ * The meta object literal for the '<em><b>User Code2</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__USER_CODE2 = eINSTANCE.getProtocolClass_UserCode2();
+
+ /**
+ * The meta object literal for the '<em><b>Incoming Messages</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__INCOMING_MESSAGES = eINSTANCE.getProtocolClass_IncomingMessages();
+
+ /**
+ * The meta object literal for the '<em><b>Outgoing Messages</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__OUTGOING_MESSAGES = eINSTANCE.getProtocolClass_OutgoingMessages();
+
+ /**
+ * The meta object literal for the '<em><b>Regular</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__REGULAR = eINSTANCE.getProtocolClass_Regular();
+
+ /**
+ * The meta object literal for the '<em><b>Conjugate</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__CONJUGATE = eINSTANCE.getProtocolClass_Conjugate();
+
+ /**
+ * The meta object literal for the '<em><b>Semantics</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_CLASS__SEMANTICS = eINSTANCE.getProtocolClass_Semantics();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.MessageImpl <em>Message</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.MessageImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getMessage()
+ * @generated
+ */
+ EClass MESSAGE = eINSTANCE.getMessage();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute MESSAGE__NAME = eINSTANCE.getMessage_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MESSAGE__ARGUMENTS = eINSTANCE.getMessage_Arguments();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.PortClassImpl <em>Port Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.PortClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getPortClass()
+ * @generated
+ */
+ EClass PORT_CLASS = eINSTANCE.getPortClass();
+
+ /**
+ * The meta object literal for the '<em><b>User Code</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_CLASS__USER_CODE = eINSTANCE.getPortClass_UserCode();
+
+ /**
+ * The meta object literal for the '<em><b>Attributes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_CLASS__ATTRIBUTES = eINSTANCE.getPortClass_Attributes();
+
+ /**
+ * The meta object literal for the '<em><b>Operations</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_CLASS__OPERATIONS = eINSTANCE.getPortClass_Operations();
+
+ /**
+ * The meta object literal for the '<em><b>Msg Handlers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_CLASS__MSG_HANDLERS = eINSTANCE.getPortClass_MsgHandlers();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.MessageHandlerImpl <em>Message Handler</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.MessageHandlerImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getMessageHandler()
+ * @generated
+ */
+ EClass MESSAGE_HANDLER = eINSTANCE.getMessageHandler();
+
+ /**
+ * The meta object literal for the '<em><b>Msg</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MESSAGE_HANDLER__MSG = eINSTANCE.getMessageHandler_Msg();
+
+ /**
+ * The meta object literal for the '<em><b>Detail Code</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MESSAGE_HANDLER__DETAIL_CODE = eINSTANCE.getMessageHandler_DetailCode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ProtocolSemanticsImpl <em>Protocol Semantics</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ProtocolSemanticsImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getProtocolSemantics()
+ * @generated
+ */
+ EClass PROTOCOL_SEMANTICS = eINSTANCE.getProtocolSemantics();
+
+ /**
+ * The meta object literal for the '<em><b>Rules</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROTOCOL_SEMANTICS__RULES = eINSTANCE.getProtocolSemantics_Rules();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SemanticsRuleImpl <em>Semantics Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SemanticsRuleImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSemanticsRule()
+ * @generated
+ */
+ EClass SEMANTICS_RULE = eINSTANCE.getSemanticsRule();
+
+ /**
+ * The meta object literal for the '<em><b>Msg</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SEMANTICS_RULE__MSG = eINSTANCE.getSemanticsRule_Msg();
+
+ /**
+ * The meta object literal for the '<em><b>Follow Ups</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SEMANTICS_RULE__FOLLOW_UPS = eINSTANCE.getSemanticsRule_FollowUps();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SemanticsInRuleImpl <em>Semantics In Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SemanticsInRuleImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSemanticsInRule()
+ * @generated
+ */
+ EClass SEMANTICS_IN_RULE = eINSTANCE.getSemanticsInRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SemanticsOutRuleImpl <em>Semantics Out Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SemanticsOutRuleImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSemanticsOutRule()
+ * @generated
+ */
+ EClass SEMANTICS_OUT_RULE = eINSTANCE.getSemanticsOutRule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ActorClassImpl <em>Actor Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorClass()
+ * @generated
+ */
+ EClass ACTOR_CLASS = eINSTANCE.getActorClass();
+
+ /**
+ * The meta object literal for the '<em><b>Abstract</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ACTOR_CLASS__ABSTRACT = eINSTANCE.getActorClass_Abstract();
+
+ /**
+ * The meta object literal for the '<em><b>Base</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__BASE = eINSTANCE.getActorClass_Base();
+
+ /**
+ * The meta object literal for the '<em><b>If Ports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__IF_PORTS = eINSTANCE.getActorClass_IfPorts();
+
+ /**
+ * The meta object literal for the '<em><b>User Code1</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__USER_CODE1 = eINSTANCE.getActorClass_UserCode1();
+
+ /**
+ * The meta object literal for the '<em><b>User Code2</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__USER_CODE2 = eINSTANCE.getActorClass_UserCode2();
+
+ /**
+ * The meta object literal for the '<em><b>Int Ports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__INT_PORTS = eINSTANCE.getActorClass_IntPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Ext Ports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__EXT_PORTS = eINSTANCE.getActorClass_ExtPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Service Implementations</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__SERVICE_IMPLEMENTATIONS = eINSTANCE.getActorClass_ServiceImplementations();
+
+ /**
+ * The meta object literal for the '<em><b>Str SA Ps</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__STR_SA_PS = eINSTANCE.getActorClass_StrSAPs();
+
+ /**
+ * The meta object literal for the '<em><b>Attributes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__ATTRIBUTES = eINSTANCE.getActorClass_Attributes();
+
+ /**
+ * The meta object literal for the '<em><b>Operations</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__OPERATIONS = eINSTANCE.getActorClass_Operations();
+
+ /**
+ * The meta object literal for the '<em><b>State Machine</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_CLASS__STATE_MACHINE = eINSTANCE.getActorClass_StateMachine();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.InterfaceItemImpl <em>Interface Item</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.InterfaceItemImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getInterfaceItem()
+ * @generated
+ */
+ EClass INTERFACE_ITEM = eINSTANCE.getInterfaceItem();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTERFACE_ITEM__NAME = eINSTANCE.getInterfaceItem_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Protocol</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERFACE_ITEM__PROTOCOL = eINSTANCE.getInterfaceItem_Protocol();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.PortImpl <em>Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.PortImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getPort()
+ * @generated
+ */
+ EClass PORT = eINSTANCE.getPort();
+
+ /**
+ * The meta object literal for the '<em><b>Conjugated</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PORT__CONJUGATED = eINSTANCE.getPort_Conjugated();
+
+ /**
+ * The meta object literal for the '<em><b>Multiplicity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PORT__MULTIPLICITY = eINSTANCE.getPort_Multiplicity();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ExternalPortImpl <em>External Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ExternalPortImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getExternalPort()
+ * @generated
+ */
+ EClass EXTERNAL_PORT = eINSTANCE.getExternalPort();
+
+ /**
+ * The meta object literal for the '<em><b>Ifport</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTERNAL_PORT__IFPORT = eINSTANCE.getExternalPort_Ifport();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SAPRefImpl <em>SAP Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SAPRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSAPRef()
+ * @generated
+ */
+ EClass SAP_REF = eINSTANCE.getSAPRef();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SPPRefImpl <em>SPP Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SPPRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSPPRef()
+ * @generated
+ */
+ EClass SPP_REF = eINSTANCE.getSPPRef();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ServiceImplementationImpl <em>Service Implementation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ServiceImplementationImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getServiceImplementation()
+ * @generated
+ */
+ EClass SERVICE_IMPLEMENTATION = eINSTANCE.getServiceImplementation();
+
+ /**
+ * The meta object literal for the '<em><b>Spp</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SERVICE_IMPLEMENTATION__SPP = eINSTANCE.getServiceImplementation_Spp();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.LogicalSystemImpl <em>Logical System</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.LogicalSystemImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getLogicalSystem()
+ * @generated
+ */
+ EClass LOGICAL_SYSTEM = eINSTANCE.getLogicalSystem();
+
+ /**
+ * The meta object literal for the '<em><b>Sub Systems</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LOGICAL_SYSTEM__SUB_SYSTEMS = eINSTANCE.getLogicalSystem_SubSystems();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ActorContainerRefImpl <em>Actor Container Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorContainerRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorContainerRef()
+ * @generated
+ */
+ EClass ACTOR_CONTAINER_REF = eINSTANCE.getActorContainerRef();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ACTOR_CONTAINER_REF__NAME = eINSTANCE.getActorContainerRef_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SubSystemRefImpl <em>Sub System Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SubSystemRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSubSystemRef()
+ * @generated
+ */
+ EClass SUB_SYSTEM_REF = eINSTANCE.getSubSystemRef();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUB_SYSTEM_REF__TYPE = eINSTANCE.getSubSystemRef_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SubSystemClassImpl <em>Sub System Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SubSystemClassImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSubSystemClass()
+ * @generated
+ */
+ EClass SUB_SYSTEM_CLASS = eINSTANCE.getSubSystemClass();
+
+ /**
+ * The meta object literal for the '<em><b>Relay Ports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUB_SYSTEM_CLASS__RELAY_PORTS = eINSTANCE.getSubSystemClass_RelayPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Threads</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUB_SYSTEM_CLASS__THREADS = eINSTANCE.getSubSystemClass_Threads();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.LogicalThreadImpl <em>Logical Thread</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.LogicalThreadImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getLogicalThread()
+ * @generated
+ */
+ EClass LOGICAL_THREAD = eINSTANCE.getLogicalThread();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LOGICAL_THREAD__NAME = eINSTANCE.getLogicalThread_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Instances</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LOGICAL_THREAD__INSTANCES = eINSTANCE.getLogicalThread_Instances();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ActorInstancePathImpl <em>Actor Instance Path</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorInstancePathImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorInstancePath()
+ * @generated
+ */
+ EClass ACTOR_INSTANCE_PATH = eINSTANCE.getActorInstancePath();
+
+ /**
+ * The meta object literal for the '<em><b>Segments</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ACTOR_INSTANCE_PATH__SEGMENTS = eINSTANCE.getActorInstancePath_Segments();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.BindingImpl <em>Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.BindingImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getBinding()
+ * @generated
+ */
+ EClass BINDING = eINSTANCE.getBinding();
+
+ /**
+ * The meta object literal for the '<em><b>Endpoint1</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING__ENDPOINT1 = eINSTANCE.getBinding_Endpoint1();
+
+ /**
+ * The meta object literal for the '<em><b>Endpoint2</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING__ENDPOINT2 = eINSTANCE.getBinding_Endpoint2();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.BindingEndPointImpl <em>Binding End Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.BindingEndPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getBindingEndPoint()
+ * @generated
+ */
+ EClass BINDING_END_POINT = eINSTANCE.getBindingEndPoint();
+
+ /**
+ * The meta object literal for the '<em><b>Actor Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING_END_POINT__ACTOR_REF = eINSTANCE.getBindingEndPoint_ActorRef();
+
+ /**
+ * The meta object literal for the '<em><b>Port</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING_END_POINT__PORT = eINSTANCE.getBindingEndPoint_Port();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.LayerConnectionImpl <em>Layer Connection</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.LayerConnectionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getLayerConnection()
+ * @generated
+ */
+ EClass LAYER_CONNECTION = eINSTANCE.getLayerConnection();
+
+ /**
+ * The meta object literal for the '<em><b>From</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_CONNECTION__FROM = eINSTANCE.getLayerConnection_From();
+
+ /**
+ * The meta object literal for the '<em><b>To</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_CONNECTION__TO = eINSTANCE.getLayerConnection_To();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SAPointImpl <em>SA Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SAPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSAPoint()
+ * @generated
+ */
+ EClass SA_POINT = eINSTANCE.getSAPoint();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.RefSAPointImpl <em>Ref SA Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RefSAPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRefSAPoint()
+ * @generated
+ */
+ EClass REF_SA_POINT = eINSTANCE.getRefSAPoint();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference REF_SA_POINT__REF = eINSTANCE.getRefSAPoint_Ref();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.RelaySAPointImpl <em>Relay SA Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RelaySAPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRelaySAPoint()
+ * @generated
+ */
+ EClass RELAY_SA_POINT = eINSTANCE.getRelaySAPoint();
+
+ /**
+ * The meta object literal for the '<em><b>Relay</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference RELAY_SA_POINT__RELAY = eINSTANCE.getRelaySAPoint_Relay();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SPPointImpl <em>SP Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SPPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSPPoint()
+ * @generated
+ */
+ EClass SP_POINT = eINSTANCE.getSPPoint();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SP_POINT__REF = eINSTANCE.getSPPoint_Ref();
+
+ /**
+ * The meta object literal for the '<em><b>Service</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SP_POINT__SERVICE = eINSTANCE.getSPPoint_Service();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ActorRefImpl <em>Actor Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ActorRefImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getActorRef()
+ * @generated
+ */
+ EClass ACTOR_REF = eINSTANCE.getActorRef();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_REF__TYPE = eINSTANCE.getActorRef_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.StateGraphNodeImpl <em>State Graph Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateGraphNodeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateGraphNode()
+ * @generated
+ */
+ EClass STATE_GRAPH_NODE = eINSTANCE.getStateGraphNode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.StateGraphItemImpl <em>State Graph Item</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateGraphItemImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateGraphItem()
+ * @generated
+ */
+ EClass STATE_GRAPH_ITEM = eINSTANCE.getStateGraphItem();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.StateImpl <em>State</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getState()
+ * @generated
+ */
+ EClass STATE = eINSTANCE.getState();
+
+ /**
+ * The meta object literal for the '<em><b>Entry Code</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE__ENTRY_CODE = eINSTANCE.getState_EntryCode();
+
+ /**
+ * The meta object literal for the '<em><b>Exit Code</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE__EXIT_CODE = eINSTANCE.getState_ExitCode();
+
+ /**
+ * The meta object literal for the '<em><b>Subgraph</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE__SUBGRAPH = eINSTANCE.getState_Subgraph();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.StateGraphImpl <em>State Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateGraphImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateGraph()
+ * @generated
+ */
+ EClass STATE_GRAPH = eINSTANCE.getStateGraph();
+
+ /**
+ * The meta object literal for the '<em><b>States</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE_GRAPH__STATES = eINSTANCE.getStateGraph_States();
+
+ /**
+ * The meta object literal for the '<em><b>Tr Points</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE_GRAPH__TR_POINTS = eINSTANCE.getStateGraph_TrPoints();
+
+ /**
+ * The meta object literal for the '<em><b>Ch Points</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE_GRAPH__CH_POINTS = eINSTANCE.getStateGraph_ChPoints();
+
+ /**
+ * The meta object literal for the '<em><b>Transitions</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE_GRAPH__TRANSITIONS = eINSTANCE.getStateGraph_Transitions();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.BaseStateImpl <em>Base State</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.BaseStateImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getBaseState()
+ * @generated
+ */
+ EClass BASE_STATE = eINSTANCE.getBaseState();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute BASE_STATE__NAME = eINSTANCE.getBaseState_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.RefinedStateImpl <em>Refined State</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.RefinedStateImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getRefinedState()
+ * @generated
+ */
+ EClass REFINED_STATE = eINSTANCE.getRefinedState();
+
+ /**
+ * The meta object literal for the '<em><b>Base</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference REFINED_STATE__BASE = eINSTANCE.getRefinedState_Base();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.DetailCodeImpl <em>Detail Code</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.DetailCodeImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getDetailCode()
+ * @generated
+ */
+ EClass DETAIL_CODE = eINSTANCE.getDetailCode();
+
+ /**
+ * The meta object literal for the '<em><b>Commands</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DETAIL_CODE__COMMANDS = eINSTANCE.getDetailCode_Commands();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TrPointImpl <em>Tr Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TrPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTrPoint()
+ * @generated
+ */
+ EClass TR_POINT = eINSTANCE.getTrPoint();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TR_POINT__NAME = eINSTANCE.getTrPoint_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TransitionPointImpl <em>Transition Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TransitionPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTransitionPoint()
+ * @generated
+ */
+ EClass TRANSITION_POINT = eINSTANCE.getTransitionPoint();
+
+ /**
+ * The meta object literal for the '<em><b>Handler</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TRANSITION_POINT__HANDLER = eINSTANCE.getTransitionPoint_Handler();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.EntryPointImpl <em>Entry Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.EntryPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getEntryPoint()
+ * @generated
+ */
+ EClass ENTRY_POINT = eINSTANCE.getEntryPoint();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ExitPointImpl <em>Exit Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ExitPointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getExitPoint()
+ * @generated
+ */
+ EClass EXIT_POINT = eINSTANCE.getExitPoint();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ChoicePointImpl <em>Choice Point</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ChoicePointImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getChoicePoint()
+ * @generated
+ */
+ EClass CHOICE_POINT = eINSTANCE.getChoicePoint();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CHOICE_POINT__NAME = eINSTANCE.getChoicePoint_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TransitionImpl <em>Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTransition()
+ * @generated
+ */
+ EClass TRANSITION = eINSTANCE.getTransition();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TRANSITION__NAME = eINSTANCE.getTransition_Name();
+
+ /**
+ * The meta object literal for the '<em><b>To</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION__TO = eINSTANCE.getTransition_To();
+
+ /**
+ * The meta object literal for the '<em><b>Action</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION__ACTION = eINSTANCE.getTransition_Action();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.NonInitialTransitionImpl <em>Non Initial Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.NonInitialTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getNonInitialTransition()
+ * @generated
+ */
+ EClass NON_INITIAL_TRANSITION = eINSTANCE.getNonInitialTransition();
+
+ /**
+ * The meta object literal for the '<em><b>From</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NON_INITIAL_TRANSITION__FROM = eINSTANCE.getNonInitialTransition_From();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.InitialTransitionImpl <em>Initial Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.InitialTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getInitialTransition()
+ * @generated
+ */
+ EClass INITIAL_TRANSITION = eINSTANCE.getInitialTransition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ContinuationTransitionImpl <em>Continuation Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ContinuationTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getContinuationTransition()
+ * @generated
+ */
+ EClass CONTINUATION_TRANSITION = eINSTANCE.getContinuationTransition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TriggeredTransitionImpl <em>Triggered Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TriggeredTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTriggeredTransition()
+ * @generated
+ */
+ EClass TRIGGERED_TRANSITION = eINSTANCE.getTriggeredTransition();
+
+ /**
+ * The meta object literal for the '<em><b>Triggers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRIGGERED_TRANSITION__TRIGGERS = eINSTANCE.getTriggeredTransition_Triggers();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.CPBranchTransitionImpl <em>CP Branch Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.CPBranchTransitionImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getCPBranchTransition()
+ * @generated
+ */
+ EClass CP_BRANCH_TRANSITION = eINSTANCE.getCPBranchTransition();
+
+ /**
+ * The meta object literal for the '<em><b>Condition</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CP_BRANCH_TRANSITION__CONDITION = eINSTANCE.getCPBranchTransition_Condition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TransitionTerminalImpl <em>Transition Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TransitionTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTransitionTerminal()
+ * @generated
+ */
+ EClass TRANSITION_TERMINAL = eINSTANCE.getTransitionTerminal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.StateTerminalImpl <em>State Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.StateTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getStateTerminal()
+ * @generated
+ */
+ EClass STATE_TERMINAL = eINSTANCE.getStateTerminal();
+
+ /**
+ * The meta object literal for the '<em><b>State</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STATE_TERMINAL__STATE = eINSTANCE.getStateTerminal_State();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TrPointTerminalImpl <em>Tr Point Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TrPointTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTrPointTerminal()
+ * @generated
+ */
+ EClass TR_POINT_TERMINAL = eINSTANCE.getTrPointTerminal();
+
+ /**
+ * The meta object literal for the '<em><b>Tr Point</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TR_POINT_TERMINAL__TR_POINT = eINSTANCE.getTrPointTerminal_TrPoint();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.SubStateTrPointTerminalImpl <em>Sub State Tr Point Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.SubStateTrPointTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getSubStateTrPointTerminal()
+ * @generated
+ */
+ EClass SUB_STATE_TR_POINT_TERMINAL = eINSTANCE.getSubStateTrPointTerminal();
+
+ /**
+ * The meta object literal for the '<em><b>Tr Point</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUB_STATE_TR_POINT_TERMINAL__TR_POINT = eINSTANCE.getSubStateTrPointTerminal_TrPoint();
+
+ /**
+ * The meta object literal for the '<em><b>State</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUB_STATE_TR_POINT_TERMINAL__STATE = eINSTANCE.getSubStateTrPointTerminal_State();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ChoicepointTerminalImpl <em>Choicepoint Terminal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ChoicepointTerminalImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getChoicepointTerminal()
+ * @generated
+ */
+ EClass CHOICEPOINT_TERMINAL = eINSTANCE.getChoicepointTerminal();
+
+ /**
+ * The meta object literal for the '<em><b>Cp</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CHOICEPOINT_TERMINAL__CP = eINSTANCE.getChoicepointTerminal_Cp();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.TriggerImpl <em>Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.TriggerImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getTrigger()
+ * @generated
+ */
+ EClass TRIGGER = eINSTANCE.getTrigger();
+
+ /**
+ * The meta object literal for the '<em><b>Msg From If Pairs</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRIGGER__MSG_FROM_IF_PAIRS = eINSTANCE.getTrigger_MsgFromIfPairs();
+
+ /**
+ * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRIGGER__GUARD = eINSTANCE.getTrigger_Guard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.MessageFromIfImpl <em>Message From If</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.MessageFromIfImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getMessageFromIf()
+ * @generated
+ */
+ EClass MESSAGE_FROM_IF = eINSTANCE.getMessageFromIf();
+
+ /**
+ * The meta object literal for the '<em><b>Message</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MESSAGE_FROM_IF__MESSAGE = eINSTANCE.getMessageFromIf_Message();
+
+ /**
+ * The meta object literal for the '<em><b>From</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MESSAGE_FROM_IF__FROM = eINSTANCE.getMessageFromIf_From();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.GuardImpl <em>Guard</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.GuardImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getGuard()
+ * @generated
+ */
+ EClass GUARD = eINSTANCE.getGuard();
+
+ /**
+ * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GUARD__GUARD = eINSTANCE.getGuard_Guard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.impl.ImportImpl <em>Import</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.impl.ImportImpl
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getImport()
+ * @generated
+ */
+ EClass IMPORT = eINSTANCE.getImport();
+
+ /**
+ * The meta object literal for the '<em><b>Imported Namespace</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IMPORT__IMPORTED_NAMESPACE = eINSTANCE.getImport_ImportedNamespace();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.core.room.PrimitiveType <em>Primitive Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.PrimitiveType
+ * @see org.eclipse.etrice.core.room.impl.RoomPackageImpl#getPrimitiveType()
+ * @generated
+ */
+ EEnum PRIMITIVE_TYPE = eINSTANCE.getPrimitiveType();
+
+ }
+
+} //RoomPackage
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPRef.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPRef.java
new file mode 100644
index 000000000..e2b241007
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPRef.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SAP Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSAPRef()
+ * @model
+ * @generated
+ */
+public interface SAPRef extends InterfaceItem
+{
+} // SAPRef
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPoint.java
new file mode 100644
index 000000000..9fd06afc0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SAPoint.java
@@ -0,0 +1,23 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SA Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSAPoint()
+ * @model
+ * @generated
+ */
+public interface SAPoint extends EObject
+{
+} // SAPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPRef.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPRef.java
new file mode 100644
index 000000000..010be4aa5
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPRef.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SPP Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSPPRef()
+ * @model
+ * @generated
+ */
+public interface SPPRef extends InterfaceItem
+{
+} // SPPRef
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPoint.java
new file mode 100644
index 000000000..d43ebc15d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SPPoint.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SP Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.SPPoint#getRef <em>Ref</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.SPPoint#getService <em>Service</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSPPoint()
+ * @model
+ * @generated
+ */
+public interface SPPoint extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' reference.
+ * @see #setRef(ActorContainerRef)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSPPoint_Ref()
+ * @model
+ * @generated
+ */
+ ActorContainerRef getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.SPPoint#getRef <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' reference.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(ActorContainerRef value);
+
+ /**
+ * Returns the value of the '<em><b>Service</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Service</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Service</em>' reference.
+ * @see #setService(SPPRef)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSPPoint_Service()
+ * @model
+ * @generated
+ */
+ SPPRef getService();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.SPPoint#getService <em>Service</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Service</em>' reference.
+ * @see #getService()
+ * @generated
+ */
+ void setService(SPPRef value);
+
+} // SPPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsInRule.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsInRule.java
new file mode 100644
index 000000000..e32751db2
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsInRule.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Semantics In Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSemanticsInRule()
+ * @model
+ * @generated
+ */
+public interface SemanticsInRule extends SemanticsRule
+{
+} // SemanticsInRule
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsOutRule.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsOutRule.java
new file mode 100644
index 000000000..d33888190
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsOutRule.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Semantics Out Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSemanticsOutRule()
+ * @model
+ * @generated
+ */
+public interface SemanticsOutRule extends SemanticsRule
+{
+} // SemanticsOutRule
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsRule.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsRule.java
new file mode 100644
index 000000000..a0fa05699
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SemanticsRule.java
@@ -0,0 +1,74 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Semantics Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.SemanticsRule#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.SemanticsRule#getFollowUps <em>Follow Ups</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSemanticsRule()
+ * @model
+ * @generated
+ */
+public interface SemanticsRule extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Msg</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Msg</em>' reference.
+ * @see #setMsg(Message)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSemanticsRule_Msg()
+ * @model
+ * @generated
+ */
+ Message getMsg();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.SemanticsRule#getMsg <em>Msg</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Msg</em>' reference.
+ * @see #getMsg()
+ * @generated
+ */
+ void setMsg(Message value);
+
+ /**
+ * Returns the value of the '<em><b>Follow Ups</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.SemanticsRule}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Follow Ups</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Follow Ups</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSemanticsRule_FollowUps()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SemanticsRule> getFollowUps();
+
+} // SemanticsRule
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ServiceImplementation.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ServiceImplementation.java
new file mode 100644
index 000000000..6ebd02169
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/ServiceImplementation.java
@@ -0,0 +1,55 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Service Implementation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.ServiceImplementation#getSpp <em>Spp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getServiceImplementation()
+ * @model
+ * @generated
+ */
+public interface ServiceImplementation extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Spp</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Spp</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Spp</em>' reference.
+ * @see #setSpp(SPPRef)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getServiceImplementation_Spp()
+ * @model
+ * @generated
+ */
+ SPPRef getSpp();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.ServiceImplementation#getSpp <em>Spp</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Spp</em>' reference.
+ * @see #getSpp()
+ * @generated
+ */
+ void setSpp(SPPRef value);
+
+} // ServiceImplementation
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/State.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/State.java
new file mode 100644
index 000000000..00472802e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/State.java
@@ -0,0 +1,108 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.State#getEntryCode <em>Entry Code</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.State#getExitCode <em>Exit Code</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.State#getSubgraph <em>Subgraph</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getState()
+ * @model
+ * @generated
+ */
+public interface State extends StateGraphNode
+{
+ /**
+ * Returns the value of the '<em><b>Entry Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Entry Code</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Entry Code</em>' containment reference.
+ * @see #setEntryCode(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getState_EntryCode()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getEntryCode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.State#getEntryCode <em>Entry Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Entry Code</em>' containment reference.
+ * @see #getEntryCode()
+ * @generated
+ */
+ void setEntryCode(DetailCode value);
+
+ /**
+ * Returns the value of the '<em><b>Exit Code</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exit Code</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Exit Code</em>' containment reference.
+ * @see #setExitCode(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getState_ExitCode()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getExitCode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.State#getExitCode <em>Exit Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Exit Code</em>' containment reference.
+ * @see #getExitCode()
+ * @generated
+ */
+ void setExitCode(DetailCode value);
+
+ /**
+ * Returns the value of the '<em><b>Subgraph</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Subgraph</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Subgraph</em>' containment reference.
+ * @see #setSubgraph(StateGraph)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getState_Subgraph()
+ * @model containment="true"
+ * @generated
+ */
+ StateGraph getSubgraph();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.State#getSubgraph <em>Subgraph</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Subgraph</em>' containment reference.
+ * @see #getSubgraph()
+ * @generated
+ */
+ void setSubgraph(StateGraph value);
+
+} // State
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraph.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraph.java
new file mode 100644
index 000000000..e1e23262c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraph.java
@@ -0,0 +1,98 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>State Graph</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.StateGraph#getStates <em>States</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.StateGraph#getTrPoints <em>Tr Points</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.StateGraph#getChPoints <em>Ch Points</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.StateGraph#getTransitions <em>Transitions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateGraph()
+ * @model
+ * @generated
+ */
+public interface StateGraph extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>States</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.State}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>States</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>States</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateGraph_States()
+ * @model containment="true"
+ * @generated
+ */
+ EList<State> getStates();
+
+ /**
+ * Returns the value of the '<em><b>Tr Points</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.TrPoint}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Tr Points</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Tr Points</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateGraph_TrPoints()
+ * @model containment="true"
+ * @generated
+ */
+ EList<TrPoint> getTrPoints();
+
+ /**
+ * Returns the value of the '<em><b>Ch Points</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ChoicePoint}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ch Points</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ch Points</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateGraph_ChPoints()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ChoicePoint> getChPoints();
+
+ /**
+ * Returns the value of the '<em><b>Transitions</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Transition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Transitions</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Transitions</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateGraph_Transitions()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Transition> getTransitions();
+
+} // StateGraph
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphItem.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphItem.java
new file mode 100644
index 000000000..7290c0339
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphItem.java
@@ -0,0 +1,23 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>State Graph Item</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateGraphItem()
+ * @model
+ * @generated
+ */
+public interface StateGraphItem extends EObject
+{
+} // StateGraphItem
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphNode.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphNode.java
new file mode 100644
index 000000000..ff1f0a8fb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateGraphNode.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>State Graph Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateGraphNode()
+ * @model
+ * @generated
+ */
+public interface StateGraphNode extends StateGraphItem
+{
+} // StateGraphNode
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateTerminal.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateTerminal.java
new file mode 100644
index 000000000..7503704a1
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StateTerminal.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>State Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.StateTerminal#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateTerminal()
+ * @model
+ * @generated
+ */
+public interface StateTerminal extends TransitionTerminal
+{
+ /**
+ * Returns the value of the '<em><b>State</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>State</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>State</em>' reference.
+ * @see #setState(BaseState)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStateTerminal_State()
+ * @model
+ * @generated
+ */
+ BaseState getState();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.StateTerminal#getState <em>State</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>State</em>' reference.
+ * @see #getState()
+ * @generated
+ */
+ void setState(BaseState value);
+
+} // StateTerminal
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StructureClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StructureClass.java
new file mode 100644
index 000000000..f8098ccfb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/StructureClass.java
@@ -0,0 +1,62 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Structure Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.StructureClass#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.StructureClass#getConnections <em>Connections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStructureClass()
+ * @model
+ * @generated
+ */
+public interface StructureClass extends RoomClass
+{
+ /**
+ * Returns the value of the '<em><b>Bindings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Binding}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bindings</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bindings</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStructureClass_Bindings()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Binding> getBindings();
+
+ /**
+ * Returns the value of the '<em><b>Connections</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.LayerConnection}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connections</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connections</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getStructureClass_Connections()
+ * @model containment="true"
+ * @generated
+ */
+ EList<LayerConnection> getConnections();
+
+} // StructureClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubStateTrPointTerminal.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubStateTrPointTerminal.java
new file mode 100644
index 000000000..e99eed6f4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubStateTrPointTerminal.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sub State Tr Point Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal#getTrPoint <em>Tr Point</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubStateTrPointTerminal()
+ * @model
+ * @generated
+ */
+public interface SubStateTrPointTerminal extends TransitionTerminal
+{
+ /**
+ * Returns the value of the '<em><b>Tr Point</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Tr Point</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Tr Point</em>' reference.
+ * @see #setTrPoint(TrPoint)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubStateTrPointTerminal_TrPoint()
+ * @model
+ * @generated
+ */
+ TrPoint getTrPoint();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal#getTrPoint <em>Tr Point</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Tr Point</em>' reference.
+ * @see #getTrPoint()
+ * @generated
+ */
+ void setTrPoint(TrPoint value);
+
+ /**
+ * Returns the value of the '<em><b>State</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>State</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>State</em>' reference.
+ * @see #setState(BaseState)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubStateTrPointTerminal_State()
+ * @model
+ * @generated
+ */
+ BaseState getState();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal#getState <em>State</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>State</em>' reference.
+ * @see #getState()
+ * @generated
+ */
+ void setState(BaseState value);
+
+} // SubStateTrPointTerminal
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemClass.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemClass.java
new file mode 100644
index 000000000..87388f1f0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemClass.java
@@ -0,0 +1,62 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sub System Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.SubSystemClass#getRelayPorts <em>Relay Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.SubSystemClass#getThreads <em>Threads</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubSystemClass()
+ * @model
+ * @generated
+ */
+public interface SubSystemClass extends ActorContainerClass
+{
+ /**
+ * Returns the value of the '<em><b>Relay Ports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Port}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Relay Ports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Relay Ports</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubSystemClass_RelayPorts()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Port> getRelayPorts();
+
+ /**
+ * Returns the value of the '<em><b>Threads</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.LogicalThread}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Threads</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Threads</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubSystemClass_Threads()
+ * @model containment="true"
+ * @generated
+ */
+ EList<LogicalThread> getThreads();
+
+} // SubSystemClass
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemRef.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemRef.java
new file mode 100644
index 000000000..0ef6d9f2f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/SubSystemRef.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sub System Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.SubSystemRef#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubSystemRef()
+ * @model
+ * @generated
+ */
+public interface SubSystemRef extends ActorContainerRef
+{
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(SubSystemClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getSubSystemRef_Type()
+ * @model
+ * @generated
+ */
+ SubSystemClass getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.SubSystemRef#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(SubSystemClass value);
+
+} // SubSystemRef
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPoint.java
new file mode 100644
index 000000000..28c28081f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPoint.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tr Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.TrPoint#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTrPoint()
+ * @model
+ * @generated
+ */
+public interface TrPoint extends StateGraphNode
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTrPoint_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.TrPoint#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // TrPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPointTerminal.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPointTerminal.java
new file mode 100644
index 000000000..d9f642590
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TrPointTerminal.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tr Point Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.TrPointTerminal#getTrPoint <em>Tr Point</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTrPointTerminal()
+ * @model
+ * @generated
+ */
+public interface TrPointTerminal extends TransitionTerminal
+{
+ /**
+ * Returns the value of the '<em><b>Tr Point</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Tr Point</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Tr Point</em>' reference.
+ * @see #setTrPoint(TrPoint)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTrPointTerminal_TrPoint()
+ * @model
+ * @generated
+ */
+ TrPoint getTrPoint();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.TrPointTerminal#getTrPoint <em>Tr Point</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Tr Point</em>' reference.
+ * @see #getTrPoint()
+ * @generated
+ */
+ void setTrPoint(TrPoint value);
+
+} // TrPointTerminal
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Transition.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Transition.java
new file mode 100644
index 000000000..918d366d0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Transition.java
@@ -0,0 +1,108 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Transition#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Transition#getTo <em>To</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Transition#getAction <em>Action</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTransition()
+ * @model
+ * @generated
+ */
+public interface Transition extends StateGraphItem
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTransition_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Transition#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>To</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>To</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>To</em>' containment reference.
+ * @see #setTo(TransitionTerminal)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTransition_To()
+ * @model containment="true"
+ * @generated
+ */
+ TransitionTerminal getTo();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Transition#getTo <em>To</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>To</em>' containment reference.
+ * @see #getTo()
+ * @generated
+ */
+ void setTo(TransitionTerminal value);
+
+ /**
+ * Returns the value of the '<em><b>Action</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Action</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Action</em>' containment reference.
+ * @see #setAction(DetailCode)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTransition_Action()
+ * @model containment="true"
+ * @generated
+ */
+ DetailCode getAction();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Transition#getAction <em>Action</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Action</em>' containment reference.
+ * @see #getAction()
+ * @generated
+ */
+ void setAction(DetailCode value);
+
+} // Transition
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionPoint.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionPoint.java
new file mode 100644
index 000000000..80505f73a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionPoint.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transition Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.TransitionPoint#isHandler <em>Handler</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTransitionPoint()
+ * @model
+ * @generated
+ */
+public interface TransitionPoint extends TrPoint
+{
+ /**
+ * Returns the value of the '<em><b>Handler</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Handler</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Handler</em>' attribute.
+ * @see #setHandler(boolean)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTransitionPoint_Handler()
+ * @model
+ * @generated
+ */
+ boolean isHandler();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.TransitionPoint#isHandler <em>Handler</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Handler</em>' attribute.
+ * @see #isHandler()
+ * @generated
+ */
+ void setHandler(boolean value);
+
+} // TransitionPoint
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionTerminal.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionTerminal.java
new file mode 100644
index 000000000..372bee014
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TransitionTerminal.java
@@ -0,0 +1,23 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transition Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTransitionTerminal()
+ * @model
+ * @generated
+ */
+public interface TransitionTerminal extends EObject
+{
+} // TransitionTerminal
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Trigger.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Trigger.java
new file mode 100644
index 000000000..3c2fbfc01
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Trigger.java
@@ -0,0 +1,74 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Trigger#getMsgFromIfPairs <em>Msg From If Pairs</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Trigger#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTrigger()
+ * @model
+ * @generated
+ */
+public interface Trigger extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Msg From If Pairs</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.MessageFromIf}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Msg From If Pairs</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Msg From If Pairs</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTrigger_MsgFromIfPairs()
+ * @model containment="true"
+ * @generated
+ */
+ EList<MessageFromIf> getMsgFromIfPairs();
+
+ /**
+ * Returns the value of the '<em><b>Guard</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Guard</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Guard</em>' containment reference.
+ * @see #setGuard(Guard)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTrigger_Guard()
+ * @model containment="true"
+ * @generated
+ */
+ Guard getGuard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Trigger#getGuard <em>Guard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Guard</em>' containment reference.
+ * @see #getGuard()
+ * @generated
+ */
+ void setGuard(Guard value);
+
+} // Trigger
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TriggeredTransition.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TriggeredTransition.java
new file mode 100644
index 000000000..08b97e326
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TriggeredTransition.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Triggered Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.TriggeredTransition#getTriggers <em>Triggers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTriggeredTransition()
+ * @model
+ * @generated
+ */
+public interface TriggeredTransition extends NonInitialTransition
+{
+ /**
+ * Returns the value of the '<em><b>Triggers</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.Trigger}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Triggers</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Triggers</em>' containment reference list.
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTriggeredTransition_Triggers()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Trigger> getTriggers();
+
+} // TriggeredTransition
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Type.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Type.java
new file mode 100644
index 000000000..a6ed20c24
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/Type.java
@@ -0,0 +1,85 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.Type#getPrim <em>Prim</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.Type#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getType()
+ * @model
+ * @generated
+ */
+public interface Type extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Prim</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.etrice.core.room.PrimitiveType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Prim</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Prim</em>' attribute.
+ * @see org.eclipse.etrice.core.room.PrimitiveType
+ * @see #setPrim(PrimitiveType)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getType_Prim()
+ * @model
+ * @generated
+ */
+ PrimitiveType getPrim();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Type#getPrim <em>Prim</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Prim</em>' attribute.
+ * @see org.eclipse.etrice.core.room.PrimitiveType
+ * @see #getPrim()
+ * @generated
+ */
+ void setPrim(PrimitiveType value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(DataClass)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getType_Type()
+ * @model
+ * @generated
+ */
+ DataClass getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.Type#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(DataClass value);
+
+} // Type
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TypedID.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TypedID.java
new file mode 100644
index 000000000..ad445a221
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/TypedID.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Typed ID</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.TypedID#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.TypedID#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTypedID()
+ * @model
+ * @generated
+ */
+public interface TypedID extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTypedID_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.TypedID#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' containment reference.
+ * @see #setType(Type)
+ * @see org.eclipse.etrice.core.room.RoomPackage#getTypedID_Type()
+ * @model containment="true"
+ * @generated
+ */
+ Type getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.room.TypedID#getType <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' containment reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Type value);
+
+} // TypedID
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorClassImpl.java
new file mode 100644
index 000000000..a7749503c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorClassImpl.java
@@ -0,0 +1,756 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.StateGraph;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Actor Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getBase <em>Base</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getIfPorts <em>If Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getUserCode1 <em>User Code1</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getUserCode2 <em>User Code2</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getIntPorts <em>Int Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getExtPorts <em>Ext Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getServiceImplementations <em>Service Implementations</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getStrSAPs <em>Str SA Ps</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getAttributes <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getOperations <em>Operations</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorClassImpl#getStateMachine <em>State Machine</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ActorClassImpl extends ActorContainerClassImpl implements ActorClass
+{
+ /**
+ * The default value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ABSTRACT_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected boolean abstract_ = ABSTRACT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase() <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase()
+ * @generated
+ * @ordered
+ */
+ protected ActorClass base;
+
+ /**
+ * The cached value of the '{@link #getIfPorts() <em>If Ports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIfPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<Port> ifPorts;
+
+ /**
+ * The cached value of the '{@link #getUserCode1() <em>User Code1</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserCode1()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode userCode1;
+
+ /**
+ * The cached value of the '{@link #getUserCode2() <em>User Code2</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserCode2()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode userCode2;
+
+ /**
+ * The cached value of the '{@link #getIntPorts() <em>Int Ports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIntPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<Port> intPorts;
+
+ /**
+ * The cached value of the '{@link #getExtPorts() <em>Ext Ports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExtPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<ExternalPort> extPorts;
+
+ /**
+ * The cached value of the '{@link #getServiceImplementations() <em>Service Implementations</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getServiceImplementations()
+ * @generated
+ * @ordered
+ */
+ protected EList<ServiceImplementation> serviceImplementations;
+
+ /**
+ * The cached value of the '{@link #getStrSAPs() <em>Str SA Ps</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStrSAPs()
+ * @generated
+ * @ordered
+ */
+ protected EList<SAPRef> strSAPs;
+
+ /**
+ * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributes()
+ * @generated
+ * @ordered
+ */
+ protected EList<Attribute> attributes;
+
+ /**
+ * The cached value of the '{@link #getOperations() <em>Operations</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperations()
+ * @generated
+ * @ordered
+ */
+ protected EList<Operation> operations;
+
+ /**
+ * The cached value of the '{@link #getStateMachine() <em>State Machine</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStateMachine()
+ * @generated
+ * @ordered
+ */
+ protected StateGraph stateMachine;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ActorClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ACTOR_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isAbstract()
+ {
+ return abstract_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAbstract(boolean newAbstract)
+ {
+ boolean oldAbstract = abstract_;
+ abstract_ = newAbstract;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__ABSTRACT, oldAbstract, abstract_));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass getBase()
+ {
+ if (base != null && base.eIsProxy())
+ {
+ InternalEObject oldBase = (InternalEObject)base;
+ base = (ActorClass)eResolveProxy(oldBase);
+ if (base != oldBase)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.ACTOR_CLASS__BASE, oldBase, base));
+ }
+ }
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass basicGetBase()
+ {
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase(ActorClass newBase)
+ {
+ ActorClass oldBase = base;
+ base = newBase;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__BASE, oldBase, base));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Port> getIfPorts()
+ {
+ if (ifPorts == null)
+ {
+ ifPorts = new EObjectContainmentEList<Port>(Port.class, this, RoomPackage.ACTOR_CLASS__IF_PORTS);
+ }
+ return ifPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getUserCode1()
+ {
+ return userCode1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetUserCode1(DetailCode newUserCode1, NotificationChain msgs)
+ {
+ DetailCode oldUserCode1 = userCode1;
+ userCode1 = newUserCode1;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__USER_CODE1, oldUserCode1, newUserCode1);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUserCode1(DetailCode newUserCode1)
+ {
+ if (newUserCode1 != userCode1)
+ {
+ NotificationChain msgs = null;
+ if (userCode1 != null)
+ msgs = ((InternalEObject)userCode1).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ACTOR_CLASS__USER_CODE1, null, msgs);
+ if (newUserCode1 != null)
+ msgs = ((InternalEObject)newUserCode1).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ACTOR_CLASS__USER_CODE1, null, msgs);
+ msgs = basicSetUserCode1(newUserCode1, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__USER_CODE1, newUserCode1, newUserCode1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getUserCode2()
+ {
+ return userCode2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetUserCode2(DetailCode newUserCode2, NotificationChain msgs)
+ {
+ DetailCode oldUserCode2 = userCode2;
+ userCode2 = newUserCode2;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__USER_CODE2, oldUserCode2, newUserCode2);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUserCode2(DetailCode newUserCode2)
+ {
+ if (newUserCode2 != userCode2)
+ {
+ NotificationChain msgs = null;
+ if (userCode2 != null)
+ msgs = ((InternalEObject)userCode2).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ACTOR_CLASS__USER_CODE2, null, msgs);
+ if (newUserCode2 != null)
+ msgs = ((InternalEObject)newUserCode2).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ACTOR_CLASS__USER_CODE2, null, msgs);
+ msgs = basicSetUserCode2(newUserCode2, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__USER_CODE2, newUserCode2, newUserCode2));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Port> getIntPorts()
+ {
+ if (intPorts == null)
+ {
+ intPorts = new EObjectContainmentEList<Port>(Port.class, this, RoomPackage.ACTOR_CLASS__INT_PORTS);
+ }
+ return intPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ExternalPort> getExtPorts()
+ {
+ if (extPorts == null)
+ {
+ extPorts = new EObjectContainmentEList<ExternalPort>(ExternalPort.class, this, RoomPackage.ACTOR_CLASS__EXT_PORTS);
+ }
+ return extPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ServiceImplementation> getServiceImplementations()
+ {
+ if (serviceImplementations == null)
+ {
+ serviceImplementations = new EObjectContainmentEList<ServiceImplementation>(ServiceImplementation.class, this, RoomPackage.ACTOR_CLASS__SERVICE_IMPLEMENTATIONS);
+ }
+ return serviceImplementations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SAPRef> getStrSAPs()
+ {
+ if (strSAPs == null)
+ {
+ strSAPs = new EObjectContainmentEList<SAPRef>(SAPRef.class, this, RoomPackage.ACTOR_CLASS__STR_SA_PS);
+ }
+ return strSAPs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Attribute> getAttributes()
+ {
+ if (attributes == null)
+ {
+ attributes = new EObjectContainmentEList<Attribute>(Attribute.class, this, RoomPackage.ACTOR_CLASS__ATTRIBUTES);
+ }
+ return attributes;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Operation> getOperations()
+ {
+ if (operations == null)
+ {
+ operations = new EObjectContainmentEList<Operation>(Operation.class, this, RoomPackage.ACTOR_CLASS__OPERATIONS);
+ }
+ return operations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StateGraph getStateMachine()
+ {
+ return stateMachine;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetStateMachine(StateGraph newStateMachine, NotificationChain msgs)
+ {
+ StateGraph oldStateMachine = stateMachine;
+ stateMachine = newStateMachine;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__STATE_MACHINE, oldStateMachine, newStateMachine);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStateMachine(StateGraph newStateMachine)
+ {
+ if (newStateMachine != stateMachine)
+ {
+ NotificationChain msgs = null;
+ if (stateMachine != null)
+ msgs = ((InternalEObject)stateMachine).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ACTOR_CLASS__STATE_MACHINE, null, msgs);
+ if (newStateMachine != null)
+ msgs = ((InternalEObject)newStateMachine).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ACTOR_CLASS__STATE_MACHINE, null, msgs);
+ msgs = basicSetStateMachine(newStateMachine, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CLASS__STATE_MACHINE, newStateMachine, newStateMachine));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CLASS__IF_PORTS:
+ return ((InternalEList<?>)getIfPorts()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CLASS__USER_CODE1:
+ return basicSetUserCode1(null, msgs);
+ case RoomPackage.ACTOR_CLASS__USER_CODE2:
+ return basicSetUserCode2(null, msgs);
+ case RoomPackage.ACTOR_CLASS__INT_PORTS:
+ return ((InternalEList<?>)getIntPorts()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CLASS__EXT_PORTS:
+ return ((InternalEList<?>)getExtPorts()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CLASS__SERVICE_IMPLEMENTATIONS:
+ return ((InternalEList<?>)getServiceImplementations()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CLASS__STR_SA_PS:
+ return ((InternalEList<?>)getStrSAPs()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CLASS__ATTRIBUTES:
+ return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CLASS__OPERATIONS:
+ return ((InternalEList<?>)getOperations()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CLASS__STATE_MACHINE:
+ return basicSetStateMachine(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CLASS__ABSTRACT:
+ return isAbstract();
+ case RoomPackage.ACTOR_CLASS__BASE:
+ if (resolve) return getBase();
+ return basicGetBase();
+ case RoomPackage.ACTOR_CLASS__IF_PORTS:
+ return getIfPorts();
+ case RoomPackage.ACTOR_CLASS__USER_CODE1:
+ return getUserCode1();
+ case RoomPackage.ACTOR_CLASS__USER_CODE2:
+ return getUserCode2();
+ case RoomPackage.ACTOR_CLASS__INT_PORTS:
+ return getIntPorts();
+ case RoomPackage.ACTOR_CLASS__EXT_PORTS:
+ return getExtPorts();
+ case RoomPackage.ACTOR_CLASS__SERVICE_IMPLEMENTATIONS:
+ return getServiceImplementations();
+ case RoomPackage.ACTOR_CLASS__STR_SA_PS:
+ return getStrSAPs();
+ case RoomPackage.ACTOR_CLASS__ATTRIBUTES:
+ return getAttributes();
+ case RoomPackage.ACTOR_CLASS__OPERATIONS:
+ return getOperations();
+ case RoomPackage.ACTOR_CLASS__STATE_MACHINE:
+ return getStateMachine();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CLASS__ABSTRACT:
+ setAbstract((Boolean)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__BASE:
+ setBase((ActorClass)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__IF_PORTS:
+ getIfPorts().clear();
+ getIfPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__USER_CODE1:
+ setUserCode1((DetailCode)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__USER_CODE2:
+ setUserCode2((DetailCode)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__INT_PORTS:
+ getIntPorts().clear();
+ getIntPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__EXT_PORTS:
+ getExtPorts().clear();
+ getExtPorts().addAll((Collection<? extends ExternalPort>)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__SERVICE_IMPLEMENTATIONS:
+ getServiceImplementations().clear();
+ getServiceImplementations().addAll((Collection<? extends ServiceImplementation>)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__STR_SA_PS:
+ getStrSAPs().clear();
+ getStrSAPs().addAll((Collection<? extends SAPRef>)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__ATTRIBUTES:
+ getAttributes().clear();
+ getAttributes().addAll((Collection<? extends Attribute>)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__OPERATIONS:
+ getOperations().clear();
+ getOperations().addAll((Collection<? extends Operation>)newValue);
+ return;
+ case RoomPackage.ACTOR_CLASS__STATE_MACHINE:
+ setStateMachine((StateGraph)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CLASS__ABSTRACT:
+ setAbstract(ABSTRACT_EDEFAULT);
+ return;
+ case RoomPackage.ACTOR_CLASS__BASE:
+ setBase((ActorClass)null);
+ return;
+ case RoomPackage.ACTOR_CLASS__IF_PORTS:
+ getIfPorts().clear();
+ return;
+ case RoomPackage.ACTOR_CLASS__USER_CODE1:
+ setUserCode1((DetailCode)null);
+ return;
+ case RoomPackage.ACTOR_CLASS__USER_CODE2:
+ setUserCode2((DetailCode)null);
+ return;
+ case RoomPackage.ACTOR_CLASS__INT_PORTS:
+ getIntPorts().clear();
+ return;
+ case RoomPackage.ACTOR_CLASS__EXT_PORTS:
+ getExtPorts().clear();
+ return;
+ case RoomPackage.ACTOR_CLASS__SERVICE_IMPLEMENTATIONS:
+ getServiceImplementations().clear();
+ return;
+ case RoomPackage.ACTOR_CLASS__STR_SA_PS:
+ getStrSAPs().clear();
+ return;
+ case RoomPackage.ACTOR_CLASS__ATTRIBUTES:
+ getAttributes().clear();
+ return;
+ case RoomPackage.ACTOR_CLASS__OPERATIONS:
+ getOperations().clear();
+ return;
+ case RoomPackage.ACTOR_CLASS__STATE_MACHINE:
+ setStateMachine((StateGraph)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CLASS__ABSTRACT:
+ return abstract_ != ABSTRACT_EDEFAULT;
+ case RoomPackage.ACTOR_CLASS__BASE:
+ return base != null;
+ case RoomPackage.ACTOR_CLASS__IF_PORTS:
+ return ifPorts != null && !ifPorts.isEmpty();
+ case RoomPackage.ACTOR_CLASS__USER_CODE1:
+ return userCode1 != null;
+ case RoomPackage.ACTOR_CLASS__USER_CODE2:
+ return userCode2 != null;
+ case RoomPackage.ACTOR_CLASS__INT_PORTS:
+ return intPorts != null && !intPorts.isEmpty();
+ case RoomPackage.ACTOR_CLASS__EXT_PORTS:
+ return extPorts != null && !extPorts.isEmpty();
+ case RoomPackage.ACTOR_CLASS__SERVICE_IMPLEMENTATIONS:
+ return serviceImplementations != null && !serviceImplementations.isEmpty();
+ case RoomPackage.ACTOR_CLASS__STR_SA_PS:
+ return strSAPs != null && !strSAPs.isEmpty();
+ case RoomPackage.ACTOR_CLASS__ATTRIBUTES:
+ return attributes != null && !attributes.isEmpty();
+ case RoomPackage.ACTOR_CLASS__OPERATIONS:
+ return operations != null && !operations.isEmpty();
+ case RoomPackage.ACTOR_CLASS__STATE_MACHINE:
+ return stateMachine != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (abstract: ");
+ result.append(abstract_);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ActorClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerClassImpl.java
new file mode 100644
index 000000000..02a3e9fe0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerClassImpl.java
@@ -0,0 +1,208 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SPPRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Actor Container Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorContainerClassImpl#getIfSPPs <em>If SP Ps</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorContainerClassImpl#getActorRefs <em>Actor Refs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ActorContainerClassImpl extends StructureClassImpl implements ActorContainerClass
+{
+ /**
+ * The cached value of the '{@link #getIfSPPs() <em>If SP Ps</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIfSPPs()
+ * @generated
+ * @ordered
+ */
+ protected EList<SPPRef> ifSPPs;
+
+ /**
+ * The cached value of the '{@link #getActorRefs() <em>Actor Refs</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActorRefs()
+ * @generated
+ * @ordered
+ */
+ protected EList<ActorRef> actorRefs;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ActorContainerClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ACTOR_CONTAINER_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SPPRef> getIfSPPs()
+ {
+ if (ifSPPs == null)
+ {
+ ifSPPs = new EObjectContainmentEList<SPPRef>(SPPRef.class, this, RoomPackage.ACTOR_CONTAINER_CLASS__IF_SP_PS);
+ }
+ return ifSPPs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ActorRef> getActorRefs()
+ {
+ if (actorRefs == null)
+ {
+ actorRefs = new EObjectContainmentEList<ActorRef>(ActorRef.class, this, RoomPackage.ACTOR_CONTAINER_CLASS__ACTOR_REFS);
+ }
+ return actorRefs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_CLASS__IF_SP_PS:
+ return ((InternalEList<?>)getIfSPPs()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ACTOR_CONTAINER_CLASS__ACTOR_REFS:
+ return ((InternalEList<?>)getActorRefs()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_CLASS__IF_SP_PS:
+ return getIfSPPs();
+ case RoomPackage.ACTOR_CONTAINER_CLASS__ACTOR_REFS:
+ return getActorRefs();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_CLASS__IF_SP_PS:
+ getIfSPPs().clear();
+ getIfSPPs().addAll((Collection<? extends SPPRef>)newValue);
+ return;
+ case RoomPackage.ACTOR_CONTAINER_CLASS__ACTOR_REFS:
+ getActorRefs().clear();
+ getActorRefs().addAll((Collection<? extends ActorRef>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_CLASS__IF_SP_PS:
+ getIfSPPs().clear();
+ return;
+ case RoomPackage.ACTOR_CONTAINER_CLASS__ACTOR_REFS:
+ getActorRefs().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_CLASS__IF_SP_PS:
+ return ifSPPs != null && !ifSPPs.isEmpty();
+ case RoomPackage.ACTOR_CONTAINER_CLASS__ACTOR_REFS:
+ return actorRefs != null && !actorRefs.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ActorContainerClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerRefImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerRefImpl.java
new file mode 100644
index 000000000..80812a2a7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorContainerRefImpl.java
@@ -0,0 +1,181 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Actor Container Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorContainerRefImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ActorContainerRefImpl extends MinimalEObjectImpl.Container implements ActorContainerRef
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ActorContainerRefImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ACTOR_CONTAINER_REF;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_CONTAINER_REF__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_REF__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_REF__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_REF__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_CONTAINER_REF__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ActorContainerRefImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorInstancePathImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorInstancePathImpl.java
new file mode 100644
index 000000000..7b6a1b28c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorInstancePathImpl.java
@@ -0,0 +1,167 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.etrice.core.room.ActorInstancePath;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Actor Instance Path</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorInstancePathImpl#getSegments <em>Segments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ActorInstancePathImpl extends MinimalEObjectImpl.Container implements ActorInstancePath
+{
+ /**
+ * The cached value of the '{@link #getSegments() <em>Segments</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSegments()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> segments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ActorInstancePathImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ACTOR_INSTANCE_PATH;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getSegments()
+ {
+ if (segments == null)
+ {
+ segments = new EDataTypeEList<String>(String.class, this, RoomPackage.ACTOR_INSTANCE_PATH__SEGMENTS);
+ }
+ return segments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_INSTANCE_PATH__SEGMENTS:
+ return getSegments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_INSTANCE_PATH__SEGMENTS:
+ getSegments().clear();
+ getSegments().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_INSTANCE_PATH__SEGMENTS:
+ getSegments().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_INSTANCE_PATH__SEGMENTS:
+ return segments != null && !segments.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (segments: ");
+ result.append(segments);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ActorInstancePathImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorRefImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorRefImpl.java
new file mode 100644
index 000000000..8db9cb432
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ActorRefImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Actor Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ActorRefImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ActorRefImpl extends ActorContainerRefImpl implements ActorRef
+{
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected ActorClass type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ActorRefImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ACTOR_REF;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass getType()
+ {
+ if (type != null && type.eIsProxy())
+ {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (ActorClass)eResolveProxy(oldType);
+ if (type != oldType)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.ACTOR_REF__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass basicGetType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(ActorClass newType)
+ {
+ ActorClass oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ACTOR_REF__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_REF__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_REF__TYPE:
+ setType((ActorClass)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_REF__TYPE:
+ setType((ActorClass)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ACTOR_REF__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ActorRefImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/AttributeImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/AttributeImpl.java
new file mode 100644
index 000000000..edd388be2
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/AttributeImpl.java
@@ -0,0 +1,325 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.AttributeImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.AttributeImpl#getSize <em>Size</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.AttributeImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AttributeImpl extends MinimalEObjectImpl.Container implements Attribute
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSize() <em>Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int SIZE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getSize() <em>Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSize()
+ * @generated
+ * @ordered
+ */
+ protected int size = SIZE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected Type type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AttributeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ATTRIBUTE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ATTRIBUTE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getSize()
+ {
+ return size;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSize(int newSize)
+ {
+ int oldSize = size;
+ size = newSize;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ATTRIBUTE__SIZE, oldSize, size));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetType(Type newType, NotificationChain msgs)
+ {
+ Type oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.ATTRIBUTE__TYPE, oldType, newType);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(Type newType)
+ {
+ if (newType != type)
+ {
+ NotificationChain msgs = null;
+ if (type != null)
+ msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ATTRIBUTE__TYPE, null, msgs);
+ if (newType != null)
+ msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.ATTRIBUTE__TYPE, null, msgs);
+ msgs = basicSetType(newType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ATTRIBUTE__TYPE, newType, newType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ATTRIBUTE__TYPE:
+ return basicSetType(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ATTRIBUTE__NAME:
+ return getName();
+ case RoomPackage.ATTRIBUTE__SIZE:
+ return getSize();
+ case RoomPackage.ATTRIBUTE__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ATTRIBUTE__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.ATTRIBUTE__SIZE:
+ setSize((Integer)newValue);
+ return;
+ case RoomPackage.ATTRIBUTE__TYPE:
+ setType((Type)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ATTRIBUTE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.ATTRIBUTE__SIZE:
+ setSize(SIZE_EDEFAULT);
+ return;
+ case RoomPackage.ATTRIBUTE__TYPE:
+ setType((Type)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ATTRIBUTE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.ATTRIBUTE__SIZE:
+ return size != SIZE_EDEFAULT;
+ case RoomPackage.ATTRIBUTE__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", size: ");
+ result.append(size);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AttributeImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BaseStateImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BaseStateImpl.java
new file mode 100644
index 000000000..ebaeb88d2
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BaseStateImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Base State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.BaseStateImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BaseStateImpl extends StateImpl implements BaseState
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BaseStateImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.BASE_STATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.BASE_STATE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BASE_STATE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BASE_STATE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BASE_STATE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BASE_STATE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //BaseStateImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingEndPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingEndPointImpl.java
new file mode 100644
index 000000000..6c0f01cdb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingEndPointImpl.java
@@ -0,0 +1,243 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Binding End Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.BindingEndPointImpl#getActorRef <em>Actor Ref</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.BindingEndPointImpl#getPort <em>Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BindingEndPointImpl extends MinimalEObjectImpl.Container implements BindingEndPoint
+{
+ /**
+ * The cached value of the '{@link #getActorRef() <em>Actor Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActorRef()
+ * @generated
+ * @ordered
+ */
+ protected ActorContainerRef actorRef;
+
+ /**
+ * The cached value of the '{@link #getPort() <em>Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPort()
+ * @generated
+ * @ordered
+ */
+ protected Port port;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingEndPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.BINDING_END_POINT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerRef getActorRef()
+ {
+ if (actorRef != null && actorRef.eIsProxy())
+ {
+ InternalEObject oldActorRef = (InternalEObject)actorRef;
+ actorRef = (ActorContainerRef)eResolveProxy(oldActorRef);
+ if (actorRef != oldActorRef)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.BINDING_END_POINT__ACTOR_REF, oldActorRef, actorRef));
+ }
+ }
+ return actorRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerRef basicGetActorRef()
+ {
+ return actorRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setActorRef(ActorContainerRef newActorRef)
+ {
+ ActorContainerRef oldActorRef = actorRef;
+ actorRef = newActorRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.BINDING_END_POINT__ACTOR_REF, oldActorRef, actorRef));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port getPort()
+ {
+ if (port != null && port.eIsProxy())
+ {
+ InternalEObject oldPort = (InternalEObject)port;
+ port = (Port)eResolveProxy(oldPort);
+ if (port != oldPort)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.BINDING_END_POINT__PORT, oldPort, port));
+ }
+ }
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port basicGetPort()
+ {
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPort(Port newPort)
+ {
+ Port oldPort = port;
+ port = newPort;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.BINDING_END_POINT__PORT, oldPort, port));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING_END_POINT__ACTOR_REF:
+ if (resolve) return getActorRef();
+ return basicGetActorRef();
+ case RoomPackage.BINDING_END_POINT__PORT:
+ if (resolve) return getPort();
+ return basicGetPort();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING_END_POINT__ACTOR_REF:
+ setActorRef((ActorContainerRef)newValue);
+ return;
+ case RoomPackage.BINDING_END_POINT__PORT:
+ setPort((Port)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING_END_POINT__ACTOR_REF:
+ setActorRef((ActorContainerRef)null);
+ return;
+ case RoomPackage.BINDING_END_POINT__PORT:
+ setPort((Port)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING_END_POINT__ACTOR_REF:
+ return actorRef != null;
+ case RoomPackage.BINDING_END_POINT__PORT:
+ return port != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //BindingEndPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingImpl.java
new file mode 100644
index 000000000..970a933e9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/BindingImpl.java
@@ -0,0 +1,269 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Binding</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.BindingImpl#getEndpoint1 <em>Endpoint1</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.BindingImpl#getEndpoint2 <em>Endpoint2</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BindingImpl extends MinimalEObjectImpl.Container implements Binding
+{
+ /**
+ * The cached value of the '{@link #getEndpoint1() <em>Endpoint1</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEndpoint1()
+ * @generated
+ * @ordered
+ */
+ protected BindingEndPoint endpoint1;
+
+ /**
+ * The cached value of the '{@link #getEndpoint2() <em>Endpoint2</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEndpoint2()
+ * @generated
+ * @ordered
+ */
+ protected BindingEndPoint endpoint2;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.BINDING;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingEndPoint getEndpoint1()
+ {
+ return endpoint1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEndpoint1(BindingEndPoint newEndpoint1, NotificationChain msgs)
+ {
+ BindingEndPoint oldEndpoint1 = endpoint1;
+ endpoint1 = newEndpoint1;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.BINDING__ENDPOINT1, oldEndpoint1, newEndpoint1);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEndpoint1(BindingEndPoint newEndpoint1)
+ {
+ if (newEndpoint1 != endpoint1)
+ {
+ NotificationChain msgs = null;
+ if (endpoint1 != null)
+ msgs = ((InternalEObject)endpoint1).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.BINDING__ENDPOINT1, null, msgs);
+ if (newEndpoint1 != null)
+ msgs = ((InternalEObject)newEndpoint1).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.BINDING__ENDPOINT1, null, msgs);
+ msgs = basicSetEndpoint1(newEndpoint1, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.BINDING__ENDPOINT1, newEndpoint1, newEndpoint1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingEndPoint getEndpoint2()
+ {
+ return endpoint2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEndpoint2(BindingEndPoint newEndpoint2, NotificationChain msgs)
+ {
+ BindingEndPoint oldEndpoint2 = endpoint2;
+ endpoint2 = newEndpoint2;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.BINDING__ENDPOINT2, oldEndpoint2, newEndpoint2);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEndpoint2(BindingEndPoint newEndpoint2)
+ {
+ if (newEndpoint2 != endpoint2)
+ {
+ NotificationChain msgs = null;
+ if (endpoint2 != null)
+ msgs = ((InternalEObject)endpoint2).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.BINDING__ENDPOINT2, null, msgs);
+ if (newEndpoint2 != null)
+ msgs = ((InternalEObject)newEndpoint2).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.BINDING__ENDPOINT2, null, msgs);
+ msgs = basicSetEndpoint2(newEndpoint2, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.BINDING__ENDPOINT2, newEndpoint2, newEndpoint2));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING__ENDPOINT1:
+ return basicSetEndpoint1(null, msgs);
+ case RoomPackage.BINDING__ENDPOINT2:
+ return basicSetEndpoint2(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING__ENDPOINT1:
+ return getEndpoint1();
+ case RoomPackage.BINDING__ENDPOINT2:
+ return getEndpoint2();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING__ENDPOINT1:
+ setEndpoint1((BindingEndPoint)newValue);
+ return;
+ case RoomPackage.BINDING__ENDPOINT2:
+ setEndpoint2((BindingEndPoint)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING__ENDPOINT1:
+ setEndpoint1((BindingEndPoint)null);
+ return;
+ case RoomPackage.BINDING__ENDPOINT2:
+ setEndpoint2((BindingEndPoint)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.BINDING__ENDPOINT1:
+ return endpoint1 != null;
+ case RoomPackage.BINDING__ENDPOINT2:
+ return endpoint2 != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //BindingImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/CPBranchTransitionImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/CPBranchTransitionImpl.java
new file mode 100644
index 000000000..a90b956e4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/CPBranchTransitionImpl.java
@@ -0,0 +1,197 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.CPBranchTransition;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>CP Branch Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.CPBranchTransitionImpl#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CPBranchTransitionImpl extends NonInitialTransitionImpl implements CPBranchTransition
+{
+ /**
+ * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCondition()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode condition;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CPBranchTransitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.CP_BRANCH_TRANSITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getCondition()
+ {
+ return condition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetCondition(DetailCode newCondition, NotificationChain msgs)
+ {
+ DetailCode oldCondition = condition;
+ condition = newCondition;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.CP_BRANCH_TRANSITION__CONDITION, oldCondition, newCondition);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCondition(DetailCode newCondition)
+ {
+ if (newCondition != condition)
+ {
+ NotificationChain msgs = null;
+ if (condition != null)
+ msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.CP_BRANCH_TRANSITION__CONDITION, null, msgs);
+ if (newCondition != null)
+ msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.CP_BRANCH_TRANSITION__CONDITION, null, msgs);
+ msgs = basicSetCondition(newCondition, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.CP_BRANCH_TRANSITION__CONDITION, newCondition, newCondition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CP_BRANCH_TRANSITION__CONDITION:
+ return basicSetCondition(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CP_BRANCH_TRANSITION__CONDITION:
+ return getCondition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CP_BRANCH_TRANSITION__CONDITION:
+ setCondition((DetailCode)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CP_BRANCH_TRANSITION__CONDITION:
+ setCondition((DetailCode)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CP_BRANCH_TRANSITION__CONDITION:
+ return condition != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CPBranchTransitionImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicePointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicePointImpl.java
new file mode 100644
index 000000000..9f817a8ff
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicePointImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Choice Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ChoicePointImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChoicePointImpl extends StateGraphNodeImpl implements ChoicePoint
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChoicePointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.CHOICE_POINT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.CHOICE_POINT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICE_POINT__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICE_POINT__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICE_POINT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICE_POINT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ChoicePointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicepointTerminalImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicepointTerminalImpl.java
new file mode 100644
index 000000000..fa5a19ef1
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ChoicepointTerminalImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.ChoicepointTerminal;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Choicepoint Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ChoicepointTerminalImpl#getCp <em>Cp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChoicepointTerminalImpl extends TransitionTerminalImpl implements ChoicepointTerminal
+{
+ /**
+ * The cached value of the '{@link #getCp() <em>Cp</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCp()
+ * @generated
+ * @ordered
+ */
+ protected ChoicePoint cp;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChoicepointTerminalImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.CHOICEPOINT_TERMINAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChoicePoint getCp()
+ {
+ if (cp != null && cp.eIsProxy())
+ {
+ InternalEObject oldCp = (InternalEObject)cp;
+ cp = (ChoicePoint)eResolveProxy(oldCp);
+ if (cp != oldCp)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.CHOICEPOINT_TERMINAL__CP, oldCp, cp));
+ }
+ }
+ return cp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChoicePoint basicGetCp()
+ {
+ return cp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCp(ChoicePoint newCp)
+ {
+ ChoicePoint oldCp = cp;
+ cp = newCp;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.CHOICEPOINT_TERMINAL__CP, oldCp, cp));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICEPOINT_TERMINAL__CP:
+ if (resolve) return getCp();
+ return basicGetCp();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICEPOINT_TERMINAL__CP:
+ setCp((ChoicePoint)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICEPOINT_TERMINAL__CP:
+ setCp((ChoicePoint)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.CHOICEPOINT_TERMINAL__CP:
+ return cp != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ChoicepointTerminalImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ContinuationTransitionImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ContinuationTransitionImpl.java
new file mode 100644
index 000000000..8556d4b68
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ContinuationTransitionImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Continuation Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ContinuationTransitionImpl extends NonInitialTransitionImpl implements ContinuationTransition
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ContinuationTransitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.CONTINUATION_TRANSITION;
+ }
+
+} //ContinuationTransitionImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DataClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DataClassImpl.java
new file mode 100644
index 000000000..d16748cfb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DataClassImpl.java
@@ -0,0 +1,315 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.Import;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.DataClassImpl#getBase <em>Base</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.DataClassImpl#getImports <em>Imports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.DataClassImpl#getAttributes <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.DataClassImpl#getOperations <em>Operations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DataClassImpl extends RoomClassImpl implements DataClass
+{
+ /**
+ * The cached value of the '{@link #getBase() <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase()
+ * @generated
+ * @ordered
+ */
+ protected DataClass base;
+
+ /**
+ * The cached value of the '{@link #getImports() <em>Imports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getImports()
+ * @generated
+ * @ordered
+ */
+ protected EList<Import> imports;
+
+ /**
+ * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributes()
+ * @generated
+ * @ordered
+ */
+ protected EList<Attribute> attributes;
+
+ /**
+ * The cached value of the '{@link #getOperations() <em>Operations</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperations()
+ * @generated
+ * @ordered
+ */
+ protected EList<Operation> operations;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.DATA_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataClass getBase()
+ {
+ if (base != null && base.eIsProxy())
+ {
+ InternalEObject oldBase = (InternalEObject)base;
+ base = (DataClass)eResolveProxy(oldBase);
+ if (base != oldBase)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.DATA_CLASS__BASE, oldBase, base));
+ }
+ }
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataClass basicGetBase()
+ {
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase(DataClass newBase)
+ {
+ DataClass oldBase = base;
+ base = newBase;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.DATA_CLASS__BASE, oldBase, base));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Import> getImports()
+ {
+ if (imports == null)
+ {
+ imports = new EObjectContainmentEList<Import>(Import.class, this, RoomPackage.DATA_CLASS__IMPORTS);
+ }
+ return imports;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Attribute> getAttributes()
+ {
+ if (attributes == null)
+ {
+ attributes = new EObjectContainmentEList<Attribute>(Attribute.class, this, RoomPackage.DATA_CLASS__ATTRIBUTES);
+ }
+ return attributes;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Operation> getOperations()
+ {
+ if (operations == null)
+ {
+ operations = new EObjectContainmentEList<Operation>(Operation.class, this, RoomPackage.DATA_CLASS__OPERATIONS);
+ }
+ return operations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DATA_CLASS__IMPORTS:
+ return ((InternalEList<?>)getImports()).basicRemove(otherEnd, msgs);
+ case RoomPackage.DATA_CLASS__ATTRIBUTES:
+ return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
+ case RoomPackage.DATA_CLASS__OPERATIONS:
+ return ((InternalEList<?>)getOperations()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DATA_CLASS__BASE:
+ if (resolve) return getBase();
+ return basicGetBase();
+ case RoomPackage.DATA_CLASS__IMPORTS:
+ return getImports();
+ case RoomPackage.DATA_CLASS__ATTRIBUTES:
+ return getAttributes();
+ case RoomPackage.DATA_CLASS__OPERATIONS:
+ return getOperations();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DATA_CLASS__BASE:
+ setBase((DataClass)newValue);
+ return;
+ case RoomPackage.DATA_CLASS__IMPORTS:
+ getImports().clear();
+ getImports().addAll((Collection<? extends Import>)newValue);
+ return;
+ case RoomPackage.DATA_CLASS__ATTRIBUTES:
+ getAttributes().clear();
+ getAttributes().addAll((Collection<? extends Attribute>)newValue);
+ return;
+ case RoomPackage.DATA_CLASS__OPERATIONS:
+ getOperations().clear();
+ getOperations().addAll((Collection<? extends Operation>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DATA_CLASS__BASE:
+ setBase((DataClass)null);
+ return;
+ case RoomPackage.DATA_CLASS__IMPORTS:
+ getImports().clear();
+ return;
+ case RoomPackage.DATA_CLASS__ATTRIBUTES:
+ getAttributes().clear();
+ return;
+ case RoomPackage.DATA_CLASS__OPERATIONS:
+ getOperations().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DATA_CLASS__BASE:
+ return base != null;
+ case RoomPackage.DATA_CLASS__IMPORTS:
+ return imports != null && !imports.isEmpty();
+ case RoomPackage.DATA_CLASS__ATTRIBUTES:
+ return attributes != null && !attributes.isEmpty();
+ case RoomPackage.DATA_CLASS__OPERATIONS:
+ return operations != null && !operations.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DetailCodeImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DetailCodeImpl.java
new file mode 100644
index 000000000..d42afcedc
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/DetailCodeImpl.java
@@ -0,0 +1,167 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Detail Code</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.DetailCodeImpl#getCommands <em>Commands</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DetailCodeImpl extends MinimalEObjectImpl.Container implements DetailCode
+{
+ /**
+ * The cached value of the '{@link #getCommands() <em>Commands</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCommands()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> commands;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DetailCodeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.DETAIL_CODE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getCommands()
+ {
+ if (commands == null)
+ {
+ commands = new EDataTypeEList<String>(String.class, this, RoomPackage.DETAIL_CODE__COMMANDS);
+ }
+ return commands;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DETAIL_CODE__COMMANDS:
+ return getCommands();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DETAIL_CODE__COMMANDS:
+ getCommands().clear();
+ getCommands().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DETAIL_CODE__COMMANDS:
+ getCommands().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.DETAIL_CODE__COMMANDS:
+ return commands != null && !commands.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (commands: ");
+ result.append(commands);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DetailCodeImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/EntryPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/EntryPointImpl.java
new file mode 100644
index 000000000..6955dbe5b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/EntryPointImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.EntryPoint;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Entry Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EntryPointImpl extends TrPointImpl implements EntryPoint
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EntryPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ENTRY_POINT;
+ }
+
+} //EntryPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExitPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExitPointImpl.java
new file mode 100644
index 000000000..d4e63877c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExitPointImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.ExitPoint;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Exit Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ExitPointImpl extends TrPointImpl implements ExitPoint
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExitPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.EXIT_POINT;
+ }
+
+} //ExitPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExternalPortImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExternalPortImpl.java
new file mode 100644
index 000000000..c52fdb018
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ExternalPortImpl.java
@@ -0,0 +1,177 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>External Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ExternalPortImpl#getIfport <em>Ifport</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExternalPortImpl extends MinimalEObjectImpl.Container implements ExternalPort
+{
+ /**
+ * The cached value of the '{@link #getIfport() <em>Ifport</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIfport()
+ * @generated
+ * @ordered
+ */
+ protected Port ifport;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExternalPortImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.EXTERNAL_PORT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port getIfport()
+ {
+ if (ifport != null && ifport.eIsProxy())
+ {
+ InternalEObject oldIfport = (InternalEObject)ifport;
+ ifport = (Port)eResolveProxy(oldIfport);
+ if (ifport != oldIfport)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.EXTERNAL_PORT__IFPORT, oldIfport, ifport));
+ }
+ }
+ return ifport;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port basicGetIfport()
+ {
+ return ifport;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIfport(Port newIfport)
+ {
+ Port oldIfport = ifport;
+ ifport = newIfport;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.EXTERNAL_PORT__IFPORT, oldIfport, ifport));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.EXTERNAL_PORT__IFPORT:
+ if (resolve) return getIfport();
+ return basicGetIfport();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.EXTERNAL_PORT__IFPORT:
+ setIfport((Port)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.EXTERNAL_PORT__IFPORT:
+ setIfport((Port)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.EXTERNAL_PORT__IFPORT:
+ return ifport != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExternalPortImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypeImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypeImpl.java
new file mode 100644
index 000000000..aece083a5
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypeImpl.java
@@ -0,0 +1,238 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.PrimitiveType;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Free Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.FreeTypeImpl#getPrim <em>Prim</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.FreeTypeImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FreeTypeImpl extends MinimalEObjectImpl.Container implements FreeType
+{
+ /**
+ * The default value of the '{@link #getPrim() <em>Prim</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrim()
+ * @generated
+ * @ordered
+ */
+ protected static final PrimitiveType PRIM_EDEFAULT = PrimitiveType.VOID;
+
+ /**
+ * The cached value of the '{@link #getPrim() <em>Prim</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrim()
+ * @generated
+ * @ordered
+ */
+ protected PrimitiveType prim = PRIM_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final String TYPE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected String type = TYPE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FreeTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.FREE_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimitiveType getPrim()
+ {
+ return prim;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrim(PrimitiveType newPrim)
+ {
+ PrimitiveType oldPrim = prim;
+ prim = newPrim == null ? PRIM_EDEFAULT : newPrim;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.FREE_TYPE__PRIM, oldPrim, prim));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(String newType)
+ {
+ String oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.FREE_TYPE__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPE__PRIM:
+ return getPrim();
+ case RoomPackage.FREE_TYPE__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPE__PRIM:
+ setPrim((PrimitiveType)newValue);
+ return;
+ case RoomPackage.FREE_TYPE__TYPE:
+ setType((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPE__PRIM:
+ setPrim(PRIM_EDEFAULT);
+ return;
+ case RoomPackage.FREE_TYPE__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPE__PRIM:
+ return prim != PRIM_EDEFAULT;
+ case RoomPackage.FREE_TYPE__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (prim: ");
+ result.append(prim);
+ result.append(", type: ");
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FreeTypeImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypedIDImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypedIDImpl.java
new file mode 100644
index 000000000..0bbf5901c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/FreeTypedIDImpl.java
@@ -0,0 +1,269 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Free Typed ID</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.FreeTypedIDImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.FreeTypedIDImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FreeTypedIDImpl extends MinimalEObjectImpl.Container implements FreeTypedID
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected FreeType type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FreeTypedIDImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.FREE_TYPED_ID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.FREE_TYPED_ID__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FreeType getType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetType(FreeType newType, NotificationChain msgs)
+ {
+ FreeType oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.FREE_TYPED_ID__TYPE, oldType, newType);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(FreeType newType)
+ {
+ if (newType != type)
+ {
+ NotificationChain msgs = null;
+ if (type != null)
+ msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.FREE_TYPED_ID__TYPE, null, msgs);
+ if (newType != null)
+ msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.FREE_TYPED_ID__TYPE, null, msgs);
+ msgs = basicSetType(newType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.FREE_TYPED_ID__TYPE, newType, newType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPED_ID__TYPE:
+ return basicSetType(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPED_ID__NAME:
+ return getName();
+ case RoomPackage.FREE_TYPED_ID__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPED_ID__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.FREE_TYPED_ID__TYPE:
+ setType((FreeType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPED_ID__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.FREE_TYPED_ID__TYPE:
+ setType((FreeType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.FREE_TYPED_ID__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.FREE_TYPED_ID__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FreeTypedIDImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/GuardImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/GuardImpl.java
new file mode 100644
index 000000000..c6e5d979f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/GuardImpl.java
@@ -0,0 +1,198 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Guard;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Guard</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.GuardImpl#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class GuardImpl extends MinimalEObjectImpl.Container implements Guard
+{
+ /**
+ * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGuard()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode guard;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GuardImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.GUARD;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getGuard()
+ {
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGuard(DetailCode newGuard, NotificationChain msgs)
+ {
+ DetailCode oldGuard = guard;
+ guard = newGuard;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.GUARD__GUARD, oldGuard, newGuard);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGuard(DetailCode newGuard)
+ {
+ if (newGuard != guard)
+ {
+ NotificationChain msgs = null;
+ if (guard != null)
+ msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.GUARD__GUARD, null, msgs);
+ if (newGuard != null)
+ msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.GUARD__GUARD, null, msgs);
+ msgs = basicSetGuard(newGuard, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.GUARD__GUARD, newGuard, newGuard));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.GUARD__GUARD:
+ return basicSetGuard(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.GUARD__GUARD:
+ return getGuard();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.GUARD__GUARD:
+ setGuard((DetailCode)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.GUARD__GUARD:
+ setGuard((DetailCode)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.GUARD__GUARD:
+ return guard != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //GuardImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ImportImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ImportImpl.java
new file mode 100644
index 000000000..c17688a1e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ImportImpl.java
@@ -0,0 +1,181 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.Import;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Import</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ImportImpl#getImportedNamespace <em>Imported Namespace</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ImportImpl extends MinimalEObjectImpl.Container implements Import
+{
+ /**
+ * The default value of the '{@link #getImportedNamespace() <em>Imported Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getImportedNamespace()
+ * @generated
+ * @ordered
+ */
+ protected static final String IMPORTED_NAMESPACE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getImportedNamespace() <em>Imported Namespace</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getImportedNamespace()
+ * @generated
+ * @ordered
+ */
+ protected String importedNamespace = IMPORTED_NAMESPACE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ImportImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.IMPORT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getImportedNamespace()
+ {
+ return importedNamespace;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setImportedNamespace(String newImportedNamespace)
+ {
+ String oldImportedNamespace = importedNamespace;
+ importedNamespace = newImportedNamespace;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.IMPORT__IMPORTED_NAMESPACE, oldImportedNamespace, importedNamespace));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.IMPORT__IMPORTED_NAMESPACE:
+ return getImportedNamespace();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.IMPORT__IMPORTED_NAMESPACE:
+ setImportedNamespace((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.IMPORT__IMPORTED_NAMESPACE:
+ setImportedNamespace(IMPORTED_NAMESPACE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.IMPORT__IMPORTED_NAMESPACE:
+ return IMPORTED_NAMESPACE_EDEFAULT == null ? importedNamespace != null : !IMPORTED_NAMESPACE_EDEFAULT.equals(importedNamespace);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (importedNamespace: ");
+ result.append(importedNamespace);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ImportImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InitialTransitionImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InitialTransitionImpl.java
new file mode 100644
index 000000000..db5e36928
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InitialTransitionImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Initial Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class InitialTransitionImpl extends TransitionImpl implements InitialTransition
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InitialTransitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.INITIAL_TRANSITION;
+ }
+
+} //InitialTransitionImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InterfaceItemImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InterfaceItemImpl.java
new file mode 100644
index 000000000..9be9984d3
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/InterfaceItemImpl.java
@@ -0,0 +1,248 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Interface Item</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.InterfaceItemImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.InterfaceItemImpl#getProtocol <em>Protocol</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InterfaceItemImpl extends MinimalEObjectImpl.Container implements InterfaceItem
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getProtocol() <em>Protocol</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProtocol()
+ * @generated
+ * @ordered
+ */
+ protected ProtocolClass protocol;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InterfaceItemImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.INTERFACE_ITEM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.INTERFACE_ITEM__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProtocolClass getProtocol()
+ {
+ if (protocol != null && protocol.eIsProxy())
+ {
+ InternalEObject oldProtocol = (InternalEObject)protocol;
+ protocol = (ProtocolClass)eResolveProxy(oldProtocol);
+ if (protocol != oldProtocol)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.INTERFACE_ITEM__PROTOCOL, oldProtocol, protocol));
+ }
+ }
+ return protocol;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProtocolClass basicGetProtocol()
+ {
+ return protocol;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProtocol(ProtocolClass newProtocol)
+ {
+ ProtocolClass oldProtocol = protocol;
+ protocol = newProtocol;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.INTERFACE_ITEM__PROTOCOL, oldProtocol, protocol));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.INTERFACE_ITEM__NAME:
+ return getName();
+ case RoomPackage.INTERFACE_ITEM__PROTOCOL:
+ if (resolve) return getProtocol();
+ return basicGetProtocol();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.INTERFACE_ITEM__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.INTERFACE_ITEM__PROTOCOL:
+ setProtocol((ProtocolClass)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.INTERFACE_ITEM__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.INTERFACE_ITEM__PROTOCOL:
+ setProtocol((ProtocolClass)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.INTERFACE_ITEM__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.INTERFACE_ITEM__PROTOCOL:
+ return protocol != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //InterfaceItemImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LayerConnectionImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LayerConnectionImpl.java
new file mode 100644
index 000000000..b2de5fd6b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LayerConnectionImpl.java
@@ -0,0 +1,270 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPoint;
+import org.eclipse.etrice.core.room.SPPoint;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Connection</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.LayerConnectionImpl#getFrom <em>From</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.LayerConnectionImpl#getTo <em>To</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerConnectionImpl extends MinimalEObjectImpl.Container implements LayerConnection
+{
+ /**
+ * The cached value of the '{@link #getFrom() <em>From</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFrom()
+ * @generated
+ * @ordered
+ */
+ protected SAPoint from;
+
+ /**
+ * The cached value of the '{@link #getTo() <em>To</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTo()
+ * @generated
+ * @ordered
+ */
+ protected SPPoint to;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerConnectionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.LAYER_CONNECTION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SAPoint getFrom()
+ {
+ return from;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFrom(SAPoint newFrom, NotificationChain msgs)
+ {
+ SAPoint oldFrom = from;
+ from = newFrom;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.LAYER_CONNECTION__FROM, oldFrom, newFrom);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFrom(SAPoint newFrom)
+ {
+ if (newFrom != from)
+ {
+ NotificationChain msgs = null;
+ if (from != null)
+ msgs = ((InternalEObject)from).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.LAYER_CONNECTION__FROM, null, msgs);
+ if (newFrom != null)
+ msgs = ((InternalEObject)newFrom).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.LAYER_CONNECTION__FROM, null, msgs);
+ msgs = basicSetFrom(newFrom, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.LAYER_CONNECTION__FROM, newFrom, newFrom));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPoint getTo()
+ {
+ return to;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTo(SPPoint newTo, NotificationChain msgs)
+ {
+ SPPoint oldTo = to;
+ to = newTo;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.LAYER_CONNECTION__TO, oldTo, newTo);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTo(SPPoint newTo)
+ {
+ if (newTo != to)
+ {
+ NotificationChain msgs = null;
+ if (to != null)
+ msgs = ((InternalEObject)to).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.LAYER_CONNECTION__TO, null, msgs);
+ if (newTo != null)
+ msgs = ((InternalEObject)newTo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.LAYER_CONNECTION__TO, null, msgs);
+ msgs = basicSetTo(newTo, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.LAYER_CONNECTION__TO, newTo, newTo));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LAYER_CONNECTION__FROM:
+ return basicSetFrom(null, msgs);
+ case RoomPackage.LAYER_CONNECTION__TO:
+ return basicSetTo(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LAYER_CONNECTION__FROM:
+ return getFrom();
+ case RoomPackage.LAYER_CONNECTION__TO:
+ return getTo();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LAYER_CONNECTION__FROM:
+ setFrom((SAPoint)newValue);
+ return;
+ case RoomPackage.LAYER_CONNECTION__TO:
+ setTo((SPPoint)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LAYER_CONNECTION__FROM:
+ setFrom((SAPoint)null);
+ return;
+ case RoomPackage.LAYER_CONNECTION__TO:
+ setTo((SPPoint)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LAYER_CONNECTION__FROM:
+ return from != null;
+ case RoomPackage.LAYER_CONNECTION__TO:
+ return to != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LayerConnectionImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalSystemImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalSystemImpl.java
new file mode 100644
index 000000000..d56059bdb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalSystemImpl.java
@@ -0,0 +1,169 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SubSystemRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Logical System</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.LogicalSystemImpl#getSubSystems <em>Sub Systems</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LogicalSystemImpl extends StructureClassImpl implements LogicalSystem
+{
+ /**
+ * The cached value of the '{@link #getSubSystems() <em>Sub Systems</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubSystems()
+ * @generated
+ * @ordered
+ */
+ protected EList<SubSystemRef> subSystems;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LogicalSystemImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.LOGICAL_SYSTEM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SubSystemRef> getSubSystems()
+ {
+ if (subSystems == null)
+ {
+ subSystems = new EObjectContainmentEList<SubSystemRef>(SubSystemRef.class, this, RoomPackage.LOGICAL_SYSTEM__SUB_SYSTEMS);
+ }
+ return subSystems;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_SYSTEM__SUB_SYSTEMS:
+ return ((InternalEList<?>)getSubSystems()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_SYSTEM__SUB_SYSTEMS:
+ return getSubSystems();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_SYSTEM__SUB_SYSTEMS:
+ getSubSystems().clear();
+ getSubSystems().addAll((Collection<? extends SubSystemRef>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_SYSTEM__SUB_SYSTEMS:
+ getSubSystems().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_SYSTEM__SUB_SYSTEMS:
+ return subSystems != null && !subSystems.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LogicalSystemImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalThreadImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalThreadImpl.java
new file mode 100644
index 000000000..9cc79883f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/LogicalThreadImpl.java
@@ -0,0 +1,244 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.ActorInstancePath;
+import org.eclipse.etrice.core.room.LogicalThread;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Logical Thread</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.LogicalThreadImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.LogicalThreadImpl#getInstances <em>Instances</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LogicalThreadImpl extends MinimalEObjectImpl.Container implements LogicalThread
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getInstances() <em>Instances</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInstances()
+ * @generated
+ * @ordered
+ */
+ protected EList<ActorInstancePath> instances;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LogicalThreadImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.LOGICAL_THREAD;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.LOGICAL_THREAD__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ActorInstancePath> getInstances()
+ {
+ if (instances == null)
+ {
+ instances = new EObjectContainmentEList<ActorInstancePath>(ActorInstancePath.class, this, RoomPackage.LOGICAL_THREAD__INSTANCES);
+ }
+ return instances;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_THREAD__INSTANCES:
+ return ((InternalEList<?>)getInstances()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_THREAD__NAME:
+ return getName();
+ case RoomPackage.LOGICAL_THREAD__INSTANCES:
+ return getInstances();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_THREAD__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.LOGICAL_THREAD__INSTANCES:
+ getInstances().clear();
+ getInstances().addAll((Collection<? extends ActorInstancePath>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_THREAD__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.LOGICAL_THREAD__INSTANCES:
+ getInstances().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.LOGICAL_THREAD__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.LOGICAL_THREAD__INSTANCES:
+ return instances != null && !instances.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LogicalThreadImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageFromIfImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageFromIfImpl.java
new file mode 100644
index 000000000..edaa6f02c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageFromIfImpl.java
@@ -0,0 +1,243 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Message From If</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.MessageFromIfImpl#getMessage <em>Message</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.MessageFromIfImpl#getFrom <em>From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MessageFromIfImpl extends MinimalEObjectImpl.Container implements MessageFromIf
+{
+ /**
+ * The cached value of the '{@link #getMessage() <em>Message</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMessage()
+ * @generated
+ * @ordered
+ */
+ protected Message message;
+
+ /**
+ * The cached value of the '{@link #getFrom() <em>From</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFrom()
+ * @generated
+ * @ordered
+ */
+ protected InterfaceItem from;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MessageFromIfImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.MESSAGE_FROM_IF;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message getMessage()
+ {
+ if (message != null && message.eIsProxy())
+ {
+ InternalEObject oldMessage = (InternalEObject)message;
+ message = (Message)eResolveProxy(oldMessage);
+ if (message != oldMessage)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.MESSAGE_FROM_IF__MESSAGE, oldMessage, message));
+ }
+ }
+ return message;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message basicGetMessage()
+ {
+ return message;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMessage(Message newMessage)
+ {
+ Message oldMessage = message;
+ message = newMessage;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.MESSAGE_FROM_IF__MESSAGE, oldMessage, message));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterfaceItem getFrom()
+ {
+ if (from != null && from.eIsProxy())
+ {
+ InternalEObject oldFrom = (InternalEObject)from;
+ from = (InterfaceItem)eResolveProxy(oldFrom);
+ if (from != oldFrom)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.MESSAGE_FROM_IF__FROM, oldFrom, from));
+ }
+ }
+ return from;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterfaceItem basicGetFrom()
+ {
+ return from;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFrom(InterfaceItem newFrom)
+ {
+ InterfaceItem oldFrom = from;
+ from = newFrom;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.MESSAGE_FROM_IF__FROM, oldFrom, from));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_FROM_IF__MESSAGE:
+ if (resolve) return getMessage();
+ return basicGetMessage();
+ case RoomPackage.MESSAGE_FROM_IF__FROM:
+ if (resolve) return getFrom();
+ return basicGetFrom();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_FROM_IF__MESSAGE:
+ setMessage((Message)newValue);
+ return;
+ case RoomPackage.MESSAGE_FROM_IF__FROM:
+ setFrom((InterfaceItem)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_FROM_IF__MESSAGE:
+ setMessage((Message)null);
+ return;
+ case RoomPackage.MESSAGE_FROM_IF__FROM:
+ setFrom((InterfaceItem)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_FROM_IF__MESSAGE:
+ return message != null;
+ case RoomPackage.MESSAGE_FROM_IF__FROM:
+ return from != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MessageFromIfImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageHandlerImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageHandlerImpl.java
new file mode 100644
index 000000000..71ae6ba28
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageHandlerImpl.java
@@ -0,0 +1,264 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Message Handler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.MessageHandlerImpl#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.MessageHandlerImpl#getDetailCode <em>Detail Code</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MessageHandlerImpl extends MinimalEObjectImpl.Container implements MessageHandler
+{
+ /**
+ * The cached value of the '{@link #getMsg() <em>Msg</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMsg()
+ * @generated
+ * @ordered
+ */
+ protected Message msg;
+
+ /**
+ * The cached value of the '{@link #getDetailCode() <em>Detail Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDetailCode()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode detailCode;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MessageHandlerImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.MESSAGE_HANDLER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message getMsg()
+ {
+ if (msg != null && msg.eIsProxy())
+ {
+ InternalEObject oldMsg = (InternalEObject)msg;
+ msg = (Message)eResolveProxy(oldMsg);
+ if (msg != oldMsg)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.MESSAGE_HANDLER__MSG, oldMsg, msg));
+ }
+ }
+ return msg;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message basicGetMsg()
+ {
+ return msg;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMsg(Message newMsg)
+ {
+ Message oldMsg = msg;
+ msg = newMsg;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.MESSAGE_HANDLER__MSG, oldMsg, msg));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getDetailCode()
+ {
+ return detailCode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDetailCode(DetailCode newDetailCode, NotificationChain msgs)
+ {
+ DetailCode oldDetailCode = detailCode;
+ detailCode = newDetailCode;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.MESSAGE_HANDLER__DETAIL_CODE, oldDetailCode, newDetailCode);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDetailCode(DetailCode newDetailCode)
+ {
+ if (newDetailCode != detailCode)
+ {
+ NotificationChain msgs = null;
+ if (detailCode != null)
+ msgs = ((InternalEObject)detailCode).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.MESSAGE_HANDLER__DETAIL_CODE, null, msgs);
+ if (newDetailCode != null)
+ msgs = ((InternalEObject)newDetailCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.MESSAGE_HANDLER__DETAIL_CODE, null, msgs);
+ msgs = basicSetDetailCode(newDetailCode, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.MESSAGE_HANDLER__DETAIL_CODE, newDetailCode, newDetailCode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_HANDLER__DETAIL_CODE:
+ return basicSetDetailCode(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_HANDLER__MSG:
+ if (resolve) return getMsg();
+ return basicGetMsg();
+ case RoomPackage.MESSAGE_HANDLER__DETAIL_CODE:
+ return getDetailCode();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_HANDLER__MSG:
+ setMsg((Message)newValue);
+ return;
+ case RoomPackage.MESSAGE_HANDLER__DETAIL_CODE:
+ setDetailCode((DetailCode)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_HANDLER__MSG:
+ setMsg((Message)null);
+ return;
+ case RoomPackage.MESSAGE_HANDLER__DETAIL_CODE:
+ setDetailCode((DetailCode)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE_HANDLER__MSG:
+ return msg != null;
+ case RoomPackage.MESSAGE_HANDLER__DETAIL_CODE:
+ return detailCode != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MessageHandlerImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageImpl.java
new file mode 100644
index 000000000..131d54dcb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/MessageImpl.java
@@ -0,0 +1,244 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.TypedID;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Message</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.MessageImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.MessageImpl#getArguments <em>Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MessageImpl extends MinimalEObjectImpl.Container implements Message
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getArguments() <em>Arguments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<TypedID> arguments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MessageImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.MESSAGE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.MESSAGE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<TypedID> getArguments()
+ {
+ if (arguments == null)
+ {
+ arguments = new EObjectContainmentEList<TypedID>(TypedID.class, this, RoomPackage.MESSAGE__ARGUMENTS);
+ }
+ return arguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE__ARGUMENTS:
+ return ((InternalEList<?>)getArguments()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE__NAME:
+ return getName();
+ case RoomPackage.MESSAGE__ARGUMENTS:
+ return getArguments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.MESSAGE__ARGUMENTS:
+ getArguments().clear();
+ getArguments().addAll((Collection<? extends TypedID>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.MESSAGE__ARGUMENTS:
+ getArguments().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.MESSAGE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.MESSAGE__ARGUMENTS:
+ return arguments != null && !arguments.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //MessageImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/NonInitialTransitionImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/NonInitialTransitionImpl.java
new file mode 100644
index 000000000..adfa93133
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/NonInitialTransitionImpl.java
@@ -0,0 +1,197 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.NonInitialTransition;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.TransitionTerminal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Non Initial Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.NonInitialTransitionImpl#getFrom <em>From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NonInitialTransitionImpl extends TransitionImpl implements NonInitialTransition
+{
+ /**
+ * The cached value of the '{@link #getFrom() <em>From</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFrom()
+ * @generated
+ * @ordered
+ */
+ protected TransitionTerminal from;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NonInitialTransitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.NON_INITIAL_TRANSITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionTerminal getFrom()
+ {
+ return from;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFrom(TransitionTerminal newFrom, NotificationChain msgs)
+ {
+ TransitionTerminal oldFrom = from;
+ from = newFrom;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.NON_INITIAL_TRANSITION__FROM, oldFrom, newFrom);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFrom(TransitionTerminal newFrom)
+ {
+ if (newFrom != from)
+ {
+ NotificationChain msgs = null;
+ if (from != null)
+ msgs = ((InternalEObject)from).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.NON_INITIAL_TRANSITION__FROM, null, msgs);
+ if (newFrom != null)
+ msgs = ((InternalEObject)newFrom).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.NON_INITIAL_TRANSITION__FROM, null, msgs);
+ msgs = basicSetFrom(newFrom, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.NON_INITIAL_TRANSITION__FROM, newFrom, newFrom));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.NON_INITIAL_TRANSITION__FROM:
+ return basicSetFrom(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.NON_INITIAL_TRANSITION__FROM:
+ return getFrom();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.NON_INITIAL_TRANSITION__FROM:
+ setFrom((TransitionTerminal)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.NON_INITIAL_TRANSITION__FROM:
+ setFrom((TransitionTerminal)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.NON_INITIAL_TRANSITION__FROM:
+ return from != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //NonInitialTransitionImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/OperationImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/OperationImpl.java
new file mode 100644
index 000000000..e9e3944a4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/OperationImpl.java
@@ -0,0 +1,388 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.OperationImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.OperationImpl#getArguments <em>Arguments</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.OperationImpl#getReturntype <em>Returntype</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.OperationImpl#getDetailCode <em>Detail Code</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OperationImpl extends MinimalEObjectImpl.Container implements Operation
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getArguments() <em>Arguments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<FreeTypedID> arguments;
+
+ /**
+ * The cached value of the '{@link #getReturntype() <em>Returntype</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReturntype()
+ * @generated
+ * @ordered
+ */
+ protected FreeType returntype;
+
+ /**
+ * The cached value of the '{@link #getDetailCode() <em>Detail Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDetailCode()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode detailCode;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OperationImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.OPERATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.OPERATION__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<FreeTypedID> getArguments()
+ {
+ if (arguments == null)
+ {
+ arguments = new EObjectContainmentEList<FreeTypedID>(FreeTypedID.class, this, RoomPackage.OPERATION__ARGUMENTS);
+ }
+ return arguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FreeType getReturntype()
+ {
+ return returntype;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetReturntype(FreeType newReturntype, NotificationChain msgs)
+ {
+ FreeType oldReturntype = returntype;
+ returntype = newReturntype;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.OPERATION__RETURNTYPE, oldReturntype, newReturntype);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReturntype(FreeType newReturntype)
+ {
+ if (newReturntype != returntype)
+ {
+ NotificationChain msgs = null;
+ if (returntype != null)
+ msgs = ((InternalEObject)returntype).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.OPERATION__RETURNTYPE, null, msgs);
+ if (newReturntype != null)
+ msgs = ((InternalEObject)newReturntype).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.OPERATION__RETURNTYPE, null, msgs);
+ msgs = basicSetReturntype(newReturntype, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.OPERATION__RETURNTYPE, newReturntype, newReturntype));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getDetailCode()
+ {
+ return detailCode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDetailCode(DetailCode newDetailCode, NotificationChain msgs)
+ {
+ DetailCode oldDetailCode = detailCode;
+ detailCode = newDetailCode;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.OPERATION__DETAIL_CODE, oldDetailCode, newDetailCode);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDetailCode(DetailCode newDetailCode)
+ {
+ if (newDetailCode != detailCode)
+ {
+ NotificationChain msgs = null;
+ if (detailCode != null)
+ msgs = ((InternalEObject)detailCode).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.OPERATION__DETAIL_CODE, null, msgs);
+ if (newDetailCode != null)
+ msgs = ((InternalEObject)newDetailCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.OPERATION__DETAIL_CODE, null, msgs);
+ msgs = basicSetDetailCode(newDetailCode, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.OPERATION__DETAIL_CODE, newDetailCode, newDetailCode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.OPERATION__ARGUMENTS:
+ return ((InternalEList<?>)getArguments()).basicRemove(otherEnd, msgs);
+ case RoomPackage.OPERATION__RETURNTYPE:
+ return basicSetReturntype(null, msgs);
+ case RoomPackage.OPERATION__DETAIL_CODE:
+ return basicSetDetailCode(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.OPERATION__NAME:
+ return getName();
+ case RoomPackage.OPERATION__ARGUMENTS:
+ return getArguments();
+ case RoomPackage.OPERATION__RETURNTYPE:
+ return getReturntype();
+ case RoomPackage.OPERATION__DETAIL_CODE:
+ return getDetailCode();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.OPERATION__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.OPERATION__ARGUMENTS:
+ getArguments().clear();
+ getArguments().addAll((Collection<? extends FreeTypedID>)newValue);
+ return;
+ case RoomPackage.OPERATION__RETURNTYPE:
+ setReturntype((FreeType)newValue);
+ return;
+ case RoomPackage.OPERATION__DETAIL_CODE:
+ setDetailCode((DetailCode)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.OPERATION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.OPERATION__ARGUMENTS:
+ getArguments().clear();
+ return;
+ case RoomPackage.OPERATION__RETURNTYPE:
+ setReturntype((FreeType)null);
+ return;
+ case RoomPackage.OPERATION__DETAIL_CODE:
+ setDetailCode((DetailCode)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.OPERATION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.OPERATION__ARGUMENTS:
+ return arguments != null && !arguments.isEmpty();
+ case RoomPackage.OPERATION__RETURNTYPE:
+ return returntype != null;
+ case RoomPackage.OPERATION__DETAIL_CODE:
+ return detailCode != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //OperationImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortClassImpl.java
new file mode 100644
index 000000000..2c8190426
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortClassImpl.java
@@ -0,0 +1,323 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.PortClass;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Port Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.PortClassImpl#getUserCode <em>User Code</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.PortClassImpl#getAttributes <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.PortClassImpl#getOperations <em>Operations</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.PortClassImpl#getMsgHandlers <em>Msg Handlers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PortClassImpl extends MinimalEObjectImpl.Container implements PortClass
+{
+ /**
+ * The cached value of the '{@link #getUserCode() <em>User Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserCode()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode userCode;
+
+ /**
+ * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributes()
+ * @generated
+ * @ordered
+ */
+ protected EList<Attribute> attributes;
+
+ /**
+ * The cached value of the '{@link #getOperations() <em>Operations</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperations()
+ * @generated
+ * @ordered
+ */
+ protected EList<Operation> operations;
+
+ /**
+ * The cached value of the '{@link #getMsgHandlers() <em>Msg Handlers</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMsgHandlers()
+ * @generated
+ * @ordered
+ */
+ protected EList<MessageHandler> msgHandlers;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PortClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.PORT_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getUserCode()
+ {
+ return userCode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetUserCode(DetailCode newUserCode, NotificationChain msgs)
+ {
+ DetailCode oldUserCode = userCode;
+ userCode = newUserCode;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.PORT_CLASS__USER_CODE, oldUserCode, newUserCode);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUserCode(DetailCode newUserCode)
+ {
+ if (newUserCode != userCode)
+ {
+ NotificationChain msgs = null;
+ if (userCode != null)
+ msgs = ((InternalEObject)userCode).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PORT_CLASS__USER_CODE, null, msgs);
+ if (newUserCode != null)
+ msgs = ((InternalEObject)newUserCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PORT_CLASS__USER_CODE, null, msgs);
+ msgs = basicSetUserCode(newUserCode, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PORT_CLASS__USER_CODE, newUserCode, newUserCode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Attribute> getAttributes()
+ {
+ if (attributes == null)
+ {
+ attributes = new EObjectContainmentEList<Attribute>(Attribute.class, this, RoomPackage.PORT_CLASS__ATTRIBUTES);
+ }
+ return attributes;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Operation> getOperations()
+ {
+ if (operations == null)
+ {
+ operations = new EObjectContainmentEList<Operation>(Operation.class, this, RoomPackage.PORT_CLASS__OPERATIONS);
+ }
+ return operations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<MessageHandler> getMsgHandlers()
+ {
+ if (msgHandlers == null)
+ {
+ msgHandlers = new EObjectContainmentEList<MessageHandler>(MessageHandler.class, this, RoomPackage.PORT_CLASS__MSG_HANDLERS);
+ }
+ return msgHandlers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT_CLASS__USER_CODE:
+ return basicSetUserCode(null, msgs);
+ case RoomPackage.PORT_CLASS__ATTRIBUTES:
+ return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
+ case RoomPackage.PORT_CLASS__OPERATIONS:
+ return ((InternalEList<?>)getOperations()).basicRemove(otherEnd, msgs);
+ case RoomPackage.PORT_CLASS__MSG_HANDLERS:
+ return ((InternalEList<?>)getMsgHandlers()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT_CLASS__USER_CODE:
+ return getUserCode();
+ case RoomPackage.PORT_CLASS__ATTRIBUTES:
+ return getAttributes();
+ case RoomPackage.PORT_CLASS__OPERATIONS:
+ return getOperations();
+ case RoomPackage.PORT_CLASS__MSG_HANDLERS:
+ return getMsgHandlers();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT_CLASS__USER_CODE:
+ setUserCode((DetailCode)newValue);
+ return;
+ case RoomPackage.PORT_CLASS__ATTRIBUTES:
+ getAttributes().clear();
+ getAttributes().addAll((Collection<? extends Attribute>)newValue);
+ return;
+ case RoomPackage.PORT_CLASS__OPERATIONS:
+ getOperations().clear();
+ getOperations().addAll((Collection<? extends Operation>)newValue);
+ return;
+ case RoomPackage.PORT_CLASS__MSG_HANDLERS:
+ getMsgHandlers().clear();
+ getMsgHandlers().addAll((Collection<? extends MessageHandler>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT_CLASS__USER_CODE:
+ setUserCode((DetailCode)null);
+ return;
+ case RoomPackage.PORT_CLASS__ATTRIBUTES:
+ getAttributes().clear();
+ return;
+ case RoomPackage.PORT_CLASS__OPERATIONS:
+ getOperations().clear();
+ return;
+ case RoomPackage.PORT_CLASS__MSG_HANDLERS:
+ getMsgHandlers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT_CLASS__USER_CODE:
+ return userCode != null;
+ case RoomPackage.PORT_CLASS__ATTRIBUTES:
+ return attributes != null && !attributes.isEmpty();
+ case RoomPackage.PORT_CLASS__OPERATIONS:
+ return operations != null && !operations.isEmpty();
+ case RoomPackage.PORT_CLASS__MSG_HANDLERS:
+ return msgHandlers != null && !msgHandlers.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PortClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortImpl.java
new file mode 100644
index 000000000..712b0165c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/PortImpl.java
@@ -0,0 +1,236 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.PortImpl#isConjugated <em>Conjugated</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.PortImpl#getMultiplicity <em>Multiplicity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PortImpl extends InterfaceItemImpl implements Port
+{
+ /**
+ * The default value of the '{@link #isConjugated() <em>Conjugated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isConjugated()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CONJUGATED_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isConjugated() <em>Conjugated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isConjugated()
+ * @generated
+ * @ordered
+ */
+ protected boolean conjugated = CONJUGATED_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getMultiplicity() <em>Multiplicity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMultiplicity()
+ * @generated
+ * @ordered
+ */
+ protected static final int MULTIPLICITY_EDEFAULT = 1;
+
+ /**
+ * The cached value of the '{@link #getMultiplicity() <em>Multiplicity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMultiplicity()
+ * @generated
+ * @ordered
+ */
+ protected int multiplicity = MULTIPLICITY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PortImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.PORT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isConjugated()
+ {
+ return conjugated;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConjugated(boolean newConjugated)
+ {
+ boolean oldConjugated = conjugated;
+ conjugated = newConjugated;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PORT__CONJUGATED, oldConjugated, conjugated));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getMultiplicity()
+ {
+ return multiplicity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMultiplicity(int newMultiplicity)
+ {
+ int oldMultiplicity = multiplicity;
+ multiplicity = newMultiplicity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PORT__MULTIPLICITY, oldMultiplicity, multiplicity));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT__CONJUGATED:
+ return isConjugated();
+ case RoomPackage.PORT__MULTIPLICITY:
+ return getMultiplicity();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT__CONJUGATED:
+ setConjugated((Boolean)newValue);
+ return;
+ case RoomPackage.PORT__MULTIPLICITY:
+ setMultiplicity((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT__CONJUGATED:
+ setConjugated(CONJUGATED_EDEFAULT);
+ return;
+ case RoomPackage.PORT__MULTIPLICITY:
+ setMultiplicity(MULTIPLICITY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PORT__CONJUGATED:
+ return conjugated != CONJUGATED_EDEFAULT;
+ case RoomPackage.PORT__MULTIPLICITY:
+ return multiplicity != MULTIPLICITY_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (conjugated: ");
+ result.append(conjugated);
+ result.append(", multiplicity: ");
+ result.append(multiplicity);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PortImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolClassImpl.java
new file mode 100644
index 000000000..fb1188615
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolClassImpl.java
@@ -0,0 +1,633 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.PortClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.ProtocolSemantics;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Protocol Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getBase <em>Base</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getUserCode1 <em>User Code1</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getUserCode2 <em>User Code2</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getIncomingMessages <em>Incoming Messages</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getOutgoingMessages <em>Outgoing Messages</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getRegular <em>Regular</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getConjugate <em>Conjugate</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolClassImpl#getSemantics <em>Semantics</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProtocolClassImpl extends RoomClassImpl implements ProtocolClass
+{
+ /**
+ * The cached value of the '{@link #getBase() <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase()
+ * @generated
+ * @ordered
+ */
+ protected ProtocolClass base;
+
+ /**
+ * The cached value of the '{@link #getUserCode1() <em>User Code1</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserCode1()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode userCode1;
+
+ /**
+ * The cached value of the '{@link #getUserCode2() <em>User Code2</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserCode2()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode userCode2;
+
+ /**
+ * The cached value of the '{@link #getIncomingMessages() <em>Incoming Messages</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncomingMessages()
+ * @generated
+ * @ordered
+ */
+ protected EList<Message> incomingMessages;
+
+ /**
+ * The cached value of the '{@link #getOutgoingMessages() <em>Outgoing Messages</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutgoingMessages()
+ * @generated
+ * @ordered
+ */
+ protected EList<Message> outgoingMessages;
+
+ /**
+ * The cached value of the '{@link #getRegular() <em>Regular</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRegular()
+ * @generated
+ * @ordered
+ */
+ protected PortClass regular;
+
+ /**
+ * The cached value of the '{@link #getConjugate() <em>Conjugate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConjugate()
+ * @generated
+ * @ordered
+ */
+ protected PortClass conjugate;
+
+ /**
+ * The cached value of the '{@link #getSemantics() <em>Semantics</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSemantics()
+ * @generated
+ * @ordered
+ */
+ protected ProtocolSemantics semantics;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ProtocolClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.PROTOCOL_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProtocolClass getBase()
+ {
+ if (base != null && base.eIsProxy())
+ {
+ InternalEObject oldBase = (InternalEObject)base;
+ base = (ProtocolClass)eResolveProxy(oldBase);
+ if (base != oldBase)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.PROTOCOL_CLASS__BASE, oldBase, base));
+ }
+ }
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProtocolClass basicGetBase()
+ {
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase(ProtocolClass newBase)
+ {
+ ProtocolClass oldBase = base;
+ base = newBase;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__BASE, oldBase, base));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getUserCode1()
+ {
+ return userCode1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetUserCode1(DetailCode newUserCode1, NotificationChain msgs)
+ {
+ DetailCode oldUserCode1 = userCode1;
+ userCode1 = newUserCode1;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__USER_CODE1, oldUserCode1, newUserCode1);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUserCode1(DetailCode newUserCode1)
+ {
+ if (newUserCode1 != userCode1)
+ {
+ NotificationChain msgs = null;
+ if (userCode1 != null)
+ msgs = ((InternalEObject)userCode1).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__USER_CODE1, null, msgs);
+ if (newUserCode1 != null)
+ msgs = ((InternalEObject)newUserCode1).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__USER_CODE1, null, msgs);
+ msgs = basicSetUserCode1(newUserCode1, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__USER_CODE1, newUserCode1, newUserCode1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getUserCode2()
+ {
+ return userCode2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetUserCode2(DetailCode newUserCode2, NotificationChain msgs)
+ {
+ DetailCode oldUserCode2 = userCode2;
+ userCode2 = newUserCode2;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__USER_CODE2, oldUserCode2, newUserCode2);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUserCode2(DetailCode newUserCode2)
+ {
+ if (newUserCode2 != userCode2)
+ {
+ NotificationChain msgs = null;
+ if (userCode2 != null)
+ msgs = ((InternalEObject)userCode2).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__USER_CODE2, null, msgs);
+ if (newUserCode2 != null)
+ msgs = ((InternalEObject)newUserCode2).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__USER_CODE2, null, msgs);
+ msgs = basicSetUserCode2(newUserCode2, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__USER_CODE2, newUserCode2, newUserCode2));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Message> getIncomingMessages()
+ {
+ if (incomingMessages == null)
+ {
+ incomingMessages = new EObjectContainmentEList<Message>(Message.class, this, RoomPackage.PROTOCOL_CLASS__INCOMING_MESSAGES);
+ }
+ return incomingMessages;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Message> getOutgoingMessages()
+ {
+ if (outgoingMessages == null)
+ {
+ outgoingMessages = new EObjectContainmentEList<Message>(Message.class, this, RoomPackage.PROTOCOL_CLASS__OUTGOING_MESSAGES);
+ }
+ return outgoingMessages;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortClass getRegular()
+ {
+ return regular;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRegular(PortClass newRegular, NotificationChain msgs)
+ {
+ PortClass oldRegular = regular;
+ regular = newRegular;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__REGULAR, oldRegular, newRegular);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRegular(PortClass newRegular)
+ {
+ if (newRegular != regular)
+ {
+ NotificationChain msgs = null;
+ if (regular != null)
+ msgs = ((InternalEObject)regular).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__REGULAR, null, msgs);
+ if (newRegular != null)
+ msgs = ((InternalEObject)newRegular).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__REGULAR, null, msgs);
+ msgs = basicSetRegular(newRegular, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__REGULAR, newRegular, newRegular));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortClass getConjugate()
+ {
+ return conjugate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetConjugate(PortClass newConjugate, NotificationChain msgs)
+ {
+ PortClass oldConjugate = conjugate;
+ conjugate = newConjugate;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__CONJUGATE, oldConjugate, newConjugate);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConjugate(PortClass newConjugate)
+ {
+ if (newConjugate != conjugate)
+ {
+ NotificationChain msgs = null;
+ if (conjugate != null)
+ msgs = ((InternalEObject)conjugate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__CONJUGATE, null, msgs);
+ if (newConjugate != null)
+ msgs = ((InternalEObject)newConjugate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__CONJUGATE, null, msgs);
+ msgs = basicSetConjugate(newConjugate, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__CONJUGATE, newConjugate, newConjugate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProtocolSemantics getSemantics()
+ {
+ return semantics;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSemantics(ProtocolSemantics newSemantics, NotificationChain msgs)
+ {
+ ProtocolSemantics oldSemantics = semantics;
+ semantics = newSemantics;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__SEMANTICS, oldSemantics, newSemantics);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSemantics(ProtocolSemantics newSemantics)
+ {
+ if (newSemantics != semantics)
+ {
+ NotificationChain msgs = null;
+ if (semantics != null)
+ msgs = ((InternalEObject)semantics).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__SEMANTICS, null, msgs);
+ if (newSemantics != null)
+ msgs = ((InternalEObject)newSemantics).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.PROTOCOL_CLASS__SEMANTICS, null, msgs);
+ msgs = basicSetSemantics(newSemantics, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.PROTOCOL_CLASS__SEMANTICS, newSemantics, newSemantics));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE1:
+ return basicSetUserCode1(null, msgs);
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE2:
+ return basicSetUserCode2(null, msgs);
+ case RoomPackage.PROTOCOL_CLASS__INCOMING_MESSAGES:
+ return ((InternalEList<?>)getIncomingMessages()).basicRemove(otherEnd, msgs);
+ case RoomPackage.PROTOCOL_CLASS__OUTGOING_MESSAGES:
+ return ((InternalEList<?>)getOutgoingMessages()).basicRemove(otherEnd, msgs);
+ case RoomPackage.PROTOCOL_CLASS__REGULAR:
+ return basicSetRegular(null, msgs);
+ case RoomPackage.PROTOCOL_CLASS__CONJUGATE:
+ return basicSetConjugate(null, msgs);
+ case RoomPackage.PROTOCOL_CLASS__SEMANTICS:
+ return basicSetSemantics(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_CLASS__BASE:
+ if (resolve) return getBase();
+ return basicGetBase();
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE1:
+ return getUserCode1();
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE2:
+ return getUserCode2();
+ case RoomPackage.PROTOCOL_CLASS__INCOMING_MESSAGES:
+ return getIncomingMessages();
+ case RoomPackage.PROTOCOL_CLASS__OUTGOING_MESSAGES:
+ return getOutgoingMessages();
+ case RoomPackage.PROTOCOL_CLASS__REGULAR:
+ return getRegular();
+ case RoomPackage.PROTOCOL_CLASS__CONJUGATE:
+ return getConjugate();
+ case RoomPackage.PROTOCOL_CLASS__SEMANTICS:
+ return getSemantics();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_CLASS__BASE:
+ setBase((ProtocolClass)newValue);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE1:
+ setUserCode1((DetailCode)newValue);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE2:
+ setUserCode2((DetailCode)newValue);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__INCOMING_MESSAGES:
+ getIncomingMessages().clear();
+ getIncomingMessages().addAll((Collection<? extends Message>)newValue);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__OUTGOING_MESSAGES:
+ getOutgoingMessages().clear();
+ getOutgoingMessages().addAll((Collection<? extends Message>)newValue);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__REGULAR:
+ setRegular((PortClass)newValue);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__CONJUGATE:
+ setConjugate((PortClass)newValue);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__SEMANTICS:
+ setSemantics((ProtocolSemantics)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_CLASS__BASE:
+ setBase((ProtocolClass)null);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE1:
+ setUserCode1((DetailCode)null);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE2:
+ setUserCode2((DetailCode)null);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__INCOMING_MESSAGES:
+ getIncomingMessages().clear();
+ return;
+ case RoomPackage.PROTOCOL_CLASS__OUTGOING_MESSAGES:
+ getOutgoingMessages().clear();
+ return;
+ case RoomPackage.PROTOCOL_CLASS__REGULAR:
+ setRegular((PortClass)null);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__CONJUGATE:
+ setConjugate((PortClass)null);
+ return;
+ case RoomPackage.PROTOCOL_CLASS__SEMANTICS:
+ setSemantics((ProtocolSemantics)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_CLASS__BASE:
+ return base != null;
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE1:
+ return userCode1 != null;
+ case RoomPackage.PROTOCOL_CLASS__USER_CODE2:
+ return userCode2 != null;
+ case RoomPackage.PROTOCOL_CLASS__INCOMING_MESSAGES:
+ return incomingMessages != null && !incomingMessages.isEmpty();
+ case RoomPackage.PROTOCOL_CLASS__OUTGOING_MESSAGES:
+ return outgoingMessages != null && !outgoingMessages.isEmpty();
+ case RoomPackage.PROTOCOL_CLASS__REGULAR:
+ return regular != null;
+ case RoomPackage.PROTOCOL_CLASS__CONJUGATE:
+ return conjugate != null;
+ case RoomPackage.PROTOCOL_CLASS__SEMANTICS:
+ return semantics != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ProtocolClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolSemanticsImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolSemanticsImpl.java
new file mode 100644
index 000000000..a96319772
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ProtocolSemanticsImpl.java
@@ -0,0 +1,171 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.ProtocolSemantics;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SemanticsRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Protocol Semantics</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ProtocolSemanticsImpl#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProtocolSemanticsImpl extends MinimalEObjectImpl.Container implements ProtocolSemantics
+{
+ /**
+ * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRules()
+ * @generated
+ * @ordered
+ */
+ protected EList<SemanticsRule> rules;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ProtocolSemanticsImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.PROTOCOL_SEMANTICS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SemanticsRule> getRules()
+ {
+ if (rules == null)
+ {
+ rules = new EObjectContainmentEList<SemanticsRule>(SemanticsRule.class, this, RoomPackage.PROTOCOL_SEMANTICS__RULES);
+ }
+ return rules;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_SEMANTICS__RULES:
+ return ((InternalEList<?>)getRules()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_SEMANTICS__RULES:
+ return getRules();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_SEMANTICS__RULES:
+ getRules().clear();
+ getRules().addAll((Collection<? extends SemanticsRule>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_SEMANTICS__RULES:
+ getRules().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.PROTOCOL_SEMANTICS__RULES:
+ return rules != null && !rules.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ProtocolSemanticsImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefSAPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefSAPointImpl.java
new file mode 100644
index 000000000..f065122d3
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefSAPointImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ref SA Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RefSAPointImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RefSAPointImpl extends SAPointImpl implements RefSAPoint
+{
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected ActorContainerRef ref;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RefSAPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.REF_SA_POINT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerRef getRef()
+ {
+ if (ref != null && ref.eIsProxy())
+ {
+ InternalEObject oldRef = (InternalEObject)ref;
+ ref = (ActorContainerRef)eResolveProxy(oldRef);
+ if (ref != oldRef)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.REF_SA_POINT__REF, oldRef, ref));
+ }
+ }
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerRef basicGetRef()
+ {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(ActorContainerRef newRef)
+ {
+ ActorContainerRef oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.REF_SA_POINT__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REF_SA_POINT__REF:
+ if (resolve) return getRef();
+ return basicGetRef();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REF_SA_POINT__REF:
+ setRef((ActorContainerRef)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REF_SA_POINT__REF:
+ setRef((ActorContainerRef)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REF_SA_POINT__REF:
+ return ref != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //RefSAPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefinedStateImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefinedStateImpl.java
new file mode 100644
index 000000000..96e03e2cd
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RefinedStateImpl.java
@@ -0,0 +1,186 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Refined State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RefinedStateImpl#getBase <em>Base</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RefinedStateImpl extends StateImpl implements RefinedState
+{
+ /**
+ * The cached value of the '{@link #getBase() <em>Base</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase()
+ * @generated
+ * @ordered
+ */
+ protected BaseState base;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RefinedStateImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.REFINED_STATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BaseState getBase()
+ {
+ if (base != null && base.eIsProxy())
+ {
+ InternalEObject oldBase = (InternalEObject)base;
+ base = (BaseState)eResolveProxy(oldBase);
+ if (base != oldBase)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.REFINED_STATE__BASE, oldBase, base));
+ }
+ }
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BaseState basicGetBase()
+ {
+ return base;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase(BaseState newBase)
+ {
+ BaseState oldBase = base;
+ base = newBase;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.REFINED_STATE__BASE, oldBase, base));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return getBase()==null? "":getBase().getName();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REFINED_STATE__BASE:
+ if (resolve) return getBase();
+ return basicGetBase();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REFINED_STATE__BASE:
+ setBase((BaseState)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REFINED_STATE__BASE:
+ setBase((BaseState)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.REFINED_STATE__BASE:
+ return base != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //RefinedStateImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RelaySAPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RelaySAPointImpl.java
new file mode 100644
index 000000000..e61a8c7fd
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RelaySAPointImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SPPRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Relay SA Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RelaySAPointImpl#getRelay <em>Relay</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RelaySAPointImpl extends SAPointImpl implements RelaySAPoint
+{
+ /**
+ * The cached value of the '{@link #getRelay() <em>Relay</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRelay()
+ * @generated
+ * @ordered
+ */
+ protected SPPRef relay;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RelaySAPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.RELAY_SA_POINT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef getRelay()
+ {
+ if (relay != null && relay.eIsProxy())
+ {
+ InternalEObject oldRelay = (InternalEObject)relay;
+ relay = (SPPRef)eResolveProxy(oldRelay);
+ if (relay != oldRelay)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.RELAY_SA_POINT__RELAY, oldRelay, relay));
+ }
+ }
+ return relay;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef basicGetRelay()
+ {
+ return relay;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRelay(SPPRef newRelay)
+ {
+ SPPRef oldRelay = relay;
+ relay = newRelay;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.RELAY_SA_POINT__RELAY, oldRelay, relay));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.RELAY_SA_POINT__RELAY:
+ if (resolve) return getRelay();
+ return basicGetRelay();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.RELAY_SA_POINT__RELAY:
+ setRelay((SPPRef)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.RELAY_SA_POINT__RELAY:
+ setRelay((SPPRef)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.RELAY_SA_POINT__RELAY:
+ return relay != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //RelaySAPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomClassImpl.java
new file mode 100644
index 000000000..a63feaf2b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomClassImpl.java
@@ -0,0 +1,181 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomClassImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RoomClassImpl extends MinimalEObjectImpl.Container implements RoomClass
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RoomClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ROOM_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ROOM_CLASS__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_CLASS__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_CLASS__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_CLASS__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_CLASS__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //RoomClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomFactoryImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomFactoryImpl.java
new file mode 100644
index 000000000..199eb1c80
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomFactoryImpl.java
@@ -0,0 +1,959 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.etrice.core.room.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RoomFactoryImpl extends EFactoryImpl implements RoomFactory
+{
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static RoomFactory init()
+ {
+ try
+ {
+ RoomFactory theRoomFactory = (RoomFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/etrice/Room");
+ if (theRoomFactory != null)
+ {
+ return theRoomFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new RoomFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RoomFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case RoomPackage.ROOM_MODEL: return createRoomModel();
+ case RoomPackage.ROOM_CLASS: return createRoomClass();
+ case RoomPackage.STRUCTURE_CLASS: return createStructureClass();
+ case RoomPackage.ACTOR_CONTAINER_CLASS: return createActorContainerClass();
+ case RoomPackage.TYPED_ID: return createTypedID();
+ case RoomPackage.FREE_TYPED_ID: return createFreeTypedID();
+ case RoomPackage.TYPE: return createType();
+ case RoomPackage.FREE_TYPE: return createFreeType();
+ case RoomPackage.DATA_CLASS: return createDataClass();
+ case RoomPackage.ATTRIBUTE: return createAttribute();
+ case RoomPackage.OPERATION: return createOperation();
+ case RoomPackage.PROTOCOL_CLASS: return createProtocolClass();
+ case RoomPackage.MESSAGE: return createMessage();
+ case RoomPackage.PORT_CLASS: return createPortClass();
+ case RoomPackage.MESSAGE_HANDLER: return createMessageHandler();
+ case RoomPackage.PROTOCOL_SEMANTICS: return createProtocolSemantics();
+ case RoomPackage.SEMANTICS_RULE: return createSemanticsRule();
+ case RoomPackage.SEMANTICS_IN_RULE: return createSemanticsInRule();
+ case RoomPackage.SEMANTICS_OUT_RULE: return createSemanticsOutRule();
+ case RoomPackage.ACTOR_CLASS: return createActorClass();
+ case RoomPackage.INTERFACE_ITEM: return createInterfaceItem();
+ case RoomPackage.PORT: return createPort();
+ case RoomPackage.EXTERNAL_PORT: return createExternalPort();
+ case RoomPackage.SAP_REF: return createSAPRef();
+ case RoomPackage.SPP_REF: return createSPPRef();
+ case RoomPackage.SERVICE_IMPLEMENTATION: return createServiceImplementation();
+ case RoomPackage.LOGICAL_SYSTEM: return createLogicalSystem();
+ case RoomPackage.ACTOR_CONTAINER_REF: return createActorContainerRef();
+ case RoomPackage.SUB_SYSTEM_REF: return createSubSystemRef();
+ case RoomPackage.SUB_SYSTEM_CLASS: return createSubSystemClass();
+ case RoomPackage.LOGICAL_THREAD: return createLogicalThread();
+ case RoomPackage.ACTOR_INSTANCE_PATH: return createActorInstancePath();
+ case RoomPackage.BINDING: return createBinding();
+ case RoomPackage.BINDING_END_POINT: return createBindingEndPoint();
+ case RoomPackage.LAYER_CONNECTION: return createLayerConnection();
+ case RoomPackage.SA_POINT: return createSAPoint();
+ case RoomPackage.REF_SA_POINT: return createRefSAPoint();
+ case RoomPackage.RELAY_SA_POINT: return createRelaySAPoint();
+ case RoomPackage.SP_POINT: return createSPPoint();
+ case RoomPackage.ACTOR_REF: return createActorRef();
+ case RoomPackage.STATE_GRAPH_NODE: return createStateGraphNode();
+ case RoomPackage.STATE_GRAPH_ITEM: return createStateGraphItem();
+ case RoomPackage.STATE: return createState();
+ case RoomPackage.STATE_GRAPH: return createStateGraph();
+ case RoomPackage.BASE_STATE: return createBaseState();
+ case RoomPackage.REFINED_STATE: return createRefinedState();
+ case RoomPackage.DETAIL_CODE: return createDetailCode();
+ case RoomPackage.TR_POINT: return createTrPoint();
+ case RoomPackage.TRANSITION_POINT: return createTransitionPoint();
+ case RoomPackage.ENTRY_POINT: return createEntryPoint();
+ case RoomPackage.EXIT_POINT: return createExitPoint();
+ case RoomPackage.CHOICE_POINT: return createChoicePoint();
+ case RoomPackage.TRANSITION: return createTransition();
+ case RoomPackage.NON_INITIAL_TRANSITION: return createNonInitialTransition();
+ case RoomPackage.INITIAL_TRANSITION: return createInitialTransition();
+ case RoomPackage.CONTINUATION_TRANSITION: return createContinuationTransition();
+ case RoomPackage.TRIGGERED_TRANSITION: return createTriggeredTransition();
+ case RoomPackage.CP_BRANCH_TRANSITION: return createCPBranchTransition();
+ case RoomPackage.TRANSITION_TERMINAL: return createTransitionTerminal();
+ case RoomPackage.STATE_TERMINAL: return createStateTerminal();
+ case RoomPackage.TR_POINT_TERMINAL: return createTrPointTerminal();
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL: return createSubStateTrPointTerminal();
+ case RoomPackage.CHOICEPOINT_TERMINAL: return createChoicepointTerminal();
+ case RoomPackage.TRIGGER: return createTrigger();
+ case RoomPackage.MESSAGE_FROM_IF: return createMessageFromIf();
+ case RoomPackage.GUARD: return createGuard();
+ case RoomPackage.IMPORT: return createImport();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case RoomPackage.PRIMITIVE_TYPE:
+ return createPrimitiveTypeFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case RoomPackage.PRIMITIVE_TYPE:
+ return convertPrimitiveTypeToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RoomModel createRoomModel()
+ {
+ RoomModelImpl roomModel = new RoomModelImpl();
+ return roomModel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RoomClass createRoomClass()
+ {
+ RoomClassImpl roomClass = new RoomClassImpl();
+ return roomClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StructureClass createStructureClass()
+ {
+ StructureClassImpl structureClass = new StructureClassImpl();
+ return structureClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerClass createActorContainerClass()
+ {
+ ActorContainerClassImpl actorContainerClass = new ActorContainerClassImpl();
+ return actorContainerClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypedID createTypedID()
+ {
+ TypedIDImpl typedID = new TypedIDImpl();
+ return typedID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FreeTypedID createFreeTypedID()
+ {
+ FreeTypedIDImpl freeTypedID = new FreeTypedIDImpl();
+ return freeTypedID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type createType()
+ {
+ TypeImpl type = new TypeImpl();
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FreeType createFreeType()
+ {
+ FreeTypeImpl freeType = new FreeTypeImpl();
+ return freeType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataClass createDataClass()
+ {
+ DataClassImpl dataClass = new DataClassImpl();
+ return dataClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Attribute createAttribute()
+ {
+ AttributeImpl attribute = new AttributeImpl();
+ return attribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation createOperation()
+ {
+ OperationImpl operation = new OperationImpl();
+ return operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProtocolClass createProtocolClass()
+ {
+ ProtocolClassImpl protocolClass = new ProtocolClassImpl();
+ return protocolClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message createMessage()
+ {
+ MessageImpl message = new MessageImpl();
+ return message;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortClass createPortClass()
+ {
+ PortClassImpl portClass = new PortClassImpl();
+ return portClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MessageHandler createMessageHandler()
+ {
+ MessageHandlerImpl messageHandler = new MessageHandlerImpl();
+ return messageHandler;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProtocolSemantics createProtocolSemantics()
+ {
+ ProtocolSemanticsImpl protocolSemantics = new ProtocolSemanticsImpl();
+ return protocolSemantics;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SemanticsRule createSemanticsRule()
+ {
+ SemanticsRuleImpl semanticsRule = new SemanticsRuleImpl();
+ return semanticsRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SemanticsInRule createSemanticsInRule()
+ {
+ SemanticsInRuleImpl semanticsInRule = new SemanticsInRuleImpl();
+ return semanticsInRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SemanticsOutRule createSemanticsOutRule()
+ {
+ SemanticsOutRuleImpl semanticsOutRule = new SemanticsOutRuleImpl();
+ return semanticsOutRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass createActorClass()
+ {
+ ActorClassImpl actorClass = new ActorClassImpl();
+ return actorClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterfaceItem createInterfaceItem()
+ {
+ InterfaceItemImpl interfaceItem = new InterfaceItemImpl();
+ return interfaceItem;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port createPort()
+ {
+ PortImpl port = new PortImpl();
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalPort createExternalPort()
+ {
+ ExternalPortImpl externalPort = new ExternalPortImpl();
+ return externalPort;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SAPRef createSAPRef()
+ {
+ SAPRefImpl sapRef = new SAPRefImpl();
+ return sapRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef createSPPRef()
+ {
+ SPPRefImpl sppRef = new SPPRefImpl();
+ return sppRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ServiceImplementation createServiceImplementation()
+ {
+ ServiceImplementationImpl serviceImplementation = new ServiceImplementationImpl();
+ return serviceImplementation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LogicalSystem createLogicalSystem()
+ {
+ LogicalSystemImpl logicalSystem = new LogicalSystemImpl();
+ return logicalSystem;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerRef createActorContainerRef()
+ {
+ ActorContainerRefImpl actorContainerRef = new ActorContainerRefImpl();
+ return actorContainerRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubSystemRef createSubSystemRef()
+ {
+ SubSystemRefImpl subSystemRef = new SubSystemRefImpl();
+ return subSystemRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubSystemClass createSubSystemClass()
+ {
+ SubSystemClassImpl subSystemClass = new SubSystemClassImpl();
+ return subSystemClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LogicalThread createLogicalThread()
+ {
+ LogicalThreadImpl logicalThread = new LogicalThreadImpl();
+ return logicalThread;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorInstancePath createActorInstancePath()
+ {
+ ActorInstancePathImpl actorInstancePath = new ActorInstancePathImpl();
+ return actorInstancePath;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Binding createBinding()
+ {
+ BindingImpl binding = new BindingImpl();
+ return binding;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingEndPoint createBindingEndPoint()
+ {
+ BindingEndPointImpl bindingEndPoint = new BindingEndPointImpl();
+ return bindingEndPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerConnection createLayerConnection()
+ {
+ LayerConnectionImpl layerConnection = new LayerConnectionImpl();
+ return layerConnection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SAPoint createSAPoint()
+ {
+ SAPointImpl saPoint = new SAPointImpl();
+ return saPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RefSAPoint createRefSAPoint()
+ {
+ RefSAPointImpl refSAPoint = new RefSAPointImpl();
+ return refSAPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RelaySAPoint createRelaySAPoint()
+ {
+ RelaySAPointImpl relaySAPoint = new RelaySAPointImpl();
+ return relaySAPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPoint createSPPoint()
+ {
+ SPPointImpl spPoint = new SPPointImpl();
+ return spPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorRef createActorRef()
+ {
+ ActorRefImpl actorRef = new ActorRefImpl();
+ return actorRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StateGraphNode createStateGraphNode()
+ {
+ StateGraphNodeImpl stateGraphNode = new StateGraphNodeImpl();
+ return stateGraphNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StateGraphItem createStateGraphItem()
+ {
+ StateGraphItemImpl stateGraphItem = new StateGraphItemImpl();
+ return stateGraphItem;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public State createState()
+ {
+ StateImpl state = new StateImpl();
+ return state;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StateGraph createStateGraph()
+ {
+ StateGraphImpl stateGraph = new StateGraphImpl();
+ return stateGraph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BaseState createBaseState()
+ {
+ BaseStateImpl baseState = new BaseStateImpl();
+ return baseState;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RefinedState createRefinedState()
+ {
+ RefinedStateImpl refinedState = new RefinedStateImpl();
+ return refinedState;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode createDetailCode()
+ {
+ DetailCodeImpl detailCode = new DetailCodeImpl();
+ return detailCode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrPoint createTrPoint()
+ {
+ TrPointImpl trPoint = new TrPointImpl();
+ return trPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionPoint createTransitionPoint()
+ {
+ TransitionPointImpl transitionPoint = new TransitionPointImpl();
+ return transitionPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EntryPoint createEntryPoint()
+ {
+ EntryPointImpl entryPoint = new EntryPointImpl();
+ return entryPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExitPoint createExitPoint()
+ {
+ ExitPointImpl exitPoint = new ExitPointImpl();
+ return exitPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChoicePoint createChoicePoint()
+ {
+ ChoicePointImpl choicePoint = new ChoicePointImpl();
+ return choicePoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Transition createTransition()
+ {
+ TransitionImpl transition = new TransitionImpl();
+ return transition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NonInitialTransition createNonInitialTransition()
+ {
+ NonInitialTransitionImpl nonInitialTransition = new NonInitialTransitionImpl();
+ return nonInitialTransition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InitialTransition createInitialTransition()
+ {
+ InitialTransitionImpl initialTransition = new InitialTransitionImpl();
+ return initialTransition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ContinuationTransition createContinuationTransition()
+ {
+ ContinuationTransitionImpl continuationTransition = new ContinuationTransitionImpl();
+ return continuationTransition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggeredTransition createTriggeredTransition()
+ {
+ TriggeredTransitionImpl triggeredTransition = new TriggeredTransitionImpl();
+ return triggeredTransition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CPBranchTransition createCPBranchTransition()
+ {
+ CPBranchTransitionImpl cpBranchTransition = new CPBranchTransitionImpl();
+ return cpBranchTransition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionTerminal createTransitionTerminal()
+ {
+ TransitionTerminalImpl transitionTerminal = new TransitionTerminalImpl();
+ return transitionTerminal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StateTerminal createStateTerminal()
+ {
+ StateTerminalImpl stateTerminal = new StateTerminalImpl();
+ return stateTerminal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrPointTerminal createTrPointTerminal()
+ {
+ TrPointTerminalImpl trPointTerminal = new TrPointTerminalImpl();
+ return trPointTerminal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubStateTrPointTerminal createSubStateTrPointTerminal()
+ {
+ SubStateTrPointTerminalImpl subStateTrPointTerminal = new SubStateTrPointTerminalImpl();
+ return subStateTrPointTerminal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChoicepointTerminal createChoicepointTerminal()
+ {
+ ChoicepointTerminalImpl choicepointTerminal = new ChoicepointTerminalImpl();
+ return choicepointTerminal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Trigger createTrigger()
+ {
+ TriggerImpl trigger = new TriggerImpl();
+ return trigger;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MessageFromIf createMessageFromIf()
+ {
+ MessageFromIfImpl messageFromIf = new MessageFromIfImpl();
+ return messageFromIf;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Guard createGuard()
+ {
+ GuardImpl guard = new GuardImpl();
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Import createImport()
+ {
+ ImportImpl import_ = new ImportImpl();
+ return import_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimitiveType createPrimitiveTypeFromString(EDataType eDataType, String initialValue)
+ {
+ PrimitiveType result = PrimitiveType.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertPrimitiveTypeToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RoomPackage getRoomPackage()
+ {
+ return (RoomPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static RoomPackage getPackage()
+ {
+ return RoomPackage.eINSTANCE;
+ }
+
+} //RoomFactoryImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomModelImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomModelImpl.java
new file mode 100644
index 000000000..89cde3ed9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomModelImpl.java
@@ -0,0 +1,439 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.Import;
+import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SubSystemClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomModelImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomModelImpl#getImports <em>Imports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomModelImpl#getDataClasses <em>Data Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomModelImpl#getProtocolClasses <em>Protocol Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomModelImpl#getActorClasses <em>Actor Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomModelImpl#getSubSystemClasses <em>Sub System Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.RoomModelImpl#getSystems <em>Systems</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RoomModelImpl extends MinimalEObjectImpl.Container implements RoomModel
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getImports() <em>Imports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getImports()
+ * @generated
+ * @ordered
+ */
+ protected EList<Import> imports;
+
+ /**
+ * The cached value of the '{@link #getDataClasses() <em>Data Classes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDataClasses()
+ * @generated
+ * @ordered
+ */
+ protected EList<DataClass> dataClasses;
+
+ /**
+ * The cached value of the '{@link #getProtocolClasses() <em>Protocol Classes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProtocolClasses()
+ * @generated
+ * @ordered
+ */
+ protected EList<ProtocolClass> protocolClasses;
+
+ /**
+ * The cached value of the '{@link #getActorClasses() <em>Actor Classes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActorClasses()
+ * @generated
+ * @ordered
+ */
+ protected EList<ActorClass> actorClasses;
+
+ /**
+ * The cached value of the '{@link #getSubSystemClasses() <em>Sub System Classes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubSystemClasses()
+ * @generated
+ * @ordered
+ */
+ protected EList<SubSystemClass> subSystemClasses;
+
+ /**
+ * The cached value of the '{@link #getSystems() <em>Systems</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSystems()
+ * @generated
+ * @ordered
+ */
+ protected EList<LogicalSystem> systems;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RoomModelImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.ROOM_MODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.ROOM_MODEL__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Import> getImports()
+ {
+ if (imports == null)
+ {
+ imports = new EObjectContainmentEList<Import>(Import.class, this, RoomPackage.ROOM_MODEL__IMPORTS);
+ }
+ return imports;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DataClass> getDataClasses()
+ {
+ if (dataClasses == null)
+ {
+ dataClasses = new EObjectContainmentEList<DataClass>(DataClass.class, this, RoomPackage.ROOM_MODEL__DATA_CLASSES);
+ }
+ return dataClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ProtocolClass> getProtocolClasses()
+ {
+ if (protocolClasses == null)
+ {
+ protocolClasses = new EObjectContainmentEList<ProtocolClass>(ProtocolClass.class, this, RoomPackage.ROOM_MODEL__PROTOCOL_CLASSES);
+ }
+ return protocolClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ActorClass> getActorClasses()
+ {
+ if (actorClasses == null)
+ {
+ actorClasses = new EObjectContainmentEList<ActorClass>(ActorClass.class, this, RoomPackage.ROOM_MODEL__ACTOR_CLASSES);
+ }
+ return actorClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SubSystemClass> getSubSystemClasses()
+ {
+ if (subSystemClasses == null)
+ {
+ subSystemClasses = new EObjectContainmentEList<SubSystemClass>(SubSystemClass.class, this, RoomPackage.ROOM_MODEL__SUB_SYSTEM_CLASSES);
+ }
+ return subSystemClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LogicalSystem> getSystems()
+ {
+ if (systems == null)
+ {
+ systems = new EObjectContainmentEList<LogicalSystem>(LogicalSystem.class, this, RoomPackage.ROOM_MODEL__SYSTEMS);
+ }
+ return systems;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_MODEL__IMPORTS:
+ return ((InternalEList<?>)getImports()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ROOM_MODEL__DATA_CLASSES:
+ return ((InternalEList<?>)getDataClasses()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ROOM_MODEL__PROTOCOL_CLASSES:
+ return ((InternalEList<?>)getProtocolClasses()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ROOM_MODEL__ACTOR_CLASSES:
+ return ((InternalEList<?>)getActorClasses()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ROOM_MODEL__SUB_SYSTEM_CLASSES:
+ return ((InternalEList<?>)getSubSystemClasses()).basicRemove(otherEnd, msgs);
+ case RoomPackage.ROOM_MODEL__SYSTEMS:
+ return ((InternalEList<?>)getSystems()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_MODEL__NAME:
+ return getName();
+ case RoomPackage.ROOM_MODEL__IMPORTS:
+ return getImports();
+ case RoomPackage.ROOM_MODEL__DATA_CLASSES:
+ return getDataClasses();
+ case RoomPackage.ROOM_MODEL__PROTOCOL_CLASSES:
+ return getProtocolClasses();
+ case RoomPackage.ROOM_MODEL__ACTOR_CLASSES:
+ return getActorClasses();
+ case RoomPackage.ROOM_MODEL__SUB_SYSTEM_CLASSES:
+ return getSubSystemClasses();
+ case RoomPackage.ROOM_MODEL__SYSTEMS:
+ return getSystems();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_MODEL__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.ROOM_MODEL__IMPORTS:
+ getImports().clear();
+ getImports().addAll((Collection<? extends Import>)newValue);
+ return;
+ case RoomPackage.ROOM_MODEL__DATA_CLASSES:
+ getDataClasses().clear();
+ getDataClasses().addAll((Collection<? extends DataClass>)newValue);
+ return;
+ case RoomPackage.ROOM_MODEL__PROTOCOL_CLASSES:
+ getProtocolClasses().clear();
+ getProtocolClasses().addAll((Collection<? extends ProtocolClass>)newValue);
+ return;
+ case RoomPackage.ROOM_MODEL__ACTOR_CLASSES:
+ getActorClasses().clear();
+ getActorClasses().addAll((Collection<? extends ActorClass>)newValue);
+ return;
+ case RoomPackage.ROOM_MODEL__SUB_SYSTEM_CLASSES:
+ getSubSystemClasses().clear();
+ getSubSystemClasses().addAll((Collection<? extends SubSystemClass>)newValue);
+ return;
+ case RoomPackage.ROOM_MODEL__SYSTEMS:
+ getSystems().clear();
+ getSystems().addAll((Collection<? extends LogicalSystem>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_MODEL__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.ROOM_MODEL__IMPORTS:
+ getImports().clear();
+ return;
+ case RoomPackage.ROOM_MODEL__DATA_CLASSES:
+ getDataClasses().clear();
+ return;
+ case RoomPackage.ROOM_MODEL__PROTOCOL_CLASSES:
+ getProtocolClasses().clear();
+ return;
+ case RoomPackage.ROOM_MODEL__ACTOR_CLASSES:
+ getActorClasses().clear();
+ return;
+ case RoomPackage.ROOM_MODEL__SUB_SYSTEM_CLASSES:
+ getSubSystemClasses().clear();
+ return;
+ case RoomPackage.ROOM_MODEL__SYSTEMS:
+ getSystems().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.ROOM_MODEL__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.ROOM_MODEL__IMPORTS:
+ return imports != null && !imports.isEmpty();
+ case RoomPackage.ROOM_MODEL__DATA_CLASSES:
+ return dataClasses != null && !dataClasses.isEmpty();
+ case RoomPackage.ROOM_MODEL__PROTOCOL_CLASSES:
+ return protocolClasses != null && !protocolClasses.isEmpty();
+ case RoomPackage.ROOM_MODEL__ACTOR_CLASSES:
+ return actorClasses != null && !actorClasses.isEmpty();
+ case RoomPackage.ROOM_MODEL__SUB_SYSTEM_CLASSES:
+ return subSystemClasses != null && !subSystemClasses.isEmpty();
+ case RoomPackage.ROOM_MODEL__SYSTEMS:
+ return systems != null && !systems.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //RoomModelImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomPackageImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomPackageImpl.java
new file mode 100644
index 000000000..b49de0abb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/RoomPackageImpl.java
@@ -0,0 +1,3108 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorInstancePath;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.CPBranchTransition;
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.ChoicepointTerminal;
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.EntryPoint;
+import org.eclipse.etrice.core.room.ExitPoint;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.Guard;
+import org.eclipse.etrice.core.room.Import;
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.LogicalThread;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.NonInitialTransition;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.PortClass;
+import org.eclipse.etrice.core.room.PrimitiveType;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.ProtocolSemantics;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SAPoint;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SPPoint;
+import org.eclipse.etrice.core.room.SemanticsInRule;
+import org.eclipse.etrice.core.room.SemanticsOutRule;
+import org.eclipse.etrice.core.room.SemanticsRule;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateGraphItem;
+import org.eclipse.etrice.core.room.StateGraphNode;
+import org.eclipse.etrice.core.room.StateTerminal;
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.core.room.SubStateTrPointTerminal;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+import org.eclipse.etrice.core.room.TrPoint;
+import org.eclipse.etrice.core.room.TrPointTerminal;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TransitionPoint;
+import org.eclipse.etrice.core.room.TransitionTerminal;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RoomPackageImpl extends EPackageImpl implements RoomPackage
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass roomModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass roomClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass structureClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass actorContainerClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typedIDEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass freeTypedIDEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass freeTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass attributeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass operationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass protocolClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass messageEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass portClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass messageHandlerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass protocolSemanticsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass semanticsRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass semanticsInRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass semanticsOutRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass actorClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass interfaceItemEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass portEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass externalPortEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sapRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sppRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass serviceImplementationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass logicalSystemEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass actorContainerRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass subSystemRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass subSystemClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass logicalThreadEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass actorInstancePathEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass bindingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass bindingEndPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerConnectionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass saPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass refSAPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass relaySAPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass spPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass actorRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stateGraphNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stateGraphItemEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stateGraphEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass baseStateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass refinedStateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass detailCodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass trPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass transitionPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass entryPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass exitPointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass choicePointEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass transitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nonInitialTransitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass initialTransitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass continuationTransitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass triggeredTransitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cpBranchTransitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass transitionTerminalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stateTerminalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass trPointTerminalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass subStateTrPointTerminalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass choicepointTerminalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass triggerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass messageFromIfEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass guardEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass importEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum primitiveTypeEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.etrice.core.room.RoomPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private RoomPackageImpl()
+ {
+ super(eNS_URI, RoomFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link RoomPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static RoomPackage init()
+ {
+ if (isInited) return (RoomPackage)EPackage.Registry.INSTANCE.getEPackage(RoomPackage.eNS_URI);
+
+ // Obtain or create and register package
+ RoomPackageImpl theRoomPackage = (RoomPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof RoomPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new RoomPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theRoomPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theRoomPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theRoomPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(RoomPackage.eNS_URI, theRoomPackage);
+ return theRoomPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRoomModel()
+ {
+ return roomModelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRoomModel_Name()
+ {
+ return (EAttribute)roomModelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoomModel_Imports()
+ {
+ return (EReference)roomModelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoomModel_DataClasses()
+ {
+ return (EReference)roomModelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoomModel_ProtocolClasses()
+ {
+ return (EReference)roomModelEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoomModel_ActorClasses()
+ {
+ return (EReference)roomModelEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoomModel_SubSystemClasses()
+ {
+ return (EReference)roomModelEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoomModel_Systems()
+ {
+ return (EReference)roomModelEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRoomClass()
+ {
+ return roomClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRoomClass_Name()
+ {
+ return (EAttribute)roomClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStructureClass()
+ {
+ return structureClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureClass_Bindings()
+ {
+ return (EReference)structureClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureClass_Connections()
+ {
+ return (EReference)structureClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getActorContainerClass()
+ {
+ return actorContainerClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorContainerClass_IfSPPs()
+ {
+ return (EReference)actorContainerClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorContainerClass_ActorRefs()
+ {
+ return (EReference)actorContainerClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTypedID()
+ {
+ return typedIDEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTypedID_Name()
+ {
+ return (EAttribute)typedIDEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTypedID_Type()
+ {
+ return (EReference)typedIDEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFreeTypedID()
+ {
+ return freeTypedIDEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFreeTypedID_Name()
+ {
+ return (EAttribute)freeTypedIDEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFreeTypedID_Type()
+ {
+ return (EReference)freeTypedIDEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getType()
+ {
+ return typeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getType_Prim()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getType_Type()
+ {
+ return (EReference)typeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFreeType()
+ {
+ return freeTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFreeType_Prim()
+ {
+ return (EAttribute)freeTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFreeType_Type()
+ {
+ return (EAttribute)freeTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDataClass()
+ {
+ return dataClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataClass_Base()
+ {
+ return (EReference)dataClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataClass_Imports()
+ {
+ return (EReference)dataClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataClass_Attributes()
+ {
+ return (EReference)dataClassEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataClass_Operations()
+ {
+ return (EReference)dataClassEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAttribute()
+ {
+ return attributeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAttribute_Name()
+ {
+ return (EAttribute)attributeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAttribute_Size()
+ {
+ return (EAttribute)attributeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAttribute_Type()
+ {
+ return (EReference)attributeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOperation()
+ {
+ return operationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getOperation_Name()
+ {
+ return (EAttribute)operationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperation_Arguments()
+ {
+ return (EReference)operationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperation_Returntype()
+ {
+ return (EReference)operationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperation_DetailCode()
+ {
+ return (EReference)operationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getProtocolClass()
+ {
+ return protocolClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_Base()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_UserCode1()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_UserCode2()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_IncomingMessages()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_OutgoingMessages()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_Regular()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_Conjugate()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolClass_Semantics()
+ {
+ return (EReference)protocolClassEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMessage()
+ {
+ return messageEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMessage_Name()
+ {
+ return (EAttribute)messageEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMessage_Arguments()
+ {
+ return (EReference)messageEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPortClass()
+ {
+ return portClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortClass_UserCode()
+ {
+ return (EReference)portClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortClass_Attributes()
+ {
+ return (EReference)portClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortClass_Operations()
+ {
+ return (EReference)portClassEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortClass_MsgHandlers()
+ {
+ return (EReference)portClassEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMessageHandler()
+ {
+ return messageHandlerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMessageHandler_Msg()
+ {
+ return (EReference)messageHandlerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMessageHandler_DetailCode()
+ {
+ return (EReference)messageHandlerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getProtocolSemantics()
+ {
+ return protocolSemanticsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProtocolSemantics_Rules()
+ {
+ return (EReference)protocolSemanticsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSemanticsRule()
+ {
+ return semanticsRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSemanticsRule_Msg()
+ {
+ return (EReference)semanticsRuleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSemanticsRule_FollowUps()
+ {
+ return (EReference)semanticsRuleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSemanticsInRule()
+ {
+ return semanticsInRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSemanticsOutRule()
+ {
+ return semanticsOutRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getActorClass()
+ {
+ return actorClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getActorClass_Abstract()
+ {
+ return (EAttribute)actorClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_Base()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_IfPorts()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_UserCode1()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_UserCode2()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_IntPorts()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_ExtPorts()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_ServiceImplementations()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_StrSAPs()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_Attributes()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_Operations()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorClass_StateMachine()
+ {
+ return (EReference)actorClassEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInterfaceItem()
+ {
+ return interfaceItemEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInterfaceItem_Name()
+ {
+ return (EAttribute)interfaceItemEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInterfaceItem_Protocol()
+ {
+ return (EReference)interfaceItemEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPort()
+ {
+ return portEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPort_Conjugated()
+ {
+ return (EAttribute)portEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPort_Multiplicity()
+ {
+ return (EAttribute)portEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExternalPort()
+ {
+ return externalPortEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExternalPort_Ifport()
+ {
+ return (EReference)externalPortEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSAPRef()
+ {
+ return sapRefEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSPPRef()
+ {
+ return sppRefEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getServiceImplementation()
+ {
+ return serviceImplementationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getServiceImplementation_Spp()
+ {
+ return (EReference)serviceImplementationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLogicalSystem()
+ {
+ return logicalSystemEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLogicalSystem_SubSystems()
+ {
+ return (EReference)logicalSystemEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getActorContainerRef()
+ {
+ return actorContainerRefEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getActorContainerRef_Name()
+ {
+ return (EAttribute)actorContainerRefEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSubSystemRef()
+ {
+ return subSystemRefEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSubSystemRef_Type()
+ {
+ return (EReference)subSystemRefEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSubSystemClass()
+ {
+ return subSystemClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSubSystemClass_RelayPorts()
+ {
+ return (EReference)subSystemClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSubSystemClass_Threads()
+ {
+ return (EReference)subSystemClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLogicalThread()
+ {
+ return logicalThreadEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLogicalThread_Name()
+ {
+ return (EAttribute)logicalThreadEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLogicalThread_Instances()
+ {
+ return (EReference)logicalThreadEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getActorInstancePath()
+ {
+ return actorInstancePathEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getActorInstancePath_Segments()
+ {
+ return (EAttribute)actorInstancePathEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBinding()
+ {
+ return bindingEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBinding_Endpoint1()
+ {
+ return (EReference)bindingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBinding_Endpoint2()
+ {
+ return (EReference)bindingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBindingEndPoint()
+ {
+ return bindingEndPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBindingEndPoint_ActorRef()
+ {
+ return (EReference)bindingEndPointEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBindingEndPoint_Port()
+ {
+ return (EReference)bindingEndPointEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerConnection()
+ {
+ return layerConnectionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerConnection_From()
+ {
+ return (EReference)layerConnectionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerConnection_To()
+ {
+ return (EReference)layerConnectionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSAPoint()
+ {
+ return saPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRefSAPoint()
+ {
+ return refSAPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRefSAPoint_Ref()
+ {
+ return (EReference)refSAPointEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRelaySAPoint()
+ {
+ return relaySAPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRelaySAPoint_Relay()
+ {
+ return (EReference)relaySAPointEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSPPoint()
+ {
+ return spPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSPPoint_Ref()
+ {
+ return (EReference)spPointEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSPPoint_Service()
+ {
+ return (EReference)spPointEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getActorRef()
+ {
+ return actorRefEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorRef_Type()
+ {
+ return (EReference)actorRefEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStateGraphNode()
+ {
+ return stateGraphNodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStateGraphItem()
+ {
+ return stateGraphItemEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getState()
+ {
+ return stateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getState_EntryCode()
+ {
+ return (EReference)stateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getState_ExitCode()
+ {
+ return (EReference)stateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getState_Subgraph()
+ {
+ return (EReference)stateEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStateGraph()
+ {
+ return stateGraphEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStateGraph_States()
+ {
+ return (EReference)stateGraphEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStateGraph_TrPoints()
+ {
+ return (EReference)stateGraphEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStateGraph_ChPoints()
+ {
+ return (EReference)stateGraphEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStateGraph_Transitions()
+ {
+ return (EReference)stateGraphEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBaseState()
+ {
+ return baseStateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getBaseState_Name()
+ {
+ return (EAttribute)baseStateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRefinedState()
+ {
+ return refinedStateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRefinedState_Base()
+ {
+ return (EReference)refinedStateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDetailCode()
+ {
+ return detailCodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDetailCode_Commands()
+ {
+ return (EAttribute)detailCodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTrPoint()
+ {
+ return trPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTrPoint_Name()
+ {
+ return (EAttribute)trPointEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTransitionPoint()
+ {
+ return transitionPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTransitionPoint_Handler()
+ {
+ return (EAttribute)transitionPointEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEntryPoint()
+ {
+ return entryPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExitPoint()
+ {
+ return exitPointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getChoicePoint()
+ {
+ return choicePointEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getChoicePoint_Name()
+ {
+ return (EAttribute)choicePointEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTransition()
+ {
+ return transitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTransition_Name()
+ {
+ return (EAttribute)transitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransition_To()
+ {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransition_Action()
+ {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNonInitialTransition()
+ {
+ return nonInitialTransitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNonInitialTransition_From()
+ {
+ return (EReference)nonInitialTransitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInitialTransition()
+ {
+ return initialTransitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getContinuationTransition()
+ {
+ return continuationTransitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTriggeredTransition()
+ {
+ return triggeredTransitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTriggeredTransition_Triggers()
+ {
+ return (EReference)triggeredTransitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCPBranchTransition()
+ {
+ return cpBranchTransitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCPBranchTransition_Condition()
+ {
+ return (EReference)cpBranchTransitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTransitionTerminal()
+ {
+ return transitionTerminalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStateTerminal()
+ {
+ return stateTerminalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStateTerminal_State()
+ {
+ return (EReference)stateTerminalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTrPointTerminal()
+ {
+ return trPointTerminalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTrPointTerminal_TrPoint()
+ {
+ return (EReference)trPointTerminalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSubStateTrPointTerminal()
+ {
+ return subStateTrPointTerminalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSubStateTrPointTerminal_TrPoint()
+ {
+ return (EReference)subStateTrPointTerminalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSubStateTrPointTerminal_State()
+ {
+ return (EReference)subStateTrPointTerminalEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getChoicepointTerminal()
+ {
+ return choicepointTerminalEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getChoicepointTerminal_Cp()
+ {
+ return (EReference)choicepointTerminalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTrigger()
+ {
+ return triggerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTrigger_MsgFromIfPairs()
+ {
+ return (EReference)triggerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTrigger_Guard()
+ {
+ return (EReference)triggerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMessageFromIf()
+ {
+ return messageFromIfEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMessageFromIf_Message()
+ {
+ return (EReference)messageFromIfEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMessageFromIf_From()
+ {
+ return (EReference)messageFromIfEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGuard()
+ {
+ return guardEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGuard_Guard()
+ {
+ return (EReference)guardEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getImport()
+ {
+ return importEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getImport_ImportedNamespace()
+ {
+ return (EAttribute)importEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getPrimitiveType()
+ {
+ return primitiveTypeEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RoomFactory getRoomFactory()
+ {
+ return (RoomFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ roomModelEClass = createEClass(ROOM_MODEL);
+ createEAttribute(roomModelEClass, ROOM_MODEL__NAME);
+ createEReference(roomModelEClass, ROOM_MODEL__IMPORTS);
+ createEReference(roomModelEClass, ROOM_MODEL__DATA_CLASSES);
+ createEReference(roomModelEClass, ROOM_MODEL__PROTOCOL_CLASSES);
+ createEReference(roomModelEClass, ROOM_MODEL__ACTOR_CLASSES);
+ createEReference(roomModelEClass, ROOM_MODEL__SUB_SYSTEM_CLASSES);
+ createEReference(roomModelEClass, ROOM_MODEL__SYSTEMS);
+
+ roomClassEClass = createEClass(ROOM_CLASS);
+ createEAttribute(roomClassEClass, ROOM_CLASS__NAME);
+
+ structureClassEClass = createEClass(STRUCTURE_CLASS);
+ createEReference(structureClassEClass, STRUCTURE_CLASS__BINDINGS);
+ createEReference(structureClassEClass, STRUCTURE_CLASS__CONNECTIONS);
+
+ actorContainerClassEClass = createEClass(ACTOR_CONTAINER_CLASS);
+ createEReference(actorContainerClassEClass, ACTOR_CONTAINER_CLASS__IF_SP_PS);
+ createEReference(actorContainerClassEClass, ACTOR_CONTAINER_CLASS__ACTOR_REFS);
+
+ typedIDEClass = createEClass(TYPED_ID);
+ createEAttribute(typedIDEClass, TYPED_ID__NAME);
+ createEReference(typedIDEClass, TYPED_ID__TYPE);
+
+ freeTypedIDEClass = createEClass(FREE_TYPED_ID);
+ createEAttribute(freeTypedIDEClass, FREE_TYPED_ID__NAME);
+ createEReference(freeTypedIDEClass, FREE_TYPED_ID__TYPE);
+
+ typeEClass = createEClass(TYPE);
+ createEAttribute(typeEClass, TYPE__PRIM);
+ createEReference(typeEClass, TYPE__TYPE);
+
+ freeTypeEClass = createEClass(FREE_TYPE);
+ createEAttribute(freeTypeEClass, FREE_TYPE__PRIM);
+ createEAttribute(freeTypeEClass, FREE_TYPE__TYPE);
+
+ dataClassEClass = createEClass(DATA_CLASS);
+ createEReference(dataClassEClass, DATA_CLASS__BASE);
+ createEReference(dataClassEClass, DATA_CLASS__IMPORTS);
+ createEReference(dataClassEClass, DATA_CLASS__ATTRIBUTES);
+ createEReference(dataClassEClass, DATA_CLASS__OPERATIONS);
+
+ attributeEClass = createEClass(ATTRIBUTE);
+ createEAttribute(attributeEClass, ATTRIBUTE__NAME);
+ createEAttribute(attributeEClass, ATTRIBUTE__SIZE);
+ createEReference(attributeEClass, ATTRIBUTE__TYPE);
+
+ operationEClass = createEClass(OPERATION);
+ createEAttribute(operationEClass, OPERATION__NAME);
+ createEReference(operationEClass, OPERATION__ARGUMENTS);
+ createEReference(operationEClass, OPERATION__RETURNTYPE);
+ createEReference(operationEClass, OPERATION__DETAIL_CODE);
+
+ protocolClassEClass = createEClass(PROTOCOL_CLASS);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__BASE);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__USER_CODE1);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__USER_CODE2);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__INCOMING_MESSAGES);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__OUTGOING_MESSAGES);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__REGULAR);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__CONJUGATE);
+ createEReference(protocolClassEClass, PROTOCOL_CLASS__SEMANTICS);
+
+ messageEClass = createEClass(MESSAGE);
+ createEAttribute(messageEClass, MESSAGE__NAME);
+ createEReference(messageEClass, MESSAGE__ARGUMENTS);
+
+ portClassEClass = createEClass(PORT_CLASS);
+ createEReference(portClassEClass, PORT_CLASS__USER_CODE);
+ createEReference(portClassEClass, PORT_CLASS__ATTRIBUTES);
+ createEReference(portClassEClass, PORT_CLASS__OPERATIONS);
+ createEReference(portClassEClass, PORT_CLASS__MSG_HANDLERS);
+
+ messageHandlerEClass = createEClass(MESSAGE_HANDLER);
+ createEReference(messageHandlerEClass, MESSAGE_HANDLER__MSG);
+ createEReference(messageHandlerEClass, MESSAGE_HANDLER__DETAIL_CODE);
+
+ protocolSemanticsEClass = createEClass(PROTOCOL_SEMANTICS);
+ createEReference(protocolSemanticsEClass, PROTOCOL_SEMANTICS__RULES);
+
+ semanticsRuleEClass = createEClass(SEMANTICS_RULE);
+ createEReference(semanticsRuleEClass, SEMANTICS_RULE__MSG);
+ createEReference(semanticsRuleEClass, SEMANTICS_RULE__FOLLOW_UPS);
+
+ semanticsInRuleEClass = createEClass(SEMANTICS_IN_RULE);
+
+ semanticsOutRuleEClass = createEClass(SEMANTICS_OUT_RULE);
+
+ actorClassEClass = createEClass(ACTOR_CLASS);
+ createEAttribute(actorClassEClass, ACTOR_CLASS__ABSTRACT);
+ createEReference(actorClassEClass, ACTOR_CLASS__BASE);
+ createEReference(actorClassEClass, ACTOR_CLASS__IF_PORTS);
+ createEReference(actorClassEClass, ACTOR_CLASS__USER_CODE1);
+ createEReference(actorClassEClass, ACTOR_CLASS__USER_CODE2);
+ createEReference(actorClassEClass, ACTOR_CLASS__INT_PORTS);
+ createEReference(actorClassEClass, ACTOR_CLASS__EXT_PORTS);
+ createEReference(actorClassEClass, ACTOR_CLASS__SERVICE_IMPLEMENTATIONS);
+ createEReference(actorClassEClass, ACTOR_CLASS__STR_SA_PS);
+ createEReference(actorClassEClass, ACTOR_CLASS__ATTRIBUTES);
+ createEReference(actorClassEClass, ACTOR_CLASS__OPERATIONS);
+ createEReference(actorClassEClass, ACTOR_CLASS__STATE_MACHINE);
+
+ interfaceItemEClass = createEClass(INTERFACE_ITEM);
+ createEAttribute(interfaceItemEClass, INTERFACE_ITEM__NAME);
+ createEReference(interfaceItemEClass, INTERFACE_ITEM__PROTOCOL);
+
+ portEClass = createEClass(PORT);
+ createEAttribute(portEClass, PORT__CONJUGATED);
+ createEAttribute(portEClass, PORT__MULTIPLICITY);
+
+ externalPortEClass = createEClass(EXTERNAL_PORT);
+ createEReference(externalPortEClass, EXTERNAL_PORT__IFPORT);
+
+ sapRefEClass = createEClass(SAP_REF);
+
+ sppRefEClass = createEClass(SPP_REF);
+
+ serviceImplementationEClass = createEClass(SERVICE_IMPLEMENTATION);
+ createEReference(serviceImplementationEClass, SERVICE_IMPLEMENTATION__SPP);
+
+ logicalSystemEClass = createEClass(LOGICAL_SYSTEM);
+ createEReference(logicalSystemEClass, LOGICAL_SYSTEM__SUB_SYSTEMS);
+
+ actorContainerRefEClass = createEClass(ACTOR_CONTAINER_REF);
+ createEAttribute(actorContainerRefEClass, ACTOR_CONTAINER_REF__NAME);
+
+ subSystemRefEClass = createEClass(SUB_SYSTEM_REF);
+ createEReference(subSystemRefEClass, SUB_SYSTEM_REF__TYPE);
+
+ subSystemClassEClass = createEClass(SUB_SYSTEM_CLASS);
+ createEReference(subSystemClassEClass, SUB_SYSTEM_CLASS__RELAY_PORTS);
+ createEReference(subSystemClassEClass, SUB_SYSTEM_CLASS__THREADS);
+
+ logicalThreadEClass = createEClass(LOGICAL_THREAD);
+ createEAttribute(logicalThreadEClass, LOGICAL_THREAD__NAME);
+ createEReference(logicalThreadEClass, LOGICAL_THREAD__INSTANCES);
+
+ actorInstancePathEClass = createEClass(ACTOR_INSTANCE_PATH);
+ createEAttribute(actorInstancePathEClass, ACTOR_INSTANCE_PATH__SEGMENTS);
+
+ bindingEClass = createEClass(BINDING);
+ createEReference(bindingEClass, BINDING__ENDPOINT1);
+ createEReference(bindingEClass, BINDING__ENDPOINT2);
+
+ bindingEndPointEClass = createEClass(BINDING_END_POINT);
+ createEReference(bindingEndPointEClass, BINDING_END_POINT__ACTOR_REF);
+ createEReference(bindingEndPointEClass, BINDING_END_POINT__PORT);
+
+ layerConnectionEClass = createEClass(LAYER_CONNECTION);
+ createEReference(layerConnectionEClass, LAYER_CONNECTION__FROM);
+ createEReference(layerConnectionEClass, LAYER_CONNECTION__TO);
+
+ saPointEClass = createEClass(SA_POINT);
+
+ refSAPointEClass = createEClass(REF_SA_POINT);
+ createEReference(refSAPointEClass, REF_SA_POINT__REF);
+
+ relaySAPointEClass = createEClass(RELAY_SA_POINT);
+ createEReference(relaySAPointEClass, RELAY_SA_POINT__RELAY);
+
+ spPointEClass = createEClass(SP_POINT);
+ createEReference(spPointEClass, SP_POINT__REF);
+ createEReference(spPointEClass, SP_POINT__SERVICE);
+
+ actorRefEClass = createEClass(ACTOR_REF);
+ createEReference(actorRefEClass, ACTOR_REF__TYPE);
+
+ stateGraphNodeEClass = createEClass(STATE_GRAPH_NODE);
+
+ stateGraphItemEClass = createEClass(STATE_GRAPH_ITEM);
+
+ stateEClass = createEClass(STATE);
+ createEReference(stateEClass, STATE__ENTRY_CODE);
+ createEReference(stateEClass, STATE__EXIT_CODE);
+ createEReference(stateEClass, STATE__SUBGRAPH);
+
+ stateGraphEClass = createEClass(STATE_GRAPH);
+ createEReference(stateGraphEClass, STATE_GRAPH__STATES);
+ createEReference(stateGraphEClass, STATE_GRAPH__TR_POINTS);
+ createEReference(stateGraphEClass, STATE_GRAPH__CH_POINTS);
+ createEReference(stateGraphEClass, STATE_GRAPH__TRANSITIONS);
+
+ baseStateEClass = createEClass(BASE_STATE);
+ createEAttribute(baseStateEClass, BASE_STATE__NAME);
+
+ refinedStateEClass = createEClass(REFINED_STATE);
+ createEReference(refinedStateEClass, REFINED_STATE__BASE);
+
+ detailCodeEClass = createEClass(DETAIL_CODE);
+ createEAttribute(detailCodeEClass, DETAIL_CODE__COMMANDS);
+
+ trPointEClass = createEClass(TR_POINT);
+ createEAttribute(trPointEClass, TR_POINT__NAME);
+
+ transitionPointEClass = createEClass(TRANSITION_POINT);
+ createEAttribute(transitionPointEClass, TRANSITION_POINT__HANDLER);
+
+ entryPointEClass = createEClass(ENTRY_POINT);
+
+ exitPointEClass = createEClass(EXIT_POINT);
+
+ choicePointEClass = createEClass(CHOICE_POINT);
+ createEAttribute(choicePointEClass, CHOICE_POINT__NAME);
+
+ transitionEClass = createEClass(TRANSITION);
+ createEAttribute(transitionEClass, TRANSITION__NAME);
+ createEReference(transitionEClass, TRANSITION__TO);
+ createEReference(transitionEClass, TRANSITION__ACTION);
+
+ nonInitialTransitionEClass = createEClass(NON_INITIAL_TRANSITION);
+ createEReference(nonInitialTransitionEClass, NON_INITIAL_TRANSITION__FROM);
+
+ initialTransitionEClass = createEClass(INITIAL_TRANSITION);
+
+ continuationTransitionEClass = createEClass(CONTINUATION_TRANSITION);
+
+ triggeredTransitionEClass = createEClass(TRIGGERED_TRANSITION);
+ createEReference(triggeredTransitionEClass, TRIGGERED_TRANSITION__TRIGGERS);
+
+ cpBranchTransitionEClass = createEClass(CP_BRANCH_TRANSITION);
+ createEReference(cpBranchTransitionEClass, CP_BRANCH_TRANSITION__CONDITION);
+
+ transitionTerminalEClass = createEClass(TRANSITION_TERMINAL);
+
+ stateTerminalEClass = createEClass(STATE_TERMINAL);
+ createEReference(stateTerminalEClass, STATE_TERMINAL__STATE);
+
+ trPointTerminalEClass = createEClass(TR_POINT_TERMINAL);
+ createEReference(trPointTerminalEClass, TR_POINT_TERMINAL__TR_POINT);
+
+ subStateTrPointTerminalEClass = createEClass(SUB_STATE_TR_POINT_TERMINAL);
+ createEReference(subStateTrPointTerminalEClass, SUB_STATE_TR_POINT_TERMINAL__TR_POINT);
+ createEReference(subStateTrPointTerminalEClass, SUB_STATE_TR_POINT_TERMINAL__STATE);
+
+ choicepointTerminalEClass = createEClass(CHOICEPOINT_TERMINAL);
+ createEReference(choicepointTerminalEClass, CHOICEPOINT_TERMINAL__CP);
+
+ triggerEClass = createEClass(TRIGGER);
+ createEReference(triggerEClass, TRIGGER__MSG_FROM_IF_PAIRS);
+ createEReference(triggerEClass, TRIGGER__GUARD);
+
+ messageFromIfEClass = createEClass(MESSAGE_FROM_IF);
+ createEReference(messageFromIfEClass, MESSAGE_FROM_IF__MESSAGE);
+ createEReference(messageFromIfEClass, MESSAGE_FROM_IF__FROM);
+
+ guardEClass = createEClass(GUARD);
+ createEReference(guardEClass, GUARD__GUARD);
+
+ importEClass = createEClass(IMPORT);
+ createEAttribute(importEClass, IMPORT__IMPORTED_NAMESPACE);
+
+ // Create enums
+ primitiveTypeEEnum = createEEnum(PRIMITIVE_TYPE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ structureClassEClass.getESuperTypes().add(this.getRoomClass());
+ actorContainerClassEClass.getESuperTypes().add(this.getStructureClass());
+ dataClassEClass.getESuperTypes().add(this.getRoomClass());
+ protocolClassEClass.getESuperTypes().add(this.getRoomClass());
+ semanticsInRuleEClass.getESuperTypes().add(this.getSemanticsRule());
+ semanticsOutRuleEClass.getESuperTypes().add(this.getSemanticsRule());
+ actorClassEClass.getESuperTypes().add(this.getActorContainerClass());
+ portEClass.getESuperTypes().add(this.getInterfaceItem());
+ sapRefEClass.getESuperTypes().add(this.getInterfaceItem());
+ sppRefEClass.getESuperTypes().add(this.getInterfaceItem());
+ logicalSystemEClass.getESuperTypes().add(this.getStructureClass());
+ subSystemRefEClass.getESuperTypes().add(this.getActorContainerRef());
+ subSystemClassEClass.getESuperTypes().add(this.getActorContainerClass());
+ refSAPointEClass.getESuperTypes().add(this.getSAPoint());
+ relaySAPointEClass.getESuperTypes().add(this.getSAPoint());
+ actorRefEClass.getESuperTypes().add(this.getActorContainerRef());
+ stateGraphNodeEClass.getESuperTypes().add(this.getStateGraphItem());
+ stateEClass.getESuperTypes().add(this.getStateGraphNode());
+ baseStateEClass.getESuperTypes().add(this.getState());
+ refinedStateEClass.getESuperTypes().add(this.getState());
+ trPointEClass.getESuperTypes().add(this.getStateGraphNode());
+ transitionPointEClass.getESuperTypes().add(this.getTrPoint());
+ entryPointEClass.getESuperTypes().add(this.getTrPoint());
+ exitPointEClass.getESuperTypes().add(this.getTrPoint());
+ choicePointEClass.getESuperTypes().add(this.getStateGraphNode());
+ transitionEClass.getESuperTypes().add(this.getStateGraphItem());
+ nonInitialTransitionEClass.getESuperTypes().add(this.getTransition());
+ initialTransitionEClass.getESuperTypes().add(this.getTransition());
+ continuationTransitionEClass.getESuperTypes().add(this.getNonInitialTransition());
+ triggeredTransitionEClass.getESuperTypes().add(this.getNonInitialTransition());
+ cpBranchTransitionEClass.getESuperTypes().add(this.getNonInitialTransition());
+ stateTerminalEClass.getESuperTypes().add(this.getTransitionTerminal());
+ trPointTerminalEClass.getESuperTypes().add(this.getTransitionTerminal());
+ subStateTrPointTerminalEClass.getESuperTypes().add(this.getTransitionTerminal());
+ choicepointTerminalEClass.getESuperTypes().add(this.getTransitionTerminal());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(roomModelEClass, RoomModel.class, "RoomModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getRoomModel_Name(), ecorePackage.getEString(), "name", null, 0, 1, RoomModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoomModel_Imports(), this.getImport(), null, "imports", null, 0, -1, RoomModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoomModel_DataClasses(), this.getDataClass(), null, "dataClasses", null, 0, -1, RoomModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoomModel_ProtocolClasses(), this.getProtocolClass(), null, "protocolClasses", null, 0, -1, RoomModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoomModel_ActorClasses(), this.getActorClass(), null, "actorClasses", null, 0, -1, RoomModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoomModel_SubSystemClasses(), this.getSubSystemClass(), null, "subSystemClasses", null, 0, -1, RoomModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoomModel_Systems(), this.getLogicalSystem(), null, "systems", null, 0, -1, RoomModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(roomClassEClass, RoomClass.class, "RoomClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getRoomClass_Name(), ecorePackage.getEString(), "name", null, 0, 1, RoomClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(structureClassEClass, StructureClass.class, "StructureClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getStructureClass_Bindings(), this.getBinding(), null, "bindings", null, 0, -1, StructureClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureClass_Connections(), this.getLayerConnection(), null, "connections", null, 0, -1, StructureClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(actorContainerClassEClass, ActorContainerClass.class, "ActorContainerClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getActorContainerClass_IfSPPs(), this.getSPPRef(), null, "ifSPPs", null, 0, -1, ActorContainerClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorContainerClass_ActorRefs(), this.getActorRef(), null, "actorRefs", null, 0, -1, ActorContainerClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(typedIDEClass, TypedID.class, "TypedID", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTypedID_Name(), ecorePackage.getEString(), "name", null, 0, 1, TypedID.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTypedID_Type(), this.getType(), null, "type", null, 0, 1, TypedID.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(freeTypedIDEClass, FreeTypedID.class, "FreeTypedID", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFreeTypedID_Name(), ecorePackage.getEString(), "name", null, 0, 1, FreeTypedID.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFreeTypedID_Type(), this.getFreeType(), null, "type", null, 0, 1, FreeTypedID.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(typeEClass, Type.class, "Type", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getType_Prim(), this.getPrimitiveType(), "prim", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getType_Type(), this.getDataClass(), null, "type", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(freeTypeEClass, FreeType.class, "FreeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFreeType_Prim(), this.getPrimitiveType(), "prim", null, 0, 1, FreeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFreeType_Type(), ecorePackage.getEString(), "type", null, 0, 1, FreeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(dataClassEClass, DataClass.class, "DataClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDataClass_Base(), this.getDataClass(), null, "base", null, 0, 1, DataClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataClass_Imports(), this.getImport(), null, "imports", null, 0, -1, DataClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataClass_Attributes(), this.getAttribute(), null, "attributes", null, 0, -1, DataClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataClass_Operations(), this.getOperation(), null, "operations", null, 0, -1, DataClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(attributeEClass, Attribute.class, "Attribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAttribute_Name(), ecorePackage.getEString(), "name", null, 0, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAttribute_Size(), ecorePackage.getEInt(), "size", null, 0, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAttribute_Type(), this.getType(), null, "type", null, 0, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(operationEClass, Operation.class, "Operation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getOperation_Name(), ecorePackage.getEString(), "name", null, 0, 1, Operation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getOperation_Arguments(), this.getFreeTypedID(), null, "arguments", null, 0, -1, Operation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getOperation_Returntype(), this.getFreeType(), null, "returntype", null, 0, 1, Operation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getOperation_DetailCode(), this.getDetailCode(), null, "detailCode", null, 0, 1, Operation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(protocolClassEClass, ProtocolClass.class, "ProtocolClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getProtocolClass_Base(), this.getProtocolClass(), null, "base", null, 0, 1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProtocolClass_UserCode1(), this.getDetailCode(), null, "userCode1", null, 0, 1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProtocolClass_UserCode2(), this.getDetailCode(), null, "userCode2", null, 0, 1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProtocolClass_IncomingMessages(), this.getMessage(), null, "incomingMessages", null, 0, -1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProtocolClass_OutgoingMessages(), this.getMessage(), null, "outgoingMessages", null, 0, -1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProtocolClass_Regular(), this.getPortClass(), null, "regular", null, 0, 1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProtocolClass_Conjugate(), this.getPortClass(), null, "conjugate", null, 0, 1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProtocolClass_Semantics(), this.getProtocolSemantics(), null, "semantics", null, 0, 1, ProtocolClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(messageEClass, Message.class, "Message", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getMessage_Name(), ecorePackage.getEString(), "name", null, 0, 1, Message.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getMessage_Arguments(), this.getTypedID(), null, "arguments", null, 0, -1, Message.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(portClassEClass, PortClass.class, "PortClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPortClass_UserCode(), this.getDetailCode(), null, "userCode", null, 0, 1, PortClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPortClass_Attributes(), this.getAttribute(), null, "attributes", null, 0, -1, PortClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPortClass_Operations(), this.getOperation(), null, "operations", null, 0, -1, PortClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPortClass_MsgHandlers(), this.getMessageHandler(), null, "msgHandlers", null, 0, -1, PortClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(messageHandlerEClass, MessageHandler.class, "MessageHandler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMessageHandler_Msg(), this.getMessage(), null, "msg", null, 0, 1, MessageHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getMessageHandler_DetailCode(), this.getDetailCode(), null, "detailCode", null, 0, 1, MessageHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(protocolSemanticsEClass, ProtocolSemantics.class, "ProtocolSemantics", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getProtocolSemantics_Rules(), this.getSemanticsRule(), null, "rules", null, 0, -1, ProtocolSemantics.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(semanticsRuleEClass, SemanticsRule.class, "SemanticsRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSemanticsRule_Msg(), this.getMessage(), null, "msg", null, 0, 1, SemanticsRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSemanticsRule_FollowUps(), this.getSemanticsRule(), null, "followUps", null, 0, -1, SemanticsRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(semanticsInRuleEClass, SemanticsInRule.class, "SemanticsInRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(semanticsOutRuleEClass, SemanticsOutRule.class, "SemanticsOutRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(actorClassEClass, ActorClass.class, "ActorClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getActorClass_Abstract(), ecorePackage.getEBoolean(), "abstract", null, 0, 1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_Base(), this.getActorClass(), null, "base", null, 0, 1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_IfPorts(), this.getPort(), null, "ifPorts", null, 0, -1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_UserCode1(), this.getDetailCode(), null, "userCode1", null, 0, 1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_UserCode2(), this.getDetailCode(), null, "userCode2", null, 0, 1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_IntPorts(), this.getPort(), null, "intPorts", null, 0, -1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_ExtPorts(), this.getExternalPort(), null, "extPorts", null, 0, -1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_ServiceImplementations(), this.getServiceImplementation(), null, "serviceImplementations", null, 0, -1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_StrSAPs(), this.getSAPRef(), null, "strSAPs", null, 0, -1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_Attributes(), this.getAttribute(), null, "attributes", null, 0, -1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_Operations(), this.getOperation(), null, "operations", null, 0, -1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActorClass_StateMachine(), this.getStateGraph(), null, "stateMachine", null, 0, 1, ActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(interfaceItemEClass, InterfaceItem.class, "InterfaceItem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getInterfaceItem_Name(), ecorePackage.getEString(), "name", null, 0, 1, InterfaceItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getInterfaceItem_Protocol(), this.getProtocolClass(), null, "protocol", null, 0, 1, InterfaceItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(portEClass, Port.class, "Port", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPort_Conjugated(), ecorePackage.getEBoolean(), "conjugated", null, 0, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPort_Multiplicity(), ecorePackage.getEInt(), "multiplicity", "1", 0, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(externalPortEClass, ExternalPort.class, "ExternalPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExternalPort_Ifport(), this.getPort(), null, "ifport", null, 0, 1, ExternalPort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(sapRefEClass, SAPRef.class, "SAPRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(sppRefEClass, SPPRef.class, "SPPRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(serviceImplementationEClass, ServiceImplementation.class, "ServiceImplementation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getServiceImplementation_Spp(), this.getSPPRef(), null, "spp", null, 0, 1, ServiceImplementation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(logicalSystemEClass, LogicalSystem.class, "LogicalSystem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLogicalSystem_SubSystems(), this.getSubSystemRef(), null, "subSystems", null, 0, -1, LogicalSystem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(actorContainerRefEClass, ActorContainerRef.class, "ActorContainerRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getActorContainerRef_Name(), ecorePackage.getEString(), "name", null, 0, 1, ActorContainerRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(subSystemRefEClass, SubSystemRef.class, "SubSystemRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSubSystemRef_Type(), this.getSubSystemClass(), null, "type", null, 0, 1, SubSystemRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(subSystemClassEClass, SubSystemClass.class, "SubSystemClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSubSystemClass_RelayPorts(), this.getPort(), null, "relayPorts", null, 0, -1, SubSystemClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSubSystemClass_Threads(), this.getLogicalThread(), null, "threads", null, 0, -1, SubSystemClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(logicalThreadEClass, LogicalThread.class, "LogicalThread", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getLogicalThread_Name(), ecorePackage.getEString(), "name", null, 0, 1, LogicalThread.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getLogicalThread_Instances(), this.getActorInstancePath(), null, "instances", null, 0, -1, LogicalThread.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(actorInstancePathEClass, ActorInstancePath.class, "ActorInstancePath", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getActorInstancePath_Segments(), ecorePackage.getEString(), "segments", null, 0, -1, ActorInstancePath.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(bindingEClass, Binding.class, "Binding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getBinding_Endpoint1(), this.getBindingEndPoint(), null, "endpoint1", null, 0, 1, Binding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getBinding_Endpoint2(), this.getBindingEndPoint(), null, "endpoint2", null, 0, 1, Binding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(bindingEndPointEClass, BindingEndPoint.class, "BindingEndPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getBindingEndPoint_ActorRef(), this.getActorContainerRef(), null, "actorRef", null, 0, 1, BindingEndPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getBindingEndPoint_Port(), this.getPort(), null, "port", null, 0, 1, BindingEndPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(layerConnectionEClass, LayerConnection.class, "LayerConnection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerConnection_From(), this.getSAPoint(), null, "from", null, 0, 1, LayerConnection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getLayerConnection_To(), this.getSPPoint(), null, "to", null, 0, 1, LayerConnection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(saPointEClass, SAPoint.class, "SAPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(refSAPointEClass, RefSAPoint.class, "RefSAPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRefSAPoint_Ref(), this.getActorContainerRef(), null, "ref", null, 0, 1, RefSAPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(relaySAPointEClass, RelaySAPoint.class, "RelaySAPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRelaySAPoint_Relay(), this.getSPPRef(), null, "relay", null, 0, 1, RelaySAPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(spPointEClass, SPPoint.class, "SPPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSPPoint_Ref(), this.getActorContainerRef(), null, "ref", null, 0, 1, SPPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSPPoint_Service(), this.getSPPRef(), null, "service", null, 0, 1, SPPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(actorRefEClass, ActorRef.class, "ActorRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getActorRef_Type(), this.getActorClass(), null, "type", null, 0, 1, ActorRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(stateGraphNodeEClass, StateGraphNode.class, "StateGraphNode", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(stateGraphItemEClass, StateGraphItem.class, "StateGraphItem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getState_EntryCode(), this.getDetailCode(), null, "entryCode", null, 0, 1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getState_ExitCode(), this.getDetailCode(), null, "exitCode", null, 0, 1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getState_Subgraph(), this.getStateGraph(), null, "subgraph", null, 0, 1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(stateGraphEClass, StateGraph.class, "StateGraph", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getStateGraph_States(), this.getState(), null, "states", null, 0, -1, StateGraph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStateGraph_TrPoints(), this.getTrPoint(), null, "trPoints", null, 0, -1, StateGraph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStateGraph_ChPoints(), this.getChoicePoint(), null, "chPoints", null, 0, -1, StateGraph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStateGraph_Transitions(), this.getTransition(), null, "transitions", null, 0, -1, StateGraph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(baseStateEClass, BaseState.class, "BaseState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getBaseState_Name(), ecorePackage.getEString(), "name", null, 0, 1, BaseState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(refinedStateEClass, RefinedState.class, "RefinedState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRefinedState_Base(), this.getBaseState(), null, "base", null, 0, 1, RefinedState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ addEOperation(refinedStateEClass, ecorePackage.getEString(), "getName", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(detailCodeEClass, DetailCode.class, "DetailCode", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDetailCode_Commands(), ecorePackage.getEString(), "commands", null, 0, -1, DetailCode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(trPointEClass, TrPoint.class, "TrPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTrPoint_Name(), ecorePackage.getEString(), "name", null, 0, 1, TrPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(transitionPointEClass, TransitionPoint.class, "TransitionPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTransitionPoint_Handler(), ecorePackage.getEBoolean(), "handler", null, 0, 1, TransitionPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(entryPointEClass, EntryPoint.class, "EntryPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(exitPointEClass, ExitPoint.class, "ExitPoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(choicePointEClass, ChoicePoint.class, "ChoicePoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getChoicePoint_Name(), ecorePackage.getEString(), "name", null, 0, 1, ChoicePoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTransition_Name(), ecorePackage.getEString(), "name", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_To(), this.getTransitionTerminal(), null, "to", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_Action(), this.getDetailCode(), null, "action", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(nonInitialTransitionEClass, NonInitialTransition.class, "NonInitialTransition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getNonInitialTransition_From(), this.getTransitionTerminal(), null, "from", null, 0, 1, NonInitialTransition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(initialTransitionEClass, InitialTransition.class, "InitialTransition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(continuationTransitionEClass, ContinuationTransition.class, "ContinuationTransition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(triggeredTransitionEClass, TriggeredTransition.class, "TriggeredTransition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTriggeredTransition_Triggers(), this.getTrigger(), null, "triggers", null, 0, -1, TriggeredTransition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(cpBranchTransitionEClass, CPBranchTransition.class, "CPBranchTransition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCPBranchTransition_Condition(), this.getDetailCode(), null, "condition", null, 0, 1, CPBranchTransition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(transitionTerminalEClass, TransitionTerminal.class, "TransitionTerminal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(stateTerminalEClass, StateTerminal.class, "StateTerminal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getStateTerminal_State(), this.getBaseState(), null, "state", null, 0, 1, StateTerminal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(trPointTerminalEClass, TrPointTerminal.class, "TrPointTerminal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTrPointTerminal_TrPoint(), this.getTrPoint(), null, "trPoint", null, 0, 1, TrPointTerminal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(subStateTrPointTerminalEClass, SubStateTrPointTerminal.class, "SubStateTrPointTerminal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSubStateTrPointTerminal_TrPoint(), this.getTrPoint(), null, "trPoint", null, 0, 1, SubStateTrPointTerminal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSubStateTrPointTerminal_State(), this.getBaseState(), null, "state", null, 0, 1, SubStateTrPointTerminal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(choicepointTerminalEClass, ChoicepointTerminal.class, "ChoicepointTerminal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getChoicepointTerminal_Cp(), this.getChoicePoint(), null, "cp", null, 0, 1, ChoicepointTerminal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(triggerEClass, Trigger.class, "Trigger", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTrigger_MsgFromIfPairs(), this.getMessageFromIf(), null, "msgFromIfPairs", null, 0, -1, Trigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTrigger_Guard(), this.getGuard(), null, "guard", null, 0, 1, Trigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(messageFromIfEClass, MessageFromIf.class, "MessageFromIf", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMessageFromIf_Message(), this.getMessage(), null, "message", null, 0, 1, MessageFromIf.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getMessageFromIf_From(), this.getInterfaceItem(), null, "from", null, 0, 1, MessageFromIf.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(guardEClass, Guard.class, "Guard", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getGuard_Guard(), this.getDetailCode(), null, "guard", null, 0, 1, Guard.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(importEClass, Import.class, "Import", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getImport_ImportedNamespace(), ecorePackage.getEString(), "importedNamespace", null, 0, 1, Import.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(primitiveTypeEEnum, PrimitiveType.class, "PrimitiveType");
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.VOID);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.INT8);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.INT16);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.INT32);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.UINT8);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.UINT16);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.UINT32);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.FLOAT32);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.FLOAT64);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.BOOLEAN);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.STRING);
+ addEEnumLiteral(primitiveTypeEEnum, PrimitiveType.CHAR);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //RoomPackageImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPRefImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPRefImpl.java
new file mode 100644
index 000000000..422e35118
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPRefImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SAP Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SAPRefImpl extends InterfaceItemImpl implements SAPRef
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SAPRefImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SAP_REF;
+ }
+
+} //SAPRefImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPointImpl.java
new file mode 100644
index 000000000..c74c01cd4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SAPointImpl.java
@@ -0,0 +1,48 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPoint;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SA Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SAPointImpl extends MinimalEObjectImpl.Container implements SAPoint
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SAPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SA_POINT;
+ }
+
+} //SAPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPRefImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPRefImpl.java
new file mode 100644
index 000000000..f58827974
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPRefImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SPPRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SPP Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SPPRefImpl extends InterfaceItemImpl implements SPPRef
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SPPRefImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SPP_REF;
+ }
+
+} //SPPRefImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPointImpl.java
new file mode 100644
index 000000000..365fcf8f4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SPPointImpl.java
@@ -0,0 +1,243 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SPPoint;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SP Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SPPointImpl#getRef <em>Ref</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SPPointImpl#getService <em>Service</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SPPointImpl extends MinimalEObjectImpl.Container implements SPPoint
+{
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected ActorContainerRef ref;
+
+ /**
+ * The cached value of the '{@link #getService() <em>Service</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getService()
+ * @generated
+ * @ordered
+ */
+ protected SPPRef service;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SPPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SP_POINT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerRef getRef()
+ {
+ if (ref != null && ref.eIsProxy())
+ {
+ InternalEObject oldRef = (InternalEObject)ref;
+ ref = (ActorContainerRef)eResolveProxy(oldRef);
+ if (ref != oldRef)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.SP_POINT__REF, oldRef, ref));
+ }
+ }
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorContainerRef basicGetRef()
+ {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(ActorContainerRef newRef)
+ {
+ ActorContainerRef oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.SP_POINT__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef getService()
+ {
+ if (service != null && service.eIsProxy())
+ {
+ InternalEObject oldService = (InternalEObject)service;
+ service = (SPPRef)eResolveProxy(oldService);
+ if (service != oldService)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.SP_POINT__SERVICE, oldService, service));
+ }
+ }
+ return service;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef basicGetService()
+ {
+ return service;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setService(SPPRef newService)
+ {
+ SPPRef oldService = service;
+ service = newService;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.SP_POINT__SERVICE, oldService, service));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SP_POINT__REF:
+ if (resolve) return getRef();
+ return basicGetRef();
+ case RoomPackage.SP_POINT__SERVICE:
+ if (resolve) return getService();
+ return basicGetService();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SP_POINT__REF:
+ setRef((ActorContainerRef)newValue);
+ return;
+ case RoomPackage.SP_POINT__SERVICE:
+ setService((SPPRef)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SP_POINT__REF:
+ setRef((ActorContainerRef)null);
+ return;
+ case RoomPackage.SP_POINT__SERVICE:
+ setService((SPPRef)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SP_POINT__REF:
+ return ref != null;
+ case RoomPackage.SP_POINT__SERVICE:
+ return service != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SPPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsInRuleImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsInRuleImpl.java
new file mode 100644
index 000000000..a34763878
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsInRuleImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SemanticsInRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Semantics In Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SemanticsInRuleImpl extends SemanticsRuleImpl implements SemanticsInRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SemanticsInRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SEMANTICS_IN_RULE;
+ }
+
+} //SemanticsInRuleImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsOutRuleImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsOutRuleImpl.java
new file mode 100644
index 000000000..17f58d297
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsOutRuleImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SemanticsOutRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Semantics Out Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SemanticsOutRuleImpl extends SemanticsRuleImpl implements SemanticsOutRule
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SemanticsOutRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SEMANTICS_OUT_RULE;
+ }
+
+} //SemanticsOutRuleImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsRuleImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsRuleImpl.java
new file mode 100644
index 000000000..374814b2e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SemanticsRuleImpl.java
@@ -0,0 +1,238 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SemanticsRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Semantics Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SemanticsRuleImpl#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SemanticsRuleImpl#getFollowUps <em>Follow Ups</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SemanticsRuleImpl extends MinimalEObjectImpl.Container implements SemanticsRule
+{
+ /**
+ * The cached value of the '{@link #getMsg() <em>Msg</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMsg()
+ * @generated
+ * @ordered
+ */
+ protected Message msg;
+
+ /**
+ * The cached value of the '{@link #getFollowUps() <em>Follow Ups</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFollowUps()
+ * @generated
+ * @ordered
+ */
+ protected EList<SemanticsRule> followUps;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SemanticsRuleImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SEMANTICS_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message getMsg()
+ {
+ if (msg != null && msg.eIsProxy())
+ {
+ InternalEObject oldMsg = (InternalEObject)msg;
+ msg = (Message)eResolveProxy(oldMsg);
+ if (msg != oldMsg)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.SEMANTICS_RULE__MSG, oldMsg, msg));
+ }
+ }
+ return msg;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message basicGetMsg()
+ {
+ return msg;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMsg(Message newMsg)
+ {
+ Message oldMsg = msg;
+ msg = newMsg;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.SEMANTICS_RULE__MSG, oldMsg, msg));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SemanticsRule> getFollowUps()
+ {
+ if (followUps == null)
+ {
+ followUps = new EObjectContainmentEList<SemanticsRule>(SemanticsRule.class, this, RoomPackage.SEMANTICS_RULE__FOLLOW_UPS);
+ }
+ return followUps;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SEMANTICS_RULE__FOLLOW_UPS:
+ return ((InternalEList<?>)getFollowUps()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SEMANTICS_RULE__MSG:
+ if (resolve) return getMsg();
+ return basicGetMsg();
+ case RoomPackage.SEMANTICS_RULE__FOLLOW_UPS:
+ return getFollowUps();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SEMANTICS_RULE__MSG:
+ setMsg((Message)newValue);
+ return;
+ case RoomPackage.SEMANTICS_RULE__FOLLOW_UPS:
+ getFollowUps().clear();
+ getFollowUps().addAll((Collection<? extends SemanticsRule>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SEMANTICS_RULE__MSG:
+ setMsg((Message)null);
+ return;
+ case RoomPackage.SEMANTICS_RULE__FOLLOW_UPS:
+ getFollowUps().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SEMANTICS_RULE__MSG:
+ return msg != null;
+ case RoomPackage.SEMANTICS_RULE__FOLLOW_UPS:
+ return followUps != null && !followUps.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SemanticsRuleImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ServiceImplementationImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ServiceImplementationImpl.java
new file mode 100644
index 000000000..2adbcc651
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/ServiceImplementationImpl.java
@@ -0,0 +1,177 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Service Implementation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.ServiceImplementationImpl#getSpp <em>Spp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ServiceImplementationImpl extends MinimalEObjectImpl.Container implements ServiceImplementation
+{
+ /**
+ * The cached value of the '{@link #getSpp() <em>Spp</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpp()
+ * @generated
+ * @ordered
+ */
+ protected SPPRef spp;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ServiceImplementationImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SERVICE_IMPLEMENTATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef getSpp()
+ {
+ if (spp != null && spp.eIsProxy())
+ {
+ InternalEObject oldSpp = (InternalEObject)spp;
+ spp = (SPPRef)eResolveProxy(oldSpp);
+ if (spp != oldSpp)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.SERVICE_IMPLEMENTATION__SPP, oldSpp, spp));
+ }
+ }
+ return spp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef basicGetSpp()
+ {
+ return spp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSpp(SPPRef newSpp)
+ {
+ SPPRef oldSpp = spp;
+ spp = newSpp;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.SERVICE_IMPLEMENTATION__SPP, oldSpp, spp));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SERVICE_IMPLEMENTATION__SPP:
+ if (resolve) return getSpp();
+ return basicGetSpp();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SERVICE_IMPLEMENTATION__SPP:
+ setSpp((SPPRef)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SERVICE_IMPLEMENTATION__SPP:
+ setSpp((SPPRef)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SERVICE_IMPLEMENTATION__SPP:
+ return spp != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ServiceImplementationImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphImpl.java
new file mode 100644
index 000000000..80f529a6e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphImpl.java
@@ -0,0 +1,288 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.TrPoint;
+import org.eclipse.etrice.core.room.Transition;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>State Graph</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateGraphImpl#getStates <em>States</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateGraphImpl#getTrPoints <em>Tr Points</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateGraphImpl#getChPoints <em>Ch Points</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateGraphImpl#getTransitions <em>Transitions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StateGraphImpl extends MinimalEObjectImpl.Container implements StateGraph
+{
+ /**
+ * The cached value of the '{@link #getStates() <em>States</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStates()
+ * @generated
+ * @ordered
+ */
+ protected EList<State> states;
+
+ /**
+ * The cached value of the '{@link #getTrPoints() <em>Tr Points</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTrPoints()
+ * @generated
+ * @ordered
+ */
+ protected EList<TrPoint> trPoints;
+
+ /**
+ * The cached value of the '{@link #getChPoints() <em>Ch Points</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChPoints()
+ * @generated
+ * @ordered
+ */
+ protected EList<ChoicePoint> chPoints;
+
+ /**
+ * The cached value of the '{@link #getTransitions() <em>Transitions</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<Transition> transitions;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StateGraphImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.STATE_GRAPH;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<State> getStates()
+ {
+ if (states == null)
+ {
+ states = new EObjectContainmentEList<State>(State.class, this, RoomPackage.STATE_GRAPH__STATES);
+ }
+ return states;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<TrPoint> getTrPoints()
+ {
+ if (trPoints == null)
+ {
+ trPoints = new EObjectContainmentEList<TrPoint>(TrPoint.class, this, RoomPackage.STATE_GRAPH__TR_POINTS);
+ }
+ return trPoints;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ChoicePoint> getChPoints()
+ {
+ if (chPoints == null)
+ {
+ chPoints = new EObjectContainmentEList<ChoicePoint>(ChoicePoint.class, this, RoomPackage.STATE_GRAPH__CH_POINTS);
+ }
+ return chPoints;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Transition> getTransitions()
+ {
+ if (transitions == null)
+ {
+ transitions = new EObjectContainmentEList<Transition>(Transition.class, this, RoomPackage.STATE_GRAPH__TRANSITIONS);
+ }
+ return transitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_GRAPH__STATES:
+ return ((InternalEList<?>)getStates()).basicRemove(otherEnd, msgs);
+ case RoomPackage.STATE_GRAPH__TR_POINTS:
+ return ((InternalEList<?>)getTrPoints()).basicRemove(otherEnd, msgs);
+ case RoomPackage.STATE_GRAPH__CH_POINTS:
+ return ((InternalEList<?>)getChPoints()).basicRemove(otherEnd, msgs);
+ case RoomPackage.STATE_GRAPH__TRANSITIONS:
+ return ((InternalEList<?>)getTransitions()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_GRAPH__STATES:
+ return getStates();
+ case RoomPackage.STATE_GRAPH__TR_POINTS:
+ return getTrPoints();
+ case RoomPackage.STATE_GRAPH__CH_POINTS:
+ return getChPoints();
+ case RoomPackage.STATE_GRAPH__TRANSITIONS:
+ return getTransitions();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_GRAPH__STATES:
+ getStates().clear();
+ getStates().addAll((Collection<? extends State>)newValue);
+ return;
+ case RoomPackage.STATE_GRAPH__TR_POINTS:
+ getTrPoints().clear();
+ getTrPoints().addAll((Collection<? extends TrPoint>)newValue);
+ return;
+ case RoomPackage.STATE_GRAPH__CH_POINTS:
+ getChPoints().clear();
+ getChPoints().addAll((Collection<? extends ChoicePoint>)newValue);
+ return;
+ case RoomPackage.STATE_GRAPH__TRANSITIONS:
+ getTransitions().clear();
+ getTransitions().addAll((Collection<? extends Transition>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_GRAPH__STATES:
+ getStates().clear();
+ return;
+ case RoomPackage.STATE_GRAPH__TR_POINTS:
+ getTrPoints().clear();
+ return;
+ case RoomPackage.STATE_GRAPH__CH_POINTS:
+ getChPoints().clear();
+ return;
+ case RoomPackage.STATE_GRAPH__TRANSITIONS:
+ getTransitions().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_GRAPH__STATES:
+ return states != null && !states.isEmpty();
+ case RoomPackage.STATE_GRAPH__TR_POINTS:
+ return trPoints != null && !trPoints.isEmpty();
+ case RoomPackage.STATE_GRAPH__CH_POINTS:
+ return chPoints != null && !chPoints.isEmpty();
+ case RoomPackage.STATE_GRAPH__TRANSITIONS:
+ return transitions != null && !transitions.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //StateGraphImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphItemImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphItemImpl.java
new file mode 100644
index 000000000..8f46074d4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphItemImpl.java
@@ -0,0 +1,48 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.StateGraphItem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>State Graph Item</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StateGraphItemImpl extends MinimalEObjectImpl.Container implements StateGraphItem
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StateGraphItemImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.STATE_GRAPH_ITEM;
+ }
+
+} //StateGraphItemImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphNodeImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphNodeImpl.java
new file mode 100644
index 000000000..0a34580f8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateGraphNodeImpl.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.StateGraphNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>State Graph Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StateGraphNodeImpl extends StateGraphItemImpl implements StateGraphNode
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StateGraphNodeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.STATE_GRAPH_NODE;
+ }
+
+} //StateGraphNodeImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateImpl.java
new file mode 100644
index 000000000..6066494fa
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateImpl.java
@@ -0,0 +1,340 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateImpl#getEntryCode <em>Entry Code</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateImpl#getExitCode <em>Exit Code</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateImpl#getSubgraph <em>Subgraph</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StateImpl extends StateGraphNodeImpl implements State
+{
+ /**
+ * The cached value of the '{@link #getEntryCode() <em>Entry Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEntryCode()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode entryCode;
+
+ /**
+ * The cached value of the '{@link #getExitCode() <em>Exit Code</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExitCode()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode exitCode;
+
+ /**
+ * The cached value of the '{@link #getSubgraph() <em>Subgraph</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubgraph()
+ * @generated
+ * @ordered
+ */
+ protected StateGraph subgraph;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StateImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.STATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getEntryCode()
+ {
+ return entryCode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEntryCode(DetailCode newEntryCode, NotificationChain msgs)
+ {
+ DetailCode oldEntryCode = entryCode;
+ entryCode = newEntryCode;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.STATE__ENTRY_CODE, oldEntryCode, newEntryCode);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEntryCode(DetailCode newEntryCode)
+ {
+ if (newEntryCode != entryCode)
+ {
+ NotificationChain msgs = null;
+ if (entryCode != null)
+ msgs = ((InternalEObject)entryCode).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.STATE__ENTRY_CODE, null, msgs);
+ if (newEntryCode != null)
+ msgs = ((InternalEObject)newEntryCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.STATE__ENTRY_CODE, null, msgs);
+ msgs = basicSetEntryCode(newEntryCode, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.STATE__ENTRY_CODE, newEntryCode, newEntryCode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getExitCode()
+ {
+ return exitCode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExitCode(DetailCode newExitCode, NotificationChain msgs)
+ {
+ DetailCode oldExitCode = exitCode;
+ exitCode = newExitCode;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.STATE__EXIT_CODE, oldExitCode, newExitCode);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExitCode(DetailCode newExitCode)
+ {
+ if (newExitCode != exitCode)
+ {
+ NotificationChain msgs = null;
+ if (exitCode != null)
+ msgs = ((InternalEObject)exitCode).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.STATE__EXIT_CODE, null, msgs);
+ if (newExitCode != null)
+ msgs = ((InternalEObject)newExitCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.STATE__EXIT_CODE, null, msgs);
+ msgs = basicSetExitCode(newExitCode, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.STATE__EXIT_CODE, newExitCode, newExitCode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StateGraph getSubgraph()
+ {
+ return subgraph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSubgraph(StateGraph newSubgraph, NotificationChain msgs)
+ {
+ StateGraph oldSubgraph = subgraph;
+ subgraph = newSubgraph;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.STATE__SUBGRAPH, oldSubgraph, newSubgraph);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSubgraph(StateGraph newSubgraph)
+ {
+ if (newSubgraph != subgraph)
+ {
+ NotificationChain msgs = null;
+ if (subgraph != null)
+ msgs = ((InternalEObject)subgraph).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.STATE__SUBGRAPH, null, msgs);
+ if (newSubgraph != null)
+ msgs = ((InternalEObject)newSubgraph).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.STATE__SUBGRAPH, null, msgs);
+ msgs = basicSetSubgraph(newSubgraph, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.STATE__SUBGRAPH, newSubgraph, newSubgraph));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE__ENTRY_CODE:
+ return basicSetEntryCode(null, msgs);
+ case RoomPackage.STATE__EXIT_CODE:
+ return basicSetExitCode(null, msgs);
+ case RoomPackage.STATE__SUBGRAPH:
+ return basicSetSubgraph(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE__ENTRY_CODE:
+ return getEntryCode();
+ case RoomPackage.STATE__EXIT_CODE:
+ return getExitCode();
+ case RoomPackage.STATE__SUBGRAPH:
+ return getSubgraph();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE__ENTRY_CODE:
+ setEntryCode((DetailCode)newValue);
+ return;
+ case RoomPackage.STATE__EXIT_CODE:
+ setExitCode((DetailCode)newValue);
+ return;
+ case RoomPackage.STATE__SUBGRAPH:
+ setSubgraph((StateGraph)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE__ENTRY_CODE:
+ setEntryCode((DetailCode)null);
+ return;
+ case RoomPackage.STATE__EXIT_CODE:
+ setExitCode((DetailCode)null);
+ return;
+ case RoomPackage.STATE__SUBGRAPH:
+ setSubgraph((StateGraph)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE__ENTRY_CODE:
+ return entryCode != null;
+ case RoomPackage.STATE__EXIT_CODE:
+ return exitCode != null;
+ case RoomPackage.STATE__SUBGRAPH:
+ return subgraph != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //StateImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateTerminalImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateTerminalImpl.java
new file mode 100644
index 000000000..5abbb6ca9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StateTerminalImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.StateTerminal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>State Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StateTerminalImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StateTerminalImpl extends TransitionTerminalImpl implements StateTerminal
+{
+ /**
+ * The cached value of the '{@link #getState() <em>State</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected BaseState state;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StateTerminalImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.STATE_TERMINAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BaseState getState()
+ {
+ if (state != null && state.eIsProxy())
+ {
+ InternalEObject oldState = (InternalEObject)state;
+ state = (BaseState)eResolveProxy(oldState);
+ if (state != oldState)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.STATE_TERMINAL__STATE, oldState, state));
+ }
+ }
+ return state;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BaseState basicGetState()
+ {
+ return state;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setState(BaseState newState)
+ {
+ BaseState oldState = state;
+ state = newState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.STATE_TERMINAL__STATE, oldState, state));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_TERMINAL__STATE:
+ if (resolve) return getState();
+ return basicGetState();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_TERMINAL__STATE:
+ setState((BaseState)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_TERMINAL__STATE:
+ setState((BaseState)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STATE_TERMINAL__STATE:
+ return state != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //StateTerminalImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StructureClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StructureClassImpl.java
new file mode 100644
index 000000000..615ed6dfc
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/StructureClassImpl.java
@@ -0,0 +1,208 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.StructureClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Structure Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StructureClassImpl#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.StructureClassImpl#getConnections <em>Connections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StructureClassImpl extends RoomClassImpl implements StructureClass
+{
+ /**
+ * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindings()
+ * @generated
+ * @ordered
+ */
+ protected EList<Binding> bindings;
+
+ /**
+ * The cached value of the '{@link #getConnections() <em>Connections</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnections()
+ * @generated
+ * @ordered
+ */
+ protected EList<LayerConnection> connections;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StructureClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.STRUCTURE_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Binding> getBindings()
+ {
+ if (bindings == null)
+ {
+ bindings = new EObjectContainmentEList<Binding>(Binding.class, this, RoomPackage.STRUCTURE_CLASS__BINDINGS);
+ }
+ return bindings;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LayerConnection> getConnections()
+ {
+ if (connections == null)
+ {
+ connections = new EObjectContainmentEList<LayerConnection>(LayerConnection.class, this, RoomPackage.STRUCTURE_CLASS__CONNECTIONS);
+ }
+ return connections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STRUCTURE_CLASS__BINDINGS:
+ return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
+ case RoomPackage.STRUCTURE_CLASS__CONNECTIONS:
+ return ((InternalEList<?>)getConnections()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STRUCTURE_CLASS__BINDINGS:
+ return getBindings();
+ case RoomPackage.STRUCTURE_CLASS__CONNECTIONS:
+ return getConnections();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STRUCTURE_CLASS__BINDINGS:
+ getBindings().clear();
+ getBindings().addAll((Collection<? extends Binding>)newValue);
+ return;
+ case RoomPackage.STRUCTURE_CLASS__CONNECTIONS:
+ getConnections().clear();
+ getConnections().addAll((Collection<? extends LayerConnection>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STRUCTURE_CLASS__BINDINGS:
+ getBindings().clear();
+ return;
+ case RoomPackage.STRUCTURE_CLASS__CONNECTIONS:
+ getConnections().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.STRUCTURE_CLASS__BINDINGS:
+ return bindings != null && !bindings.isEmpty();
+ case RoomPackage.STRUCTURE_CLASS__CONNECTIONS:
+ return connections != null && !connections.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //StructureClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubStateTrPointTerminalImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubStateTrPointTerminalImpl.java
new file mode 100644
index 000000000..3a7e2acbf
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubStateTrPointTerminalImpl.java
@@ -0,0 +1,242 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SubStateTrPointTerminal;
+import org.eclipse.etrice.core.room.TrPoint;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sub State Tr Point Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SubStateTrPointTerminalImpl#getTrPoint <em>Tr Point</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SubStateTrPointTerminalImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SubStateTrPointTerminalImpl extends TransitionTerminalImpl implements SubStateTrPointTerminal
+{
+ /**
+ * The cached value of the '{@link #getTrPoint() <em>Tr Point</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTrPoint()
+ * @generated
+ * @ordered
+ */
+ protected TrPoint trPoint;
+
+ /**
+ * The cached value of the '{@link #getState() <em>State</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected BaseState state;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SubStateTrPointTerminalImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SUB_STATE_TR_POINT_TERMINAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrPoint getTrPoint()
+ {
+ if (trPoint != null && trPoint.eIsProxy())
+ {
+ InternalEObject oldTrPoint = (InternalEObject)trPoint;
+ trPoint = (TrPoint)eResolveProxy(oldTrPoint);
+ if (trPoint != oldTrPoint)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.SUB_STATE_TR_POINT_TERMINAL__TR_POINT, oldTrPoint, trPoint));
+ }
+ }
+ return trPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrPoint basicGetTrPoint()
+ {
+ return trPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTrPoint(TrPoint newTrPoint)
+ {
+ TrPoint oldTrPoint = trPoint;
+ trPoint = newTrPoint;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.SUB_STATE_TR_POINT_TERMINAL__TR_POINT, oldTrPoint, trPoint));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BaseState getState()
+ {
+ if (state != null && state.eIsProxy())
+ {
+ InternalEObject oldState = (InternalEObject)state;
+ state = (BaseState)eResolveProxy(oldState);
+ if (state != oldState)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.SUB_STATE_TR_POINT_TERMINAL__STATE, oldState, state));
+ }
+ }
+ return state;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BaseState basicGetState()
+ {
+ return state;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setState(BaseState newState)
+ {
+ BaseState oldState = state;
+ state = newState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.SUB_STATE_TR_POINT_TERMINAL__STATE, oldState, state));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__TR_POINT:
+ if (resolve) return getTrPoint();
+ return basicGetTrPoint();
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__STATE:
+ if (resolve) return getState();
+ return basicGetState();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__TR_POINT:
+ setTrPoint((TrPoint)newValue);
+ return;
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__STATE:
+ setState((BaseState)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__TR_POINT:
+ setTrPoint((TrPoint)null);
+ return;
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__STATE:
+ setState((BaseState)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__TR_POINT:
+ return trPoint != null;
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL__STATE:
+ return state != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SubStateTrPointTerminalImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemClassImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemClassImpl.java
new file mode 100644
index 000000000..cad1d8929
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemClassImpl.java
@@ -0,0 +1,208 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.LogicalThread;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SubSystemClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sub System Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SubSystemClassImpl#getRelayPorts <em>Relay Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SubSystemClassImpl#getThreads <em>Threads</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SubSystemClassImpl extends ActorContainerClassImpl implements SubSystemClass
+{
+ /**
+ * The cached value of the '{@link #getRelayPorts() <em>Relay Ports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRelayPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<Port> relayPorts;
+
+ /**
+ * The cached value of the '{@link #getThreads() <em>Threads</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getThreads()
+ * @generated
+ * @ordered
+ */
+ protected EList<LogicalThread> threads;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SubSystemClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SUB_SYSTEM_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Port> getRelayPorts()
+ {
+ if (relayPorts == null)
+ {
+ relayPorts = new EObjectContainmentEList<Port>(Port.class, this, RoomPackage.SUB_SYSTEM_CLASS__RELAY_PORTS);
+ }
+ return relayPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LogicalThread> getThreads()
+ {
+ if (threads == null)
+ {
+ threads = new EObjectContainmentEList<LogicalThread>(LogicalThread.class, this, RoomPackage.SUB_SYSTEM_CLASS__THREADS);
+ }
+ return threads;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_CLASS__RELAY_PORTS:
+ return ((InternalEList<?>)getRelayPorts()).basicRemove(otherEnd, msgs);
+ case RoomPackage.SUB_SYSTEM_CLASS__THREADS:
+ return ((InternalEList<?>)getThreads()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_CLASS__RELAY_PORTS:
+ return getRelayPorts();
+ case RoomPackage.SUB_SYSTEM_CLASS__THREADS:
+ return getThreads();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_CLASS__RELAY_PORTS:
+ getRelayPorts().clear();
+ getRelayPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case RoomPackage.SUB_SYSTEM_CLASS__THREADS:
+ getThreads().clear();
+ getThreads().addAll((Collection<? extends LogicalThread>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_CLASS__RELAY_PORTS:
+ getRelayPorts().clear();
+ return;
+ case RoomPackage.SUB_SYSTEM_CLASS__THREADS:
+ getThreads().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_CLASS__RELAY_PORTS:
+ return relayPorts != null && !relayPorts.isEmpty();
+ case RoomPackage.SUB_SYSTEM_CLASS__THREADS:
+ return threads != null && !threads.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SubSystemClassImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemRefImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemRefImpl.java
new file mode 100644
index 000000000..eb79498ab
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/SubSystemRefImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sub System Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.SubSystemRefImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SubSystemRefImpl extends ActorContainerRefImpl implements SubSystemRef
+{
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected SubSystemClass type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SubSystemRefImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.SUB_SYSTEM_REF;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubSystemClass getType()
+ {
+ if (type != null && type.eIsProxy())
+ {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (SubSystemClass)eResolveProxy(oldType);
+ if (type != oldType)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.SUB_SYSTEM_REF__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubSystemClass basicGetType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(SubSystemClass newType)
+ {
+ SubSystemClass oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.SUB_SYSTEM_REF__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_REF__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_REF__TYPE:
+ setType((SubSystemClass)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_REF__TYPE:
+ setType((SubSystemClass)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.SUB_SYSTEM_REF__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SubSystemRefImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointImpl.java
new file mode 100644
index 000000000..161bd4728
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.TrPoint;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tr Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TrPointImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TrPointImpl extends StateGraphNodeImpl implements TrPoint
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TR_POINT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TR_POINT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TrPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointTerminalImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointTerminalImpl.java
new file mode 100644
index 000000000..42f3087ae
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TrPointTerminalImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.TrPoint;
+import org.eclipse.etrice.core.room.TrPointTerminal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tr Point Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TrPointTerminalImpl#getTrPoint <em>Tr Point</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TrPointTerminalImpl extends TransitionTerminalImpl implements TrPointTerminal
+{
+ /**
+ * The cached value of the '{@link #getTrPoint() <em>Tr Point</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTrPoint()
+ * @generated
+ * @ordered
+ */
+ protected TrPoint trPoint;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrPointTerminalImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TR_POINT_TERMINAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrPoint getTrPoint()
+ {
+ if (trPoint != null && trPoint.eIsProxy())
+ {
+ InternalEObject oldTrPoint = (InternalEObject)trPoint;
+ trPoint = (TrPoint)eResolveProxy(oldTrPoint);
+ if (trPoint != oldTrPoint)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.TR_POINT_TERMINAL__TR_POINT, oldTrPoint, trPoint));
+ }
+ }
+ return trPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrPoint basicGetTrPoint()
+ {
+ return trPoint;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTrPoint(TrPoint newTrPoint)
+ {
+ TrPoint oldTrPoint = trPoint;
+ trPoint = newTrPoint;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TR_POINT_TERMINAL__TR_POINT, oldTrPoint, trPoint));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT_TERMINAL__TR_POINT:
+ if (resolve) return getTrPoint();
+ return basicGetTrPoint();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT_TERMINAL__TR_POINT:
+ setTrPoint((TrPoint)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT_TERMINAL__TR_POINT:
+ setTrPoint((TrPoint)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TR_POINT_TERMINAL__TR_POINT:
+ return trPoint != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TrPointTerminalImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionImpl.java
new file mode 100644
index 000000000..b05c3ab82
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionImpl.java
@@ -0,0 +1,340 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TransitionTerminal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TransitionImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TransitionImpl#getTo <em>To</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TransitionImpl#getAction <em>Action</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TransitionImpl extends StateGraphItemImpl implements Transition
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTo() <em>To</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTo()
+ * @generated
+ * @ordered
+ */
+ protected TransitionTerminal to;
+
+ /**
+ * The cached value of the '{@link #getAction() <em>Action</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAction()
+ * @generated
+ * @ordered
+ */
+ protected DetailCode action;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TransitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TRANSITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TRANSITION__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionTerminal getTo()
+ {
+ return to;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTo(TransitionTerminal newTo, NotificationChain msgs)
+ {
+ TransitionTerminal oldTo = to;
+ to = newTo;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.TRANSITION__TO, oldTo, newTo);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTo(TransitionTerminal newTo)
+ {
+ if (newTo != to)
+ {
+ NotificationChain msgs = null;
+ if (to != null)
+ msgs = ((InternalEObject)to).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TRANSITION__TO, null, msgs);
+ if (newTo != null)
+ msgs = ((InternalEObject)newTo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TRANSITION__TO, null, msgs);
+ msgs = basicSetTo(newTo, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TRANSITION__TO, newTo, newTo));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DetailCode getAction()
+ {
+ return action;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAction(DetailCode newAction, NotificationChain msgs)
+ {
+ DetailCode oldAction = action;
+ action = newAction;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.TRANSITION__ACTION, oldAction, newAction);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAction(DetailCode newAction)
+ {
+ if (newAction != action)
+ {
+ NotificationChain msgs = null;
+ if (action != null)
+ msgs = ((InternalEObject)action).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TRANSITION__ACTION, null, msgs);
+ if (newAction != null)
+ msgs = ((InternalEObject)newAction).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TRANSITION__ACTION, null, msgs);
+ msgs = basicSetAction(newAction, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TRANSITION__ACTION, newAction, newAction));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION__TO:
+ return basicSetTo(null, msgs);
+ case RoomPackage.TRANSITION__ACTION:
+ return basicSetAction(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION__NAME:
+ return getName();
+ case RoomPackage.TRANSITION__TO:
+ return getTo();
+ case RoomPackage.TRANSITION__ACTION:
+ return getAction();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.TRANSITION__TO:
+ setTo((TransitionTerminal)newValue);
+ return;
+ case RoomPackage.TRANSITION__ACTION:
+ setAction((DetailCode)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.TRANSITION__TO:
+ setTo((TransitionTerminal)null);
+ return;
+ case RoomPackage.TRANSITION__ACTION:
+ setAction((DetailCode)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.TRANSITION__TO:
+ return to != null;
+ case RoomPackage.TRANSITION__ACTION:
+ return action != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TransitionImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionPointImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionPointImpl.java
new file mode 100644
index 000000000..4be263513
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionPointImpl.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.TransitionPoint;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transition Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TransitionPointImpl#isHandler <em>Handler</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TransitionPointImpl extends TrPointImpl implements TransitionPoint
+{
+ /**
+ * The default value of the '{@link #isHandler() <em>Handler</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isHandler()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean HANDLER_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isHandler() <em>Handler</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isHandler()
+ * @generated
+ * @ordered
+ */
+ protected boolean handler = HANDLER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TransitionPointImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TRANSITION_POINT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isHandler()
+ {
+ return handler;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHandler(boolean newHandler)
+ {
+ boolean oldHandler = handler;
+ handler = newHandler;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TRANSITION_POINT__HANDLER, oldHandler, handler));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION_POINT__HANDLER:
+ return isHandler();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION_POINT__HANDLER:
+ setHandler((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION_POINT__HANDLER:
+ setHandler(HANDLER_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRANSITION_POINT__HANDLER:
+ return handler != HANDLER_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (handler: ");
+ result.append(handler);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TransitionPointImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionTerminalImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionTerminalImpl.java
new file mode 100644
index 000000000..2e91bd44e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TransitionTerminalImpl.java
@@ -0,0 +1,48 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.TransitionTerminal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transition Terminal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TransitionTerminalImpl extends MinimalEObjectImpl.Container implements TransitionTerminal
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TransitionTerminalImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TRANSITION_TERMINAL;
+ }
+
+} //TransitionTerminalImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggerImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggerImpl.java
new file mode 100644
index 000000000..e9dc01c78
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggerImpl.java
@@ -0,0 +1,245 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.Guard;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.Trigger;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TriggerImpl#getMsgFromIfPairs <em>Msg From If Pairs</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TriggerImpl#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TriggerImpl extends MinimalEObjectImpl.Container implements Trigger
+{
+ /**
+ * The cached value of the '{@link #getMsgFromIfPairs() <em>Msg From If Pairs</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMsgFromIfPairs()
+ * @generated
+ * @ordered
+ */
+ protected EList<MessageFromIf> msgFromIfPairs;
+
+ /**
+ * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGuard()
+ * @generated
+ * @ordered
+ */
+ protected Guard guard;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TriggerImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TRIGGER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<MessageFromIf> getMsgFromIfPairs()
+ {
+ if (msgFromIfPairs == null)
+ {
+ msgFromIfPairs = new EObjectContainmentEList<MessageFromIf>(MessageFromIf.class, this, RoomPackage.TRIGGER__MSG_FROM_IF_PAIRS);
+ }
+ return msgFromIfPairs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Guard getGuard()
+ {
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGuard(Guard newGuard, NotificationChain msgs)
+ {
+ Guard oldGuard = guard;
+ guard = newGuard;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.TRIGGER__GUARD, oldGuard, newGuard);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGuard(Guard newGuard)
+ {
+ if (newGuard != guard)
+ {
+ NotificationChain msgs = null;
+ if (guard != null)
+ msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TRIGGER__GUARD, null, msgs);
+ if (newGuard != null)
+ msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TRIGGER__GUARD, null, msgs);
+ msgs = basicSetGuard(newGuard, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TRIGGER__GUARD, newGuard, newGuard));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGER__MSG_FROM_IF_PAIRS:
+ return ((InternalEList<?>)getMsgFromIfPairs()).basicRemove(otherEnd, msgs);
+ case RoomPackage.TRIGGER__GUARD:
+ return basicSetGuard(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGER__MSG_FROM_IF_PAIRS:
+ return getMsgFromIfPairs();
+ case RoomPackage.TRIGGER__GUARD:
+ return getGuard();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGER__MSG_FROM_IF_PAIRS:
+ getMsgFromIfPairs().clear();
+ getMsgFromIfPairs().addAll((Collection<? extends MessageFromIf>)newValue);
+ return;
+ case RoomPackage.TRIGGER__GUARD:
+ setGuard((Guard)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGER__MSG_FROM_IF_PAIRS:
+ getMsgFromIfPairs().clear();
+ return;
+ case RoomPackage.TRIGGER__GUARD:
+ setGuard((Guard)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGER__MSG_FROM_IF_PAIRS:
+ return msgFromIfPairs != null && !msgFromIfPairs.isEmpty();
+ case RoomPackage.TRIGGER__GUARD:
+ return guard != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TriggerImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggeredTransitionImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggeredTransitionImpl.java
new file mode 100644
index 000000000..483c5d21b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TriggeredTransitionImpl.java
@@ -0,0 +1,169 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Triggered Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TriggeredTransitionImpl#getTriggers <em>Triggers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TriggeredTransitionImpl extends NonInitialTransitionImpl implements TriggeredTransition
+{
+ /**
+ * The cached value of the '{@link #getTriggers() <em>Triggers</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTriggers()
+ * @generated
+ * @ordered
+ */
+ protected EList<Trigger> triggers;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TriggeredTransitionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TRIGGERED_TRANSITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Trigger> getTriggers()
+ {
+ if (triggers == null)
+ {
+ triggers = new EObjectContainmentEList<Trigger>(Trigger.class, this, RoomPackage.TRIGGERED_TRANSITION__TRIGGERS);
+ }
+ return triggers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGERED_TRANSITION__TRIGGERS:
+ return ((InternalEList<?>)getTriggers()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGERED_TRANSITION__TRIGGERS:
+ return getTriggers();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGERED_TRANSITION__TRIGGERS:
+ getTriggers().clear();
+ getTriggers().addAll((Collection<? extends Trigger>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGERED_TRANSITION__TRIGGERS:
+ getTriggers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TRIGGERED_TRANSITION__TRIGGERS:
+ return triggers != null && !triggers.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TriggeredTransitionImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypeImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypeImpl.java
new file mode 100644
index 000000000..db41b2cb9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypeImpl.java
@@ -0,0 +1,249 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.PrimitiveType;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TypeImpl#getPrim <em>Prim</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TypeImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeImpl extends MinimalEObjectImpl.Container implements Type
+{
+ /**
+ * The default value of the '{@link #getPrim() <em>Prim</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrim()
+ * @generated
+ * @ordered
+ */
+ protected static final PrimitiveType PRIM_EDEFAULT = PrimitiveType.VOID;
+
+ /**
+ * The cached value of the '{@link #getPrim() <em>Prim</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrim()
+ * @generated
+ * @ordered
+ */
+ protected PrimitiveType prim = PRIM_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected DataClass type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimitiveType getPrim()
+ {
+ return prim;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrim(PrimitiveType newPrim)
+ {
+ PrimitiveType oldPrim = prim;
+ prim = newPrim == null ? PRIM_EDEFAULT : newPrim;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TYPE__PRIM, oldPrim, prim));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataClass getType()
+ {
+ if (type != null && type.eIsProxy())
+ {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (DataClass)eResolveProxy(oldType);
+ if (type != oldType)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, RoomPackage.TYPE__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataClass basicGetType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(DataClass newType)
+ {
+ DataClass oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TYPE__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPE__PRIM:
+ return getPrim();
+ case RoomPackage.TYPE__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPE__PRIM:
+ setPrim((PrimitiveType)newValue);
+ return;
+ case RoomPackage.TYPE__TYPE:
+ setType((DataClass)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPE__PRIM:
+ setPrim(PRIM_EDEFAULT);
+ return;
+ case RoomPackage.TYPE__TYPE:
+ setType((DataClass)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPE__PRIM:
+ return prim != PRIM_EDEFAULT;
+ case RoomPackage.TYPE__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (prim: ");
+ result.append(prim);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TypeImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypedIDImpl.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypedIDImpl.java
new file mode 100644
index 000000000..86ec755a8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/impl/TypedIDImpl.java
@@ -0,0 +1,269 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Typed ID</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TypedIDImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.room.impl.TypedIDImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypedIDImpl extends MinimalEObjectImpl.Container implements TypedID
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected Type type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypedIDImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return RoomPackage.Literals.TYPED_ID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TYPED_ID__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetType(Type newType, NotificationChain msgs)
+ {
+ Type oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RoomPackage.TYPED_ID__TYPE, oldType, newType);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(Type newType)
+ {
+ if (newType != type)
+ {
+ NotificationChain msgs = null;
+ if (type != null)
+ msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TYPED_ID__TYPE, null, msgs);
+ if (newType != null)
+ msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RoomPackage.TYPED_ID__TYPE, null, msgs);
+ msgs = basicSetType(newType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RoomPackage.TYPED_ID__TYPE, newType, newType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPED_ID__TYPE:
+ return basicSetType(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPED_ID__NAME:
+ return getName();
+ case RoomPackage.TYPED_ID__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPED_ID__NAME:
+ setName((String)newValue);
+ return;
+ case RoomPackage.TYPED_ID__TYPE:
+ setType((Type)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPED_ID__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case RoomPackage.TYPED_ID__TYPE:
+ setType((Type)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case RoomPackage.TYPED_ID__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case RoomPackage.TYPED_ID__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TypedIDImpl
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomAdapterFactory.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomAdapterFactory.java
new file mode 100644
index 000000000..6fe6e66a2
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomAdapterFactory.java
@@ -0,0 +1,1456 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.etrice.core.room.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.RoomPackage
+ * @generated
+ */
+public class RoomAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static RoomPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RoomAdapterFactory()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = RoomPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object)
+ {
+ if (object == modelPackage)
+ {
+ return true;
+ }
+ if (object instanceof EObject)
+ {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RoomSwitch<Adapter> modelSwitch =
+ new RoomSwitch<Adapter>()
+ {
+ @Override
+ public Adapter caseRoomModel(RoomModel object)
+ {
+ return createRoomModelAdapter();
+ }
+ @Override
+ public Adapter caseRoomClass(RoomClass object)
+ {
+ return createRoomClassAdapter();
+ }
+ @Override
+ public Adapter caseStructureClass(StructureClass object)
+ {
+ return createStructureClassAdapter();
+ }
+ @Override
+ public Adapter caseActorContainerClass(ActorContainerClass object)
+ {
+ return createActorContainerClassAdapter();
+ }
+ @Override
+ public Adapter caseTypedID(TypedID object)
+ {
+ return createTypedIDAdapter();
+ }
+ @Override
+ public Adapter caseFreeTypedID(FreeTypedID object)
+ {
+ return createFreeTypedIDAdapter();
+ }
+ @Override
+ public Adapter caseType(Type object)
+ {
+ return createTypeAdapter();
+ }
+ @Override
+ public Adapter caseFreeType(FreeType object)
+ {
+ return createFreeTypeAdapter();
+ }
+ @Override
+ public Adapter caseDataClass(DataClass object)
+ {
+ return createDataClassAdapter();
+ }
+ @Override
+ public Adapter caseAttribute(Attribute object)
+ {
+ return createAttributeAdapter();
+ }
+ @Override
+ public Adapter caseOperation(Operation object)
+ {
+ return createOperationAdapter();
+ }
+ @Override
+ public Adapter caseProtocolClass(ProtocolClass object)
+ {
+ return createProtocolClassAdapter();
+ }
+ @Override
+ public Adapter caseMessage(Message object)
+ {
+ return createMessageAdapter();
+ }
+ @Override
+ public Adapter casePortClass(PortClass object)
+ {
+ return createPortClassAdapter();
+ }
+ @Override
+ public Adapter caseMessageHandler(MessageHandler object)
+ {
+ return createMessageHandlerAdapter();
+ }
+ @Override
+ public Adapter caseProtocolSemantics(ProtocolSemantics object)
+ {
+ return createProtocolSemanticsAdapter();
+ }
+ @Override
+ public Adapter caseSemanticsRule(SemanticsRule object)
+ {
+ return createSemanticsRuleAdapter();
+ }
+ @Override
+ public Adapter caseSemanticsInRule(SemanticsInRule object)
+ {
+ return createSemanticsInRuleAdapter();
+ }
+ @Override
+ public Adapter caseSemanticsOutRule(SemanticsOutRule object)
+ {
+ return createSemanticsOutRuleAdapter();
+ }
+ @Override
+ public Adapter caseActorClass(ActorClass object)
+ {
+ return createActorClassAdapter();
+ }
+ @Override
+ public Adapter caseInterfaceItem(InterfaceItem object)
+ {
+ return createInterfaceItemAdapter();
+ }
+ @Override
+ public Adapter casePort(Port object)
+ {
+ return createPortAdapter();
+ }
+ @Override
+ public Adapter caseExternalPort(ExternalPort object)
+ {
+ return createExternalPortAdapter();
+ }
+ @Override
+ public Adapter caseSAPRef(SAPRef object)
+ {
+ return createSAPRefAdapter();
+ }
+ @Override
+ public Adapter caseSPPRef(SPPRef object)
+ {
+ return createSPPRefAdapter();
+ }
+ @Override
+ public Adapter caseServiceImplementation(ServiceImplementation object)
+ {
+ return createServiceImplementationAdapter();
+ }
+ @Override
+ public Adapter caseLogicalSystem(LogicalSystem object)
+ {
+ return createLogicalSystemAdapter();
+ }
+ @Override
+ public Adapter caseActorContainerRef(ActorContainerRef object)
+ {
+ return createActorContainerRefAdapter();
+ }
+ @Override
+ public Adapter caseSubSystemRef(SubSystemRef object)
+ {
+ return createSubSystemRefAdapter();
+ }
+ @Override
+ public Adapter caseSubSystemClass(SubSystemClass object)
+ {
+ return createSubSystemClassAdapter();
+ }
+ @Override
+ public Adapter caseLogicalThread(LogicalThread object)
+ {
+ return createLogicalThreadAdapter();
+ }
+ @Override
+ public Adapter caseActorInstancePath(ActorInstancePath object)
+ {
+ return createActorInstancePathAdapter();
+ }
+ @Override
+ public Adapter caseBinding(Binding object)
+ {
+ return createBindingAdapter();
+ }
+ @Override
+ public Adapter caseBindingEndPoint(BindingEndPoint object)
+ {
+ return createBindingEndPointAdapter();
+ }
+ @Override
+ public Adapter caseLayerConnection(LayerConnection object)
+ {
+ return createLayerConnectionAdapter();
+ }
+ @Override
+ public Adapter caseSAPoint(SAPoint object)
+ {
+ return createSAPointAdapter();
+ }
+ @Override
+ public Adapter caseRefSAPoint(RefSAPoint object)
+ {
+ return createRefSAPointAdapter();
+ }
+ @Override
+ public Adapter caseRelaySAPoint(RelaySAPoint object)
+ {
+ return createRelaySAPointAdapter();
+ }
+ @Override
+ public Adapter caseSPPoint(SPPoint object)
+ {
+ return createSPPointAdapter();
+ }
+ @Override
+ public Adapter caseActorRef(ActorRef object)
+ {
+ return createActorRefAdapter();
+ }
+ @Override
+ public Adapter caseStateGraphNode(StateGraphNode object)
+ {
+ return createStateGraphNodeAdapter();
+ }
+ @Override
+ public Adapter caseStateGraphItem(StateGraphItem object)
+ {
+ return createStateGraphItemAdapter();
+ }
+ @Override
+ public Adapter caseState(State object)
+ {
+ return createStateAdapter();
+ }
+ @Override
+ public Adapter caseStateGraph(StateGraph object)
+ {
+ return createStateGraphAdapter();
+ }
+ @Override
+ public Adapter caseBaseState(BaseState object)
+ {
+ return createBaseStateAdapter();
+ }
+ @Override
+ public Adapter caseRefinedState(RefinedState object)
+ {
+ return createRefinedStateAdapter();
+ }
+ @Override
+ public Adapter caseDetailCode(DetailCode object)
+ {
+ return createDetailCodeAdapter();
+ }
+ @Override
+ public Adapter caseTrPoint(TrPoint object)
+ {
+ return createTrPointAdapter();
+ }
+ @Override
+ public Adapter caseTransitionPoint(TransitionPoint object)
+ {
+ return createTransitionPointAdapter();
+ }
+ @Override
+ public Adapter caseEntryPoint(EntryPoint object)
+ {
+ return createEntryPointAdapter();
+ }
+ @Override
+ public Adapter caseExitPoint(ExitPoint object)
+ {
+ return createExitPointAdapter();
+ }
+ @Override
+ public Adapter caseChoicePoint(ChoicePoint object)
+ {
+ return createChoicePointAdapter();
+ }
+ @Override
+ public Adapter caseTransition(Transition object)
+ {
+ return createTransitionAdapter();
+ }
+ @Override
+ public Adapter caseNonInitialTransition(NonInitialTransition object)
+ {
+ return createNonInitialTransitionAdapter();
+ }
+ @Override
+ public Adapter caseInitialTransition(InitialTransition object)
+ {
+ return createInitialTransitionAdapter();
+ }
+ @Override
+ public Adapter caseContinuationTransition(ContinuationTransition object)
+ {
+ return createContinuationTransitionAdapter();
+ }
+ @Override
+ public Adapter caseTriggeredTransition(TriggeredTransition object)
+ {
+ return createTriggeredTransitionAdapter();
+ }
+ @Override
+ public Adapter caseCPBranchTransition(CPBranchTransition object)
+ {
+ return createCPBranchTransitionAdapter();
+ }
+ @Override
+ public Adapter caseTransitionTerminal(TransitionTerminal object)
+ {
+ return createTransitionTerminalAdapter();
+ }
+ @Override
+ public Adapter caseStateTerminal(StateTerminal object)
+ {
+ return createStateTerminalAdapter();
+ }
+ @Override
+ public Adapter caseTrPointTerminal(TrPointTerminal object)
+ {
+ return createTrPointTerminalAdapter();
+ }
+ @Override
+ public Adapter caseSubStateTrPointTerminal(SubStateTrPointTerminal object)
+ {
+ return createSubStateTrPointTerminalAdapter();
+ }
+ @Override
+ public Adapter caseChoicepointTerminal(ChoicepointTerminal object)
+ {
+ return createChoicepointTerminalAdapter();
+ }
+ @Override
+ public Adapter caseTrigger(Trigger object)
+ {
+ return createTriggerAdapter();
+ }
+ @Override
+ public Adapter caseMessageFromIf(MessageFromIf object)
+ {
+ return createMessageFromIfAdapter();
+ }
+ @Override
+ public Adapter caseGuard(Guard object)
+ {
+ return createGuardAdapter();
+ }
+ @Override
+ public Adapter caseImport(Import object)
+ {
+ return createImportAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object)
+ {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target)
+ {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.RoomModel <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.RoomModel
+ * @generated
+ */
+ public Adapter createRoomModelAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.RoomClass <em>Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.RoomClass
+ * @generated
+ */
+ public Adapter createRoomClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.StructureClass <em>Structure Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.StructureClass
+ * @generated
+ */
+ public Adapter createStructureClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ActorContainerClass <em>Actor Container Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ActorContainerClass
+ * @generated
+ */
+ public Adapter createActorContainerClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.TypedID <em>Typed ID</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.TypedID
+ * @generated
+ */
+ public Adapter createTypedIDAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.FreeTypedID <em>Free Typed ID</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.FreeTypedID
+ * @generated
+ */
+ public Adapter createFreeTypedIDAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Type <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Type
+ * @generated
+ */
+ public Adapter createTypeAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.FreeType <em>Free Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.FreeType
+ * @generated
+ */
+ public Adapter createFreeTypeAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.DataClass <em>Data Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.DataClass
+ * @generated
+ */
+ public Adapter createDataClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Attribute <em>Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Attribute
+ * @generated
+ */
+ public Adapter createAttributeAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Operation <em>Operation</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Operation
+ * @generated
+ */
+ public Adapter createOperationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ProtocolClass <em>Protocol Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ProtocolClass
+ * @generated
+ */
+ public Adapter createProtocolClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Message <em>Message</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Message
+ * @generated
+ */
+ public Adapter createMessageAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.PortClass <em>Port Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.PortClass
+ * @generated
+ */
+ public Adapter createPortClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.MessageHandler <em>Message Handler</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.MessageHandler
+ * @generated
+ */
+ public Adapter createMessageHandlerAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ProtocolSemantics <em>Protocol Semantics</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ProtocolSemantics
+ * @generated
+ */
+ public Adapter createProtocolSemanticsAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SemanticsRule <em>Semantics Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SemanticsRule
+ * @generated
+ */
+ public Adapter createSemanticsRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SemanticsInRule <em>Semantics In Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SemanticsInRule
+ * @generated
+ */
+ public Adapter createSemanticsInRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SemanticsOutRule <em>Semantics Out Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SemanticsOutRule
+ * @generated
+ */
+ public Adapter createSemanticsOutRuleAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ActorClass <em>Actor Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ActorClass
+ * @generated
+ */
+ public Adapter createActorClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.InterfaceItem <em>Interface Item</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.InterfaceItem
+ * @generated
+ */
+ public Adapter createInterfaceItemAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Port <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Port
+ * @generated
+ */
+ public Adapter createPortAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ExternalPort <em>External Port</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ExternalPort
+ * @generated
+ */
+ public Adapter createExternalPortAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SAPRef <em>SAP Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SAPRef
+ * @generated
+ */
+ public Adapter createSAPRefAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SPPRef <em>SPP Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SPPRef
+ * @generated
+ */
+ public Adapter createSPPRefAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ServiceImplementation <em>Service Implementation</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ServiceImplementation
+ * @generated
+ */
+ public Adapter createServiceImplementationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.LogicalSystem <em>Logical System</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.LogicalSystem
+ * @generated
+ */
+ public Adapter createLogicalSystemAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ActorContainerRef <em>Actor Container Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ActorContainerRef
+ * @generated
+ */
+ public Adapter createActorContainerRefAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SubSystemRef <em>Sub System Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SubSystemRef
+ * @generated
+ */
+ public Adapter createSubSystemRefAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SubSystemClass <em>Sub System Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SubSystemClass
+ * @generated
+ */
+ public Adapter createSubSystemClassAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.LogicalThread <em>Logical Thread</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.LogicalThread
+ * @generated
+ */
+ public Adapter createLogicalThreadAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ActorInstancePath <em>Actor Instance Path</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ActorInstancePath
+ * @generated
+ */
+ public Adapter createActorInstancePathAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Binding <em>Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Binding
+ * @generated
+ */
+ public Adapter createBindingAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.BindingEndPoint <em>Binding End Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.BindingEndPoint
+ * @generated
+ */
+ public Adapter createBindingEndPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.LayerConnection <em>Layer Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.LayerConnection
+ * @generated
+ */
+ public Adapter createLayerConnectionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SAPoint <em>SA Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SAPoint
+ * @generated
+ */
+ public Adapter createSAPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.RefSAPoint <em>Ref SA Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.RefSAPoint
+ * @generated
+ */
+ public Adapter createRefSAPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.RelaySAPoint <em>Relay SA Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.RelaySAPoint
+ * @generated
+ */
+ public Adapter createRelaySAPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SPPoint <em>SP Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SPPoint
+ * @generated
+ */
+ public Adapter createSPPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ActorRef <em>Actor Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ActorRef
+ * @generated
+ */
+ public Adapter createActorRefAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.StateGraphNode <em>State Graph Node</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.StateGraphNode
+ * @generated
+ */
+ public Adapter createStateGraphNodeAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.StateGraphItem <em>State Graph Item</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.StateGraphItem
+ * @generated
+ */
+ public Adapter createStateGraphItemAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.State <em>State</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.State
+ * @generated
+ */
+ public Adapter createStateAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.StateGraph <em>State Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.StateGraph
+ * @generated
+ */
+ public Adapter createStateGraphAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.BaseState <em>Base State</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.BaseState
+ * @generated
+ */
+ public Adapter createBaseStateAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.RefinedState <em>Refined State</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.RefinedState
+ * @generated
+ */
+ public Adapter createRefinedStateAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.DetailCode <em>Detail Code</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.DetailCode
+ * @generated
+ */
+ public Adapter createDetailCodeAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.TrPoint <em>Tr Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.TrPoint
+ * @generated
+ */
+ public Adapter createTrPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.TransitionPoint <em>Transition Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.TransitionPoint
+ * @generated
+ */
+ public Adapter createTransitionPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.EntryPoint <em>Entry Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.EntryPoint
+ * @generated
+ */
+ public Adapter createEntryPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ExitPoint <em>Exit Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ExitPoint
+ * @generated
+ */
+ public Adapter createExitPointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ChoicePoint <em>Choice Point</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ChoicePoint
+ * @generated
+ */
+ public Adapter createChoicePointAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Transition <em>Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Transition
+ * @generated
+ */
+ public Adapter createTransitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.NonInitialTransition <em>Non Initial Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.NonInitialTransition
+ * @generated
+ */
+ public Adapter createNonInitialTransitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.InitialTransition <em>Initial Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.InitialTransition
+ * @generated
+ */
+ public Adapter createInitialTransitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ContinuationTransition <em>Continuation Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ContinuationTransition
+ * @generated
+ */
+ public Adapter createContinuationTransitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.TriggeredTransition <em>Triggered Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.TriggeredTransition
+ * @generated
+ */
+ public Adapter createTriggeredTransitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.CPBranchTransition <em>CP Branch Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.CPBranchTransition
+ * @generated
+ */
+ public Adapter createCPBranchTransitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.TransitionTerminal <em>Transition Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.TransitionTerminal
+ * @generated
+ */
+ public Adapter createTransitionTerminalAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.StateTerminal <em>State Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.StateTerminal
+ * @generated
+ */
+ public Adapter createStateTerminalAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.TrPointTerminal <em>Tr Point Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.TrPointTerminal
+ * @generated
+ */
+ public Adapter createTrPointTerminalAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.SubStateTrPointTerminal <em>Sub State Tr Point Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.SubStateTrPointTerminal
+ * @generated
+ */
+ public Adapter createSubStateTrPointTerminalAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ChoicepointTerminal <em>Choicepoint Terminal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ChoicepointTerminal
+ * @generated
+ */
+ public Adapter createChoicepointTerminalAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Trigger <em>Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Trigger
+ * @generated
+ */
+ public Adapter createTriggerAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.MessageFromIf <em>Message From If</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.MessageFromIf
+ * @generated
+ */
+ public Adapter createMessageFromIfAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Guard <em>Guard</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Guard
+ * @generated
+ */
+ public Adapter createGuardAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.Import <em>Import</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.Import
+ * @generated
+ */
+ public Adapter createImportAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter()
+ {
+ return null;
+ }
+
+} //RoomAdapterFactory
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomSwitch.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomSwitch.java
new file mode 100644
index 000000000..b02cb9d0e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/room/util/RoomSwitch.java
@@ -0,0 +1,1722 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+
+ */
+package org.eclipse.etrice.core.room.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.etrice.core.room.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.core.room.RoomPackage
+ * @generated
+ */
+public class RoomSwitch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static RoomPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RoomSwitch()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = RoomPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T doSwitch(EObject theEObject)
+ {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(EClass theEClass, EObject theEObject)
+ {
+ if (theEClass.eContainer() == modelPackage)
+ {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else
+ {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(int classifierID, EObject theEObject)
+ {
+ switch (classifierID)
+ {
+ case RoomPackage.ROOM_MODEL:
+ {
+ RoomModel roomModel = (RoomModel)theEObject;
+ T result = caseRoomModel(roomModel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ROOM_CLASS:
+ {
+ RoomClass roomClass = (RoomClass)theEObject;
+ T result = caseRoomClass(roomClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.STRUCTURE_CLASS:
+ {
+ StructureClass structureClass = (StructureClass)theEObject;
+ T result = caseStructureClass(structureClass);
+ if (result == null) result = caseRoomClass(structureClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ACTOR_CONTAINER_CLASS:
+ {
+ ActorContainerClass actorContainerClass = (ActorContainerClass)theEObject;
+ T result = caseActorContainerClass(actorContainerClass);
+ if (result == null) result = caseStructureClass(actorContainerClass);
+ if (result == null) result = caseRoomClass(actorContainerClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TYPED_ID:
+ {
+ TypedID typedID = (TypedID)theEObject;
+ T result = caseTypedID(typedID);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.FREE_TYPED_ID:
+ {
+ FreeTypedID freeTypedID = (FreeTypedID)theEObject;
+ T result = caseFreeTypedID(freeTypedID);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TYPE:
+ {
+ Type type = (Type)theEObject;
+ T result = caseType(type);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.FREE_TYPE:
+ {
+ FreeType freeType = (FreeType)theEObject;
+ T result = caseFreeType(freeType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.DATA_CLASS:
+ {
+ DataClass dataClass = (DataClass)theEObject;
+ T result = caseDataClass(dataClass);
+ if (result == null) result = caseRoomClass(dataClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ATTRIBUTE:
+ {
+ Attribute attribute = (Attribute)theEObject;
+ T result = caseAttribute(attribute);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.OPERATION:
+ {
+ Operation operation = (Operation)theEObject;
+ T result = caseOperation(operation);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.PROTOCOL_CLASS:
+ {
+ ProtocolClass protocolClass = (ProtocolClass)theEObject;
+ T result = caseProtocolClass(protocolClass);
+ if (result == null) result = caseRoomClass(protocolClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.MESSAGE:
+ {
+ Message message = (Message)theEObject;
+ T result = caseMessage(message);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.PORT_CLASS:
+ {
+ PortClass portClass = (PortClass)theEObject;
+ T result = casePortClass(portClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.MESSAGE_HANDLER:
+ {
+ MessageHandler messageHandler = (MessageHandler)theEObject;
+ T result = caseMessageHandler(messageHandler);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.PROTOCOL_SEMANTICS:
+ {
+ ProtocolSemantics protocolSemantics = (ProtocolSemantics)theEObject;
+ T result = caseProtocolSemantics(protocolSemantics);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SEMANTICS_RULE:
+ {
+ SemanticsRule semanticsRule = (SemanticsRule)theEObject;
+ T result = caseSemanticsRule(semanticsRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SEMANTICS_IN_RULE:
+ {
+ SemanticsInRule semanticsInRule = (SemanticsInRule)theEObject;
+ T result = caseSemanticsInRule(semanticsInRule);
+ if (result == null) result = caseSemanticsRule(semanticsInRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SEMANTICS_OUT_RULE:
+ {
+ SemanticsOutRule semanticsOutRule = (SemanticsOutRule)theEObject;
+ T result = caseSemanticsOutRule(semanticsOutRule);
+ if (result == null) result = caseSemanticsRule(semanticsOutRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ACTOR_CLASS:
+ {
+ ActorClass actorClass = (ActorClass)theEObject;
+ T result = caseActorClass(actorClass);
+ if (result == null) result = caseActorContainerClass(actorClass);
+ if (result == null) result = caseStructureClass(actorClass);
+ if (result == null) result = caseRoomClass(actorClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.INTERFACE_ITEM:
+ {
+ InterfaceItem interfaceItem = (InterfaceItem)theEObject;
+ T result = caseInterfaceItem(interfaceItem);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.PORT:
+ {
+ Port port = (Port)theEObject;
+ T result = casePort(port);
+ if (result == null) result = caseInterfaceItem(port);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.EXTERNAL_PORT:
+ {
+ ExternalPort externalPort = (ExternalPort)theEObject;
+ T result = caseExternalPort(externalPort);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SAP_REF:
+ {
+ SAPRef sapRef = (SAPRef)theEObject;
+ T result = caseSAPRef(sapRef);
+ if (result == null) result = caseInterfaceItem(sapRef);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SPP_REF:
+ {
+ SPPRef sppRef = (SPPRef)theEObject;
+ T result = caseSPPRef(sppRef);
+ if (result == null) result = caseInterfaceItem(sppRef);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SERVICE_IMPLEMENTATION:
+ {
+ ServiceImplementation serviceImplementation = (ServiceImplementation)theEObject;
+ T result = caseServiceImplementation(serviceImplementation);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.LOGICAL_SYSTEM:
+ {
+ LogicalSystem logicalSystem = (LogicalSystem)theEObject;
+ T result = caseLogicalSystem(logicalSystem);
+ if (result == null) result = caseStructureClass(logicalSystem);
+ if (result == null) result = caseRoomClass(logicalSystem);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ACTOR_CONTAINER_REF:
+ {
+ ActorContainerRef actorContainerRef = (ActorContainerRef)theEObject;
+ T result = caseActorContainerRef(actorContainerRef);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SUB_SYSTEM_REF:
+ {
+ SubSystemRef subSystemRef = (SubSystemRef)theEObject;
+ T result = caseSubSystemRef(subSystemRef);
+ if (result == null) result = caseActorContainerRef(subSystemRef);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SUB_SYSTEM_CLASS:
+ {
+ SubSystemClass subSystemClass = (SubSystemClass)theEObject;
+ T result = caseSubSystemClass(subSystemClass);
+ if (result == null) result = caseActorContainerClass(subSystemClass);
+ if (result == null) result = caseStructureClass(subSystemClass);
+ if (result == null) result = caseRoomClass(subSystemClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.LOGICAL_THREAD:
+ {
+ LogicalThread logicalThread = (LogicalThread)theEObject;
+ T result = caseLogicalThread(logicalThread);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ACTOR_INSTANCE_PATH:
+ {
+ ActorInstancePath actorInstancePath = (ActorInstancePath)theEObject;
+ T result = caseActorInstancePath(actorInstancePath);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.BINDING:
+ {
+ Binding binding = (Binding)theEObject;
+ T result = caseBinding(binding);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.BINDING_END_POINT:
+ {
+ BindingEndPoint bindingEndPoint = (BindingEndPoint)theEObject;
+ T result = caseBindingEndPoint(bindingEndPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.LAYER_CONNECTION:
+ {
+ LayerConnection layerConnection = (LayerConnection)theEObject;
+ T result = caseLayerConnection(layerConnection);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SA_POINT:
+ {
+ SAPoint saPoint = (SAPoint)theEObject;
+ T result = caseSAPoint(saPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.REF_SA_POINT:
+ {
+ RefSAPoint refSAPoint = (RefSAPoint)theEObject;
+ T result = caseRefSAPoint(refSAPoint);
+ if (result == null) result = caseSAPoint(refSAPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.RELAY_SA_POINT:
+ {
+ RelaySAPoint relaySAPoint = (RelaySAPoint)theEObject;
+ T result = caseRelaySAPoint(relaySAPoint);
+ if (result == null) result = caseSAPoint(relaySAPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SP_POINT:
+ {
+ SPPoint spPoint = (SPPoint)theEObject;
+ T result = caseSPPoint(spPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ACTOR_REF:
+ {
+ ActorRef actorRef = (ActorRef)theEObject;
+ T result = caseActorRef(actorRef);
+ if (result == null) result = caseActorContainerRef(actorRef);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.STATE_GRAPH_NODE:
+ {
+ StateGraphNode stateGraphNode = (StateGraphNode)theEObject;
+ T result = caseStateGraphNode(stateGraphNode);
+ if (result == null) result = caseStateGraphItem(stateGraphNode);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.STATE_GRAPH_ITEM:
+ {
+ StateGraphItem stateGraphItem = (StateGraphItem)theEObject;
+ T result = caseStateGraphItem(stateGraphItem);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.STATE:
+ {
+ State state = (State)theEObject;
+ T result = caseState(state);
+ if (result == null) result = caseStateGraphNode(state);
+ if (result == null) result = caseStateGraphItem(state);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.STATE_GRAPH:
+ {
+ StateGraph stateGraph = (StateGraph)theEObject;
+ T result = caseStateGraph(stateGraph);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.BASE_STATE:
+ {
+ BaseState baseState = (BaseState)theEObject;
+ T result = caseBaseState(baseState);
+ if (result == null) result = caseState(baseState);
+ if (result == null) result = caseStateGraphNode(baseState);
+ if (result == null) result = caseStateGraphItem(baseState);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.REFINED_STATE:
+ {
+ RefinedState refinedState = (RefinedState)theEObject;
+ T result = caseRefinedState(refinedState);
+ if (result == null) result = caseState(refinedState);
+ if (result == null) result = caseStateGraphNode(refinedState);
+ if (result == null) result = caseStateGraphItem(refinedState);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.DETAIL_CODE:
+ {
+ DetailCode detailCode = (DetailCode)theEObject;
+ T result = caseDetailCode(detailCode);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TR_POINT:
+ {
+ TrPoint trPoint = (TrPoint)theEObject;
+ T result = caseTrPoint(trPoint);
+ if (result == null) result = caseStateGraphNode(trPoint);
+ if (result == null) result = caseStateGraphItem(trPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TRANSITION_POINT:
+ {
+ TransitionPoint transitionPoint = (TransitionPoint)theEObject;
+ T result = caseTransitionPoint(transitionPoint);
+ if (result == null) result = caseTrPoint(transitionPoint);
+ if (result == null) result = caseStateGraphNode(transitionPoint);
+ if (result == null) result = caseStateGraphItem(transitionPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.ENTRY_POINT:
+ {
+ EntryPoint entryPoint = (EntryPoint)theEObject;
+ T result = caseEntryPoint(entryPoint);
+ if (result == null) result = caseTrPoint(entryPoint);
+ if (result == null) result = caseStateGraphNode(entryPoint);
+ if (result == null) result = caseStateGraphItem(entryPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.EXIT_POINT:
+ {
+ ExitPoint exitPoint = (ExitPoint)theEObject;
+ T result = caseExitPoint(exitPoint);
+ if (result == null) result = caseTrPoint(exitPoint);
+ if (result == null) result = caseStateGraphNode(exitPoint);
+ if (result == null) result = caseStateGraphItem(exitPoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.CHOICE_POINT:
+ {
+ ChoicePoint choicePoint = (ChoicePoint)theEObject;
+ T result = caseChoicePoint(choicePoint);
+ if (result == null) result = caseStateGraphNode(choicePoint);
+ if (result == null) result = caseStateGraphItem(choicePoint);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TRANSITION:
+ {
+ Transition transition = (Transition)theEObject;
+ T result = caseTransition(transition);
+ if (result == null) result = caseStateGraphItem(transition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.NON_INITIAL_TRANSITION:
+ {
+ NonInitialTransition nonInitialTransition = (NonInitialTransition)theEObject;
+ T result = caseNonInitialTransition(nonInitialTransition);
+ if (result == null) result = caseTransition(nonInitialTransition);
+ if (result == null) result = caseStateGraphItem(nonInitialTransition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.INITIAL_TRANSITION:
+ {
+ InitialTransition initialTransition = (InitialTransition)theEObject;
+ T result = caseInitialTransition(initialTransition);
+ if (result == null) result = caseTransition(initialTransition);
+ if (result == null) result = caseStateGraphItem(initialTransition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.CONTINUATION_TRANSITION:
+ {
+ ContinuationTransition continuationTransition = (ContinuationTransition)theEObject;
+ T result = caseContinuationTransition(continuationTransition);
+ if (result == null) result = caseNonInitialTransition(continuationTransition);
+ if (result == null) result = caseTransition(continuationTransition);
+ if (result == null) result = caseStateGraphItem(continuationTransition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TRIGGERED_TRANSITION:
+ {
+ TriggeredTransition triggeredTransition = (TriggeredTransition)theEObject;
+ T result = caseTriggeredTransition(triggeredTransition);
+ if (result == null) result = caseNonInitialTransition(triggeredTransition);
+ if (result == null) result = caseTransition(triggeredTransition);
+ if (result == null) result = caseStateGraphItem(triggeredTransition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.CP_BRANCH_TRANSITION:
+ {
+ CPBranchTransition cpBranchTransition = (CPBranchTransition)theEObject;
+ T result = caseCPBranchTransition(cpBranchTransition);
+ if (result == null) result = caseNonInitialTransition(cpBranchTransition);
+ if (result == null) result = caseTransition(cpBranchTransition);
+ if (result == null) result = caseStateGraphItem(cpBranchTransition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TRANSITION_TERMINAL:
+ {
+ TransitionTerminal transitionTerminal = (TransitionTerminal)theEObject;
+ T result = caseTransitionTerminal(transitionTerminal);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.STATE_TERMINAL:
+ {
+ StateTerminal stateTerminal = (StateTerminal)theEObject;
+ T result = caseStateTerminal(stateTerminal);
+ if (result == null) result = caseTransitionTerminal(stateTerminal);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TR_POINT_TERMINAL:
+ {
+ TrPointTerminal trPointTerminal = (TrPointTerminal)theEObject;
+ T result = caseTrPointTerminal(trPointTerminal);
+ if (result == null) result = caseTransitionTerminal(trPointTerminal);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.SUB_STATE_TR_POINT_TERMINAL:
+ {
+ SubStateTrPointTerminal subStateTrPointTerminal = (SubStateTrPointTerminal)theEObject;
+ T result = caseSubStateTrPointTerminal(subStateTrPointTerminal);
+ if (result == null) result = caseTransitionTerminal(subStateTrPointTerminal);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.CHOICEPOINT_TERMINAL:
+ {
+ ChoicepointTerminal choicepointTerminal = (ChoicepointTerminal)theEObject;
+ T result = caseChoicepointTerminal(choicepointTerminal);
+ if (result == null) result = caseTransitionTerminal(choicepointTerminal);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.TRIGGER:
+ {
+ Trigger trigger = (Trigger)theEObject;
+ T result = caseTrigger(trigger);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.MESSAGE_FROM_IF:
+ {
+ MessageFromIf messageFromIf = (MessageFromIf)theEObject;
+ T result = caseMessageFromIf(messageFromIf);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.GUARD:
+ {
+ Guard guard = (Guard)theEObject;
+ T result = caseGuard(guard);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case RoomPackage.IMPORT:
+ {
+ Import import_ = (Import)theEObject;
+ T result = caseImport(import_);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRoomModel(RoomModel object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRoomClass(RoomClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Structure Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Structure Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStructureClass(StructureClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Container Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Container Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorContainerClass(ActorContainerClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Typed ID</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Typed ID</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypedID(TypedID object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Free Typed ID</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Free Typed ID</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFreeTypedID(FreeTypedID object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseType(Type object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Free Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Free Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFreeType(FreeType object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Data Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataClass(DataClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Attribute</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Attribute</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAttribute(Attribute object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Operation</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Operation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOperation(Operation object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Protocol Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Protocol Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProtocolClass(ProtocolClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Message</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Message</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMessage(Message object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Port Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Port Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePortClass(PortClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Message Handler</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Message Handler</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMessageHandler(MessageHandler object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Protocol Semantics</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Protocol Semantics</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProtocolSemantics(ProtocolSemantics object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Semantics Rule</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Semantics Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSemanticsRule(SemanticsRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Semantics In Rule</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Semantics In Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSemanticsInRule(SemanticsInRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Semantics Out Rule</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Semantics Out Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSemanticsOutRule(SemanticsOutRule object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorClass(ActorClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Interface Item</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Interface Item</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInterfaceItem(InterfaceItem object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Port</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Port</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePort(Port object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>External Port</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>External Port</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExternalPort(ExternalPort object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>SAP Ref</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>SAP Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSAPRef(SAPRef object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>SPP Ref</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>SPP Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSPPRef(SPPRef object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Service Implementation</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Service Implementation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseServiceImplementation(ServiceImplementation object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Logical System</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Logical System</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLogicalSystem(LogicalSystem object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Container Ref</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Container Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorContainerRef(ActorContainerRef object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sub System Ref</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sub System Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSubSystemRef(SubSystemRef object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sub System Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sub System Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSubSystemClass(SubSystemClass object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Logical Thread</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Logical Thread</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLogicalThread(LogicalThread object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Instance Path</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Instance Path</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorInstancePath(ActorInstancePath object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Binding</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Binding</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBinding(Binding object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Binding End Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Binding End Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBindingEndPoint(BindingEndPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Connection</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Connection</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerConnection(LayerConnection object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>SA Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>SA Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSAPoint(SAPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Ref SA Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Ref SA Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRefSAPoint(RefSAPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Relay SA Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Relay SA Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRelaySAPoint(RelaySAPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>SP Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>SP Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSPPoint(SPPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Ref</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorRef(ActorRef object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>State Graph Node</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>State Graph Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStateGraphNode(StateGraphNode object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>State Graph Item</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>State Graph Item</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStateGraphItem(StateGraphItem object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>State</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>State</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseState(State object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>State Graph</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>State Graph</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStateGraph(StateGraph object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Base State</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Base State</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBaseState(BaseState object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Refined State</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Refined State</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRefinedState(RefinedState object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Detail Code</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Detail Code</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDetailCode(DetailCode object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Tr Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Tr Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTrPoint(TrPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Transition Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Transition Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransitionPoint(TransitionPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Entry Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Entry Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEntryPoint(EntryPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Exit Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Exit Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExitPoint(ExitPoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Choice Point</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Choice Point</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseChoicePoint(ChoicePoint object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Transition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Transition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransition(Transition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Non Initial Transition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Non Initial Transition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNonInitialTransition(NonInitialTransition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Initial Transition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Initial Transition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInitialTransition(InitialTransition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Continuation Transition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Continuation Transition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseContinuationTransition(ContinuationTransition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Triggered Transition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Triggered Transition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTriggeredTransition(TriggeredTransition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>CP Branch Transition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>CP Branch Transition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCPBranchTransition(CPBranchTransition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Transition Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Transition Terminal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransitionTerminal(TransitionTerminal object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>State Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>State Terminal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStateTerminal(StateTerminal object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Tr Point Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Tr Point Terminal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTrPointTerminal(TrPointTerminal object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sub State Tr Point Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sub State Tr Point Terminal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSubStateTrPointTerminal(SubStateTrPointTerminal object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Choicepoint Terminal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Choicepoint Terminal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseChoicepointTerminal(ChoicepointTerminal object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Trigger</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Trigger</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTrigger(Trigger object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Message From If</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Message From If</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMessageFromIf(MessageFromIf object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Guard</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Guard</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseGuard(Guard object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Import</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Import</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseImport(Import object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object)
+ {
+ return null;
+ }
+
+} //RoomSwitch
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/services/RoomGrammarAccess.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/services/RoomGrammarAccess.java
new file mode 100644
index 000000000..e63ec836e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/services/RoomGrammarAccess.java
@@ -0,0 +1,4319 @@
+/*
+* generated by Xtext
+*/
+
+package org.eclipse.etrice.core.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+
+@Singleton
+public class RoomGrammarAccess extends AbstractGrammarElementFinder {
+
+
+ public class RoomModelElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RoomModel");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cRoomModelKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameFQNParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cImportsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cImportsImportParserRuleCall_3_0 = (RuleCall)cImportsAssignment_3.eContents().get(0);
+ private final Alternatives cAlternatives_4 = (Alternatives)cGroup.eContents().get(4);
+ private final Assignment cDataClassesAssignment_4_0 = (Assignment)cAlternatives_4.eContents().get(0);
+ private final RuleCall cDataClassesDataClassParserRuleCall_4_0_0 = (RuleCall)cDataClassesAssignment_4_0.eContents().get(0);
+ private final Assignment cProtocolClassesAssignment_4_1 = (Assignment)cAlternatives_4.eContents().get(1);
+ private final RuleCall cProtocolClassesProtocolClassParserRuleCall_4_1_0 = (RuleCall)cProtocolClassesAssignment_4_1.eContents().get(0);
+ private final Assignment cActorClassesAssignment_4_2 = (Assignment)cAlternatives_4.eContents().get(2);
+ private final RuleCall cActorClassesActorClassParserRuleCall_4_2_0 = (RuleCall)cActorClassesAssignment_4_2.eContents().get(0);
+ private final Assignment cSubSystemClassesAssignment_4_3 = (Assignment)cAlternatives_4.eContents().get(3);
+ private final RuleCall cSubSystemClassesSubSystemClassParserRuleCall_4_3_0 = (RuleCall)cSubSystemClassesAssignment_4_3.eContents().get(0);
+ private final Assignment cSystemsAssignment_4_4 = (Assignment)cAlternatives_4.eContents().get(4);
+ private final RuleCall cSystemsLogicalSystemParserRuleCall_4_4_0 = (RuleCall)cSystemsAssignment_4_4.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+
+ //RoomModel:
+ // "RoomModel" name=FQN "{" imports+=Import* (dataClasses+=DataClass | protocolClasses+=ProtocolClass |
+ // actorClasses+=ActorClass | subSystemClasses+=SubSystemClass | systems+=LogicalSystem)+ "}";
+ public ParserRule getRule() { return rule; }
+
+ //"RoomModel" name=FQN "{" imports+=Import* (dataClasses+=DataClass | protocolClasses+=ProtocolClass |
+ //actorClasses+=ActorClass | subSystemClasses+=SubSystemClass | systems+=LogicalSystem)+ "}"
+ public Group getGroup() { return cGroup; }
+
+ //"RoomModel"
+ public Keyword getRoomModelKeyword_0() { return cRoomModelKeyword_0; }
+
+ //name=FQN
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //FQN
+ public RuleCall getNameFQNParserRuleCall_1_0() { return cNameFQNParserRuleCall_1_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+ //imports+=Import*
+ public Assignment getImportsAssignment_3() { return cImportsAssignment_3; }
+
+ //Import
+ public RuleCall getImportsImportParserRuleCall_3_0() { return cImportsImportParserRuleCall_3_0; }
+
+ //(dataClasses+=DataClass | protocolClasses+=ProtocolClass | actorClasses+=ActorClass | subSystemClasses+=SubSystemClass |
+ //systems+=LogicalSystem)+
+ public Alternatives getAlternatives_4() { return cAlternatives_4; }
+
+ //dataClasses+=DataClass
+ public Assignment getDataClassesAssignment_4_0() { return cDataClassesAssignment_4_0; }
+
+ //DataClass
+ public RuleCall getDataClassesDataClassParserRuleCall_4_0_0() { return cDataClassesDataClassParserRuleCall_4_0_0; }
+
+ //protocolClasses+=ProtocolClass
+ public Assignment getProtocolClassesAssignment_4_1() { return cProtocolClassesAssignment_4_1; }
+
+ //ProtocolClass
+ public RuleCall getProtocolClassesProtocolClassParserRuleCall_4_1_0() { return cProtocolClassesProtocolClassParserRuleCall_4_1_0; }
+
+ //actorClasses+=ActorClass
+ public Assignment getActorClassesAssignment_4_2() { return cActorClassesAssignment_4_2; }
+
+ //ActorClass
+ public RuleCall getActorClassesActorClassParserRuleCall_4_2_0() { return cActorClassesActorClassParserRuleCall_4_2_0; }
+
+ //subSystemClasses+=SubSystemClass
+ public Assignment getSubSystemClassesAssignment_4_3() { return cSubSystemClassesAssignment_4_3; }
+
+ //SubSystemClass
+ public RuleCall getSubSystemClassesSubSystemClassParserRuleCall_4_3_0() { return cSubSystemClassesSubSystemClassParserRuleCall_4_3_0; }
+
+ //systems+=LogicalSystem
+ public Assignment getSystemsAssignment_4_4() { return cSystemsAssignment_4_4; }
+
+ //LogicalSystem
+ public RuleCall getSystemsLogicalSystemParserRuleCall_4_4_0() { return cSystemsLogicalSystemParserRuleCall_4_4_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+ }
+
+ public class RoomClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RoomClass");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cDataClassParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cProtocolClassParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cStructureClassParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ //RoomClass:
+ // DataClass | ProtocolClass | StructureClass;
+ public ParserRule getRule() { return rule; }
+
+ //DataClass | ProtocolClass | StructureClass
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //DataClass
+ public RuleCall getDataClassParserRuleCall_0() { return cDataClassParserRuleCall_0; }
+
+ //ProtocolClass
+ public RuleCall getProtocolClassParserRuleCall_1() { return cProtocolClassParserRuleCall_1; }
+
+ //StructureClass
+ public RuleCall getStructureClassParserRuleCall_2() { return cStructureClassParserRuleCall_2; }
+ }
+
+ public class StructureClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StructureClass");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cActorContainerClassParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cLogicalSystemParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //StructureClass:
+ // ActorContainerClass | LogicalSystem;
+ public ParserRule getRule() { return rule; }
+
+ //ActorContainerClass | LogicalSystem
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //ActorContainerClass
+ public RuleCall getActorContainerClassParserRuleCall_0() { return cActorContainerClassParserRuleCall_0; }
+
+ //LogicalSystem
+ public RuleCall getLogicalSystemParserRuleCall_1() { return cLogicalSystemParserRuleCall_1; }
+ }
+
+ public class ActorContainerClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActorContainerClass");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cActorClassParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cSubSystemClassParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //ActorContainerClass:
+ // ActorClass | SubSystemClass;
+ public ParserRule getRule() { return rule; }
+
+ //ActorClass | SubSystemClass
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //ActorClass
+ public RuleCall getActorClassParserRuleCall_0() { return cActorClassParserRuleCall_0; }
+
+ //SubSystemClass
+ public RuleCall getSubSystemClassParserRuleCall_1() { return cSubSystemClassParserRuleCall_1; }
+ }
+
+ public class TypedIDElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TypedID");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
+ private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cTypeTypeParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0);
+
+ //TypedID:
+ // name=ID ":" type=Type;
+ public ParserRule getRule() { return rule; }
+
+ //name=ID ":" type=Type
+ public Group getGroup() { return cGroup; }
+
+ //name=ID
+ public Assignment getNameAssignment_0() { return cNameAssignment_0; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+
+ //":"
+ public Keyword getColonKeyword_1() { return cColonKeyword_1; }
+
+ //type=Type
+ public Assignment getTypeAssignment_2() { return cTypeAssignment_2; }
+
+ //Type
+ public RuleCall getTypeTypeParserRuleCall_2_0() { return cTypeTypeParserRuleCall_2_0; }
+ }
+
+ public class FreeTypedIDElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FreeTypedID");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
+ private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cTypeFreeTypeParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0);
+
+ //FreeTypedID:
+ // name=ID ":" type=FreeType;
+ public ParserRule getRule() { return rule; }
+
+ //name=ID ":" type=FreeType
+ public Group getGroup() { return cGroup; }
+
+ //name=ID
+ public Assignment getNameAssignment_0() { return cNameAssignment_0; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+
+ //":"
+ public Keyword getColonKeyword_1() { return cColonKeyword_1; }
+
+ //type=FreeType
+ public Assignment getTypeAssignment_2() { return cTypeAssignment_2; }
+
+ //FreeType
+ public RuleCall getTypeFreeTypeParserRuleCall_2_0() { return cTypeFreeTypeParserRuleCall_2_0; }
+ }
+
+ public class TypeElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Type");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Assignment cPrimAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
+ private final RuleCall cPrimPrimitiveTypeEnumRuleCall_0_0 = (RuleCall)cPrimAssignment_0.eContents().get(0);
+ private final Assignment cTypeAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
+ private final CrossReference cTypeDataClassCrossReference_1_0 = (CrossReference)cTypeAssignment_1.eContents().get(0);
+ private final RuleCall cTypeDataClassFQNParserRuleCall_1_0_1 = (RuleCall)cTypeDataClassCrossReference_1_0.eContents().get(1);
+
+ //Type:
+ // prim=PrimitiveType | type=[DataClass|FQN];
+ public ParserRule getRule() { return rule; }
+
+ //prim=PrimitiveType | type=[DataClass|FQN]
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //prim=PrimitiveType
+ public Assignment getPrimAssignment_0() { return cPrimAssignment_0; }
+
+ //PrimitiveType
+ public RuleCall getPrimPrimitiveTypeEnumRuleCall_0_0() { return cPrimPrimitiveTypeEnumRuleCall_0_0; }
+
+ //type=[DataClass|FQN]
+ public Assignment getTypeAssignment_1() { return cTypeAssignment_1; }
+
+ //[DataClass|FQN]
+ public CrossReference getTypeDataClassCrossReference_1_0() { return cTypeDataClassCrossReference_1_0; }
+
+ //FQN
+ public RuleCall getTypeDataClassFQNParserRuleCall_1_0_1() { return cTypeDataClassFQNParserRuleCall_1_0_1; }
+ }
+
+ public class FreeTypeElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FreeType");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Assignment cPrimAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
+ private final RuleCall cPrimPrimitiveTypeEnumRuleCall_0_0 = (RuleCall)cPrimAssignment_0.eContents().get(0);
+ private final Assignment cTypeAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
+ private final RuleCall cTypeIDTerminalRuleCall_1_0 = (RuleCall)cTypeAssignment_1.eContents().get(0);
+
+ //FreeType:
+ // prim=PrimitiveType | type=ID;
+ public ParserRule getRule() { return rule; }
+
+ //prim=PrimitiveType | type=ID
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //prim=PrimitiveType
+ public Assignment getPrimAssignment_0() { return cPrimAssignment_0; }
+
+ //PrimitiveType
+ public RuleCall getPrimPrimitiveTypeEnumRuleCall_0_0() { return cPrimPrimitiveTypeEnumRuleCall_0_0; }
+
+ //type=ID
+ public Assignment getTypeAssignment_1() { return cTypeAssignment_1; }
+
+ //ID
+ public RuleCall getTypeIDTerminalRuleCall_1_0() { return cTypeIDTerminalRuleCall_1_0; }
+ }
+
+ public class DataClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataClass");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cDataClassKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cExtendsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cBaseAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final CrossReference cBaseDataClassCrossReference_2_1_0 = (CrossReference)cBaseAssignment_2_1.eContents().get(0);
+ private final RuleCall cBaseDataClassFQNParserRuleCall_2_1_0_1 = (RuleCall)cBaseDataClassCrossReference_2_1_0.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Assignment cImportsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final RuleCall cImportsImportParserRuleCall_4_0 = (RuleCall)cImportsAssignment_4.eContents().get(0);
+ private final Assignment cAttributesAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final RuleCall cAttributesAttributeParserRuleCall_5_0 = (RuleCall)cAttributesAssignment_5.eContents().get(0);
+ private final Assignment cOperationsAssignment_6 = (Assignment)cGroup.eContents().get(6);
+ private final RuleCall cOperationsOperationParserRuleCall_6_0 = (RuleCall)cOperationsAssignment_6.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+
+ //// TODOHRR: define detail level language?
+ //DataClass:
+ // "DataClass" name=ID ("extends" base=[DataClass|FQN])? "{" imports+=Import* attributes+=Attribute+
+ // operations+=Operation* "}";
+ public ParserRule getRule() { return rule; }
+
+ //"DataClass" name=ID ("extends" base=[DataClass|FQN])? "{" imports+=Import* attributes+=Attribute+ operations+=Operation*
+ //"}"
+ public Group getGroup() { return cGroup; }
+
+ //"DataClass"
+ public Keyword getDataClassKeyword_0() { return cDataClassKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //("extends" base=[DataClass|FQN])?
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"extends"
+ public Keyword getExtendsKeyword_2_0() { return cExtendsKeyword_2_0; }
+
+ //base=[DataClass|FQN]
+ public Assignment getBaseAssignment_2_1() { return cBaseAssignment_2_1; }
+
+ //[DataClass|FQN]
+ public CrossReference getBaseDataClassCrossReference_2_1_0() { return cBaseDataClassCrossReference_2_1_0; }
+
+ //FQN
+ public RuleCall getBaseDataClassFQNParserRuleCall_2_1_0_1() { return cBaseDataClassFQNParserRuleCall_2_1_0_1; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+ //imports+=Import*
+ public Assignment getImportsAssignment_4() { return cImportsAssignment_4; }
+
+ //Import
+ public RuleCall getImportsImportParserRuleCall_4_0() { return cImportsImportParserRuleCall_4_0; }
+
+ //attributes+=Attribute+
+ public Assignment getAttributesAssignment_5() { return cAttributesAssignment_5; }
+
+ //Attribute
+ public RuleCall getAttributesAttributeParserRuleCall_5_0() { return cAttributesAttributeParserRuleCall_5_0; }
+
+ //operations+=Operation*
+ public Assignment getOperationsAssignment_6() { return cOperationsAssignment_6; }
+
+ //Operation
+ public RuleCall getOperationsOperationParserRuleCall_6_0() { return cOperationsOperationParserRuleCall_6_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+ }
+
+ public class AttributeElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Attribute");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cAttributeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cLeftSquareBracketKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cSizeAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final RuleCall cSizeINTTerminalRuleCall_2_1_0 = (RuleCall)cSizeAssignment_2_1.eContents().get(0);
+ private final Keyword cRightSquareBracketKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
+ private final Keyword cColonKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Assignment cTypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final RuleCall cTypeTypeParserRuleCall_4_0 = (RuleCall)cTypeAssignment_4.eContents().get(0);
+
+ //Attribute:
+ // "Attribute" name=ID ("[" size=INT "]")? ":" type=Type;
+ public ParserRule getRule() { return rule; }
+
+ //"Attribute" name=ID ("[" size=INT "]")? ":" type=Type
+ public Group getGroup() { return cGroup; }
+
+ //"Attribute"
+ public Keyword getAttributeKeyword_0() { return cAttributeKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //("[" size=INT "]")?
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"["
+ public Keyword getLeftSquareBracketKeyword_2_0() { return cLeftSquareBracketKeyword_2_0; }
+
+ //size=INT
+ public Assignment getSizeAssignment_2_1() { return cSizeAssignment_2_1; }
+
+ //INT
+ public RuleCall getSizeINTTerminalRuleCall_2_1_0() { return cSizeINTTerminalRuleCall_2_1_0; }
+
+ //"]"
+ public Keyword getRightSquareBracketKeyword_2_2() { return cRightSquareBracketKeyword_2_2; }
+
+ //":"
+ public Keyword getColonKeyword_3() { return cColonKeyword_3; }
+
+ //type=Type
+ public Assignment getTypeAssignment_4() { return cTypeAssignment_4; }
+
+ //Type
+ public RuleCall getTypeTypeParserRuleCall_4_0() { return cTypeTypeParserRuleCall_4_0; }
+ }
+
+ public class OperationElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Operation");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cOperationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Assignment cArgumentsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+ private final RuleCall cArgumentsFreeTypedIDParserRuleCall_3_0_0 = (RuleCall)cArgumentsAssignment_3_0.eContents().get(0);
+ private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
+ private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+ private final Assignment cArgumentsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+ private final RuleCall cArgumentsFreeTypedIDParserRuleCall_3_1_1_0 = (RuleCall)cArgumentsAssignment_3_1_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+ private final Keyword cColonKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+ private final Assignment cReturntypeAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+ private final RuleCall cReturntypeFreeTypeParserRuleCall_5_1_0 = (RuleCall)cReturntypeAssignment_5_1.eContents().get(0);
+ private final Assignment cDetailCodeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+ private final RuleCall cDetailCodeDetailCodeParserRuleCall_6_0 = (RuleCall)cDetailCodeAssignment_6.eContents().get(0);
+
+ //// TODOHRR: pass arguments and return value by value/reference
+ //Operation:
+ // "Operation" name=ID "(" (arguments+=FreeTypedID ("," arguments+=FreeTypedID)*)? ")" (":" returntype=FreeType)?
+ // detailCode=DetailCode;
+ public ParserRule getRule() { return rule; }
+
+ //"Operation" name=ID "(" (arguments+=FreeTypedID ("," arguments+=FreeTypedID)*)? ")" (":" returntype=FreeType)?
+ //detailCode=DetailCode
+ public Group getGroup() { return cGroup; }
+
+ //"Operation"
+ public Keyword getOperationKeyword_0() { return cOperationKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+ //(arguments+=FreeTypedID ("," arguments+=FreeTypedID)*)?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //arguments+=FreeTypedID
+ public Assignment getArgumentsAssignment_3_0() { return cArgumentsAssignment_3_0; }
+
+ //FreeTypedID
+ public RuleCall getArgumentsFreeTypedIDParserRuleCall_3_0_0() { return cArgumentsFreeTypedIDParserRuleCall_3_0_0; }
+
+ //("," arguments+=FreeTypedID)*
+ public Group getGroup_3_1() { return cGroup_3_1; }
+
+ //","
+ public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
+
+ //arguments+=FreeTypedID
+ public Assignment getArgumentsAssignment_3_1_1() { return cArgumentsAssignment_3_1_1; }
+
+ //FreeTypedID
+ public RuleCall getArgumentsFreeTypedIDParserRuleCall_3_1_1_0() { return cArgumentsFreeTypedIDParserRuleCall_3_1_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
+
+ //(":" returntype=FreeType)?
+ public Group getGroup_5() { return cGroup_5; }
+
+ //":"
+ public Keyword getColonKeyword_5_0() { return cColonKeyword_5_0; }
+
+ //returntype=FreeType
+ public Assignment getReturntypeAssignment_5_1() { return cReturntypeAssignment_5_1; }
+
+ //FreeType
+ public RuleCall getReturntypeFreeTypeParserRuleCall_5_1_0() { return cReturntypeFreeTypeParserRuleCall_5_1_0; }
+
+ //detailCode=DetailCode
+ public Assignment getDetailCodeAssignment_6() { return cDetailCodeAssignment_6; }
+
+ //DetailCode
+ public RuleCall getDetailCodeDetailCodeParserRuleCall_6_0() { return cDetailCodeDetailCodeParserRuleCall_6_0; }
+ }
+
+ public class ProtocolClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProtocolClass");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cProtocolClassKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cExtendsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cBaseAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final CrossReference cBaseProtocolClassCrossReference_2_1_0 = (CrossReference)cBaseAssignment_2_1.eContents().get(0);
+ private final RuleCall cBaseProtocolClassFQNParserRuleCall_2_1_0_1 = (RuleCall)cBaseProtocolClassCrossReference_2_1_0.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+ private final Keyword cUsercode1Keyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+ private final Assignment cUserCode1Assignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+ private final RuleCall cUserCode1DetailCodeParserRuleCall_4_1_0 = (RuleCall)cUserCode1Assignment_4_1.eContents().get(0);
+ private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+ private final Keyword cUsercode2Keyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+ private final Assignment cUserCode2Assignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+ private final RuleCall cUserCode2DetailCodeParserRuleCall_5_1_0 = (RuleCall)cUserCode2Assignment_5_1.eContents().get(0);
+ private final Keyword cIncomingKeyword_6 = (Keyword)cGroup.eContents().get(6);
+ private final Keyword cLeftCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+ private final Assignment cIncomingMessagesAssignment_8 = (Assignment)cGroup.eContents().get(8);
+ private final RuleCall cIncomingMessagesMessageParserRuleCall_8_0 = (RuleCall)cIncomingMessagesAssignment_8.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+ private final Keyword cOutgoingKeyword_10 = (Keyword)cGroup.eContents().get(10);
+ private final Keyword cLeftCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
+ private final Assignment cOutgoingMessagesAssignment_12 = (Assignment)cGroup.eContents().get(12);
+ private final RuleCall cOutgoingMessagesMessageParserRuleCall_12_0 = (RuleCall)cOutgoingMessagesAssignment_12.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_13 = (Keyword)cGroup.eContents().get(13);
+ private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
+ private final Keyword cRegularKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
+ private final Keyword cPortClassKeyword_14_1 = (Keyword)cGroup_14.eContents().get(1);
+ private final Assignment cRegularAssignment_14_2 = (Assignment)cGroup_14.eContents().get(2);
+ private final RuleCall cRegularPortClassParserRuleCall_14_2_0 = (RuleCall)cRegularAssignment_14_2.eContents().get(0);
+ private final Group cGroup_15 = (Group)cGroup.eContents().get(15);
+ private final Keyword cConjugateKeyword_15_0 = (Keyword)cGroup_15.eContents().get(0);
+ private final Keyword cPortClassKeyword_15_1 = (Keyword)cGroup_15.eContents().get(1);
+ private final Assignment cConjugateAssignment_15_2 = (Assignment)cGroup_15.eContents().get(2);
+ private final RuleCall cConjugatePortClassParserRuleCall_15_2_0 = (RuleCall)cConjugateAssignment_15_2.eContents().get(0);
+ private final Assignment cSemanticsAssignment_16 = (Assignment)cGroup.eContents().get(16);
+ private final RuleCall cSemanticsProtocolSemanticsParserRuleCall_16_0 = (RuleCall)cSemanticsAssignment_16.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_17 = (Keyword)cGroup.eContents().get(17);
+
+ //// **************************************************************
+ //// protocol class
+ //ProtocolClass:
+ // "ProtocolClass" name=ID ("extends" base=[ProtocolClass|FQN])? "{" ("usercode1" userCode1=DetailCode)? ("usercode2"
+ // userCode2=DetailCode)? "incoming" "{" incomingMessages+=Message* "}" "outgoing" "{" outgoingMessages+=Message* "}"
+ // ("regular" "PortClass" regular=PortClass)? ("conjugate" "PortClass" conjugate=PortClass)? semantics=ProtocolSemantics?
+ // "}";
+ public ParserRule getRule() { return rule; }
+
+ //"ProtocolClass" name=ID ("extends" base=[ProtocolClass|FQN])? "{" ("usercode1" userCode1=DetailCode)? ("usercode2"
+ //userCode2=DetailCode)? "incoming" "{" incomingMessages+=Message* "}" "outgoing" "{" outgoingMessages+=Message* "}"
+ //("regular" "PortClass" regular=PortClass)? ("conjugate" "PortClass" conjugate=PortClass)? semantics=ProtocolSemantics?
+ //"}"
+ public Group getGroup() { return cGroup; }
+
+ //"ProtocolClass"
+ public Keyword getProtocolClassKeyword_0() { return cProtocolClassKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //("extends" base=[ProtocolClass|FQN])?
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"extends"
+ public Keyword getExtendsKeyword_2_0() { return cExtendsKeyword_2_0; }
+
+ //base=[ProtocolClass|FQN]
+ public Assignment getBaseAssignment_2_1() { return cBaseAssignment_2_1; }
+
+ //[ProtocolClass|FQN]
+ public CrossReference getBaseProtocolClassCrossReference_2_1_0() { return cBaseProtocolClassCrossReference_2_1_0; }
+
+ //FQN
+ public RuleCall getBaseProtocolClassFQNParserRuleCall_2_1_0_1() { return cBaseProtocolClassFQNParserRuleCall_2_1_0_1; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+ //("usercode1" userCode1=DetailCode)?
+ public Group getGroup_4() { return cGroup_4; }
+
+ //"usercode1"
+ public Keyword getUsercode1Keyword_4_0() { return cUsercode1Keyword_4_0; }
+
+ //userCode1=DetailCode
+ public Assignment getUserCode1Assignment_4_1() { return cUserCode1Assignment_4_1; }
+
+ //DetailCode
+ public RuleCall getUserCode1DetailCodeParserRuleCall_4_1_0() { return cUserCode1DetailCodeParserRuleCall_4_1_0; }
+
+ //("usercode2" userCode2=DetailCode)?
+ public Group getGroup_5() { return cGroup_5; }
+
+ //"usercode2"
+ public Keyword getUsercode2Keyword_5_0() { return cUsercode2Keyword_5_0; }
+
+ //userCode2=DetailCode
+ public Assignment getUserCode2Assignment_5_1() { return cUserCode2Assignment_5_1; }
+
+ //DetailCode
+ public RuleCall getUserCode2DetailCodeParserRuleCall_5_1_0() { return cUserCode2DetailCodeParserRuleCall_5_1_0; }
+
+ //"incoming"
+ public Keyword getIncomingKeyword_6() { return cIncomingKeyword_6; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
+
+ //incomingMessages+=Message*
+ public Assignment getIncomingMessagesAssignment_8() { return cIncomingMessagesAssignment_8; }
+
+ //Message
+ public RuleCall getIncomingMessagesMessageParserRuleCall_8_0() { return cIncomingMessagesMessageParserRuleCall_8_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
+
+ //"outgoing"
+ public Keyword getOutgoingKeyword_10() { return cOutgoingKeyword_10; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_11() { return cLeftCurlyBracketKeyword_11; }
+
+ //outgoingMessages+=Message*
+ public Assignment getOutgoingMessagesAssignment_12() { return cOutgoingMessagesAssignment_12; }
+
+ //Message
+ public RuleCall getOutgoingMessagesMessageParserRuleCall_12_0() { return cOutgoingMessagesMessageParserRuleCall_12_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_13() { return cRightCurlyBracketKeyword_13; }
+
+ //("regular" "PortClass" regular=PortClass)?
+ public Group getGroup_14() { return cGroup_14; }
+
+ //"regular"
+ public Keyword getRegularKeyword_14_0() { return cRegularKeyword_14_0; }
+
+ //"PortClass"
+ public Keyword getPortClassKeyword_14_1() { return cPortClassKeyword_14_1; }
+
+ //regular=PortClass
+ public Assignment getRegularAssignment_14_2() { return cRegularAssignment_14_2; }
+
+ //PortClass
+ public RuleCall getRegularPortClassParserRuleCall_14_2_0() { return cRegularPortClassParserRuleCall_14_2_0; }
+
+ //("conjugate" "PortClass" conjugate=PortClass)?
+ public Group getGroup_15() { return cGroup_15; }
+
+ //"conjugate"
+ public Keyword getConjugateKeyword_15_0() { return cConjugateKeyword_15_0; }
+
+ //"PortClass"
+ public Keyword getPortClassKeyword_15_1() { return cPortClassKeyword_15_1; }
+
+ //conjugate=PortClass
+ public Assignment getConjugateAssignment_15_2() { return cConjugateAssignment_15_2; }
+
+ //PortClass
+ public RuleCall getConjugatePortClassParserRuleCall_15_2_0() { return cConjugatePortClassParserRuleCall_15_2_0; }
+
+ //semantics=ProtocolSemantics?
+ public Assignment getSemanticsAssignment_16() { return cSemanticsAssignment_16; }
+
+ //ProtocolSemantics
+ public RuleCall getSemanticsProtocolSemanticsParserRuleCall_16_0() { return cSemanticsProtocolSemanticsParserRuleCall_16_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_17() { return cRightCurlyBracketKeyword_17; }
+ }
+
+ public class MessageElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Message");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cMessageKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Assignment cArgumentsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+ private final RuleCall cArgumentsTypedIDParserRuleCall_3_0_0 = (RuleCall)cArgumentsAssignment_3_0.eContents().get(0);
+ private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
+ private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+ private final Assignment cArgumentsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+ private final RuleCall cArgumentsTypedIDParserRuleCall_3_1_1_0 = (RuleCall)cArgumentsAssignment_3_1_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
+
+ //Message:
+ // "Message" name=ID "(" (arguments+=TypedID ("," arguments+=TypedID)*)? ")";
+ public ParserRule getRule() { return rule; }
+
+ //"Message" name=ID "(" (arguments+=TypedID ("," arguments+=TypedID)*)? ")"
+ public Group getGroup() { return cGroup; }
+
+ //"Message"
+ public Keyword getMessageKeyword_0() { return cMessageKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+ //(arguments+=TypedID ("," arguments+=TypedID)*)?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //arguments+=TypedID
+ public Assignment getArgumentsAssignment_3_0() { return cArgumentsAssignment_3_0; }
+
+ //TypedID
+ public RuleCall getArgumentsTypedIDParserRuleCall_3_0_0() { return cArgumentsTypedIDParserRuleCall_3_0_0; }
+
+ //("," arguments+=TypedID)*
+ public Group getGroup_3_1() { return cGroup_3_1; }
+
+ //","
+ public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
+
+ //arguments+=TypedID
+ public Assignment getArgumentsAssignment_3_1_1() { return cArgumentsAssignment_3_1_1; }
+
+ //TypedID
+ public RuleCall getArgumentsTypedIDParserRuleCall_3_1_1_0() { return cArgumentsTypedIDParserRuleCall_3_1_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
+ }
+
+ public class PortClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PortClass");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cUsercodeKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cUserCodeAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cUserCodeDetailCodeParserRuleCall_1_1_0 = (RuleCall)cUserCodeAssignment_1_1.eContents().get(0);
+ private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+ private final Assignment cAttributesAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+ private final RuleCall cAttributesAttributeParserRuleCall_2_0_0 = (RuleCall)cAttributesAssignment_2_0.eContents().get(0);
+ private final Assignment cOperationsAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
+ private final RuleCall cOperationsOperationParserRuleCall_2_1_0 = (RuleCall)cOperationsAssignment_2_1.eContents().get(0);
+ private final Assignment cMsgHandlersAssignment_2_2 = (Assignment)cAlternatives_2.eContents().get(2);
+ private final RuleCall cMsgHandlersMessageHandlerParserRuleCall_2_2_0 = (RuleCall)cMsgHandlersAssignment_2_2.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+
+ //PortClass:
+ // "{" ("usercode" userCode=DetailCode)? (attributes+=Attribute | operations+=Operation | msgHandlers+=MessageHandler)+
+ // "}";
+ public ParserRule getRule() { return rule; }
+
+ //"{" ("usercode" userCode=DetailCode)? (attributes+=Attribute | operations+=Operation | msgHandlers+=MessageHandler)+ "}"
+ public Group getGroup() { return cGroup; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+ //("usercode" userCode=DetailCode)?
+ public Group getGroup_1() { return cGroup_1; }
+
+ //"usercode"
+ public Keyword getUsercodeKeyword_1_0() { return cUsercodeKeyword_1_0; }
+
+ //userCode=DetailCode
+ public Assignment getUserCodeAssignment_1_1() { return cUserCodeAssignment_1_1; }
+
+ //DetailCode
+ public RuleCall getUserCodeDetailCodeParserRuleCall_1_1_0() { return cUserCodeDetailCodeParserRuleCall_1_1_0; }
+
+ //(attributes+=Attribute | operations+=Operation | msgHandlers+=MessageHandler)+
+ public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+ //attributes+=Attribute
+ public Assignment getAttributesAssignment_2_0() { return cAttributesAssignment_2_0; }
+
+ //Attribute
+ public RuleCall getAttributesAttributeParserRuleCall_2_0_0() { return cAttributesAttributeParserRuleCall_2_0_0; }
+
+ //operations+=Operation
+ public Assignment getOperationsAssignment_2_1() { return cOperationsAssignment_2_1; }
+
+ //Operation
+ public RuleCall getOperationsOperationParserRuleCall_2_1_0() { return cOperationsOperationParserRuleCall_2_1_0; }
+
+ //msgHandlers+=MessageHandler
+ public Assignment getMsgHandlersAssignment_2_2() { return cMsgHandlersAssignment_2_2; }
+
+ //MessageHandler
+ public RuleCall getMsgHandlersMessageHandlerParserRuleCall_2_2_0() { return cMsgHandlersMessageHandlerParserRuleCall_2_2_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
+ }
+
+ public class MessageHandlerElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "MessageHandler");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cHandleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cMsgAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cMsgMessageCrossReference_1_0 = (CrossReference)cMsgAssignment_1.eContents().get(0);
+ private final RuleCall cMsgMessageIDTerminalRuleCall_1_0_1 = (RuleCall)cMsgMessageCrossReference_1_0.eContents().get(1);
+ private final Assignment cDetailCodeAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cDetailCodeDetailCodeParserRuleCall_2_0 = (RuleCall)cDetailCodeAssignment_2.eContents().get(0);
+
+ //MessageHandler:
+ // "handle" msg=[Message] detailCode=DetailCode;
+ public ParserRule getRule() { return rule; }
+
+ //"handle" msg=[Message] detailCode=DetailCode
+ public Group getGroup() { return cGroup; }
+
+ //"handle"
+ public Keyword getHandleKeyword_0() { return cHandleKeyword_0; }
+
+ //msg=[Message]
+ public Assignment getMsgAssignment_1() { return cMsgAssignment_1; }
+
+ //[Message]
+ public CrossReference getMsgMessageCrossReference_1_0() { return cMsgMessageCrossReference_1_0; }
+
+ //ID
+ public RuleCall getMsgMessageIDTerminalRuleCall_1_0_1() { return cMsgMessageIDTerminalRuleCall_1_0_1; }
+
+ //detailCode=DetailCode
+ public Assignment getDetailCodeAssignment_2() { return cDetailCodeAssignment_2; }
+
+ //DetailCode
+ public RuleCall getDetailCodeDetailCodeParserRuleCall_2_0() { return cDetailCodeDetailCodeParserRuleCall_2_0; }
+ }
+
+ public class ProtocolSemanticsElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProtocolSemantics");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cSemanticsKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cRulesAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cRulesSemanticsRuleParserRuleCall_2_0 = (RuleCall)cRulesAssignment_2.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+
+ //ProtocolSemantics:
+ // "semantics" "{" rules+=SemanticsRule+ "}";
+ public ParserRule getRule() { return rule; }
+
+ //"semantics" "{" rules+=SemanticsRule+ "}"
+ public Group getGroup() { return cGroup; }
+
+ //"semantics"
+ public Keyword getSemanticsKeyword_0() { return cSemanticsKeyword_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+ //rules+=SemanticsRule+
+ public Assignment getRulesAssignment_2() { return cRulesAssignment_2; }
+
+ //SemanticsRule
+ public RuleCall getRulesSemanticsRuleParserRuleCall_2_0() { return cRulesSemanticsRuleParserRuleCall_2_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
+ }
+
+ public class SemanticsRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SemanticsRule");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cSemanticsInRuleParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cSemanticsOutRuleParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //SemanticsRule:
+ // SemanticsInRule | SemanticsOutRule;
+ public ParserRule getRule() { return rule; }
+
+ //SemanticsInRule | SemanticsOutRule
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //SemanticsInRule
+ public RuleCall getSemanticsInRuleParserRuleCall_0() { return cSemanticsInRuleParserRuleCall_0; }
+
+ //SemanticsOutRule
+ public RuleCall getSemanticsOutRuleParserRuleCall_1() { return cSemanticsOutRuleParserRuleCall_1; }
+ }
+
+ public class SemanticsInRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SemanticsInRule");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cInKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cMsgAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cMsgMessageCrossReference_1_0 = (CrossReference)cMsgAssignment_1.eContents().get(0);
+ private final RuleCall cMsgMessageIDTerminalRuleCall_1_0_1 = (RuleCall)cMsgMessageCrossReference_1_0.eContents().get(1);
+ private final Keyword cHyphenMinusGreaterThanSignKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Assignment cFollowUpsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final RuleCall cFollowUpsSemanticsRuleParserRuleCall_4_0 = (RuleCall)cFollowUpsAssignment_4.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+
+ //SemanticsInRule:
+ // "in" msg=[Message] "->" "{" followUps+=SemanticsRule* "}";
+ public ParserRule getRule() { return rule; }
+
+ //"in" msg=[Message] "->" "{" followUps+=SemanticsRule* "}"
+ public Group getGroup() { return cGroup; }
+
+ //"in"
+ public Keyword getInKeyword_0() { return cInKeyword_0; }
+
+ //msg=[Message]
+ public Assignment getMsgAssignment_1() { return cMsgAssignment_1; }
+
+ //[Message]
+ public CrossReference getMsgMessageCrossReference_1_0() { return cMsgMessageCrossReference_1_0; }
+
+ //ID
+ public RuleCall getMsgMessageIDTerminalRuleCall_1_0_1() { return cMsgMessageIDTerminalRuleCall_1_0_1; }
+
+ //"->"
+ public Keyword getHyphenMinusGreaterThanSignKeyword_2() { return cHyphenMinusGreaterThanSignKeyword_2; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+ //followUps+=SemanticsRule*
+ public Assignment getFollowUpsAssignment_4() { return cFollowUpsAssignment_4; }
+
+ //SemanticsRule
+ public RuleCall getFollowUpsSemanticsRuleParserRuleCall_4_0() { return cFollowUpsSemanticsRuleParserRuleCall_4_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+ }
+
+ public class SemanticsOutRuleElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SemanticsOutRule");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cOutKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cMsgAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cMsgMessageCrossReference_1_0 = (CrossReference)cMsgAssignment_1.eContents().get(0);
+ private final RuleCall cMsgMessageIDTerminalRuleCall_1_0_1 = (RuleCall)cMsgMessageCrossReference_1_0.eContents().get(1);
+ private final Keyword cHyphenMinusGreaterThanSignKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Assignment cFollowUpsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final RuleCall cFollowUpsSemanticsRuleParserRuleCall_4_0 = (RuleCall)cFollowUpsAssignment_4.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+
+ //SemanticsOutRule:
+ // "out" msg=[Message] "->" "{" followUps+=SemanticsRule* "}";
+ public ParserRule getRule() { return rule; }
+
+ //"out" msg=[Message] "->" "{" followUps+=SemanticsRule* "}"
+ public Group getGroup() { return cGroup; }
+
+ //"out"
+ public Keyword getOutKeyword_0() { return cOutKeyword_0; }
+
+ //msg=[Message]
+ public Assignment getMsgAssignment_1() { return cMsgAssignment_1; }
+
+ //[Message]
+ public CrossReference getMsgMessageCrossReference_1_0() { return cMsgMessageCrossReference_1_0; }
+
+ //ID
+ public RuleCall getMsgMessageIDTerminalRuleCall_1_0_1() { return cMsgMessageIDTerminalRuleCall_1_0_1; }
+
+ //"->"
+ public Keyword getHyphenMinusGreaterThanSignKeyword_2() { return cHyphenMinusGreaterThanSignKeyword_2; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+ //followUps+=SemanticsRule*
+ public Assignment getFollowUpsAssignment_4() { return cFollowUpsAssignment_4; }
+
+ //SemanticsRule
+ public RuleCall getFollowUpsSemanticsRuleParserRuleCall_4_0() { return cFollowUpsSemanticsRuleParserRuleCall_4_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+ }
+
+ public class ActorClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActorClass");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cAbstractAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final Keyword cAbstractAbstractKeyword_0_0 = (Keyword)cAbstractAssignment_0.eContents().get(0);
+ private final Keyword cActorClassKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Keyword cExtendsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+ private final Assignment cBaseAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+ private final CrossReference cBaseActorClassCrossReference_3_1_0 = (CrossReference)cBaseAssignment_3_1.eContents().get(0);
+ private final RuleCall cBaseActorClassFQNParserRuleCall_3_1_0_1 = (RuleCall)cBaseActorClassCrossReference_3_1_0.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+ private final Keyword cInterfaceKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+ private final Assignment cIfPortsAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+ private final RuleCall cIfPortsPortParserRuleCall_5_2_0 = (RuleCall)cIfPortsAssignment_5_2.eContents().get(0);
+ private final Assignment cIfSPPsAssignment_5_3 = (Assignment)cGroup_5.eContents().get(3);
+ private final RuleCall cIfSPPsSPPRefParserRuleCall_5_3_0 = (RuleCall)cIfSPPsAssignment_5_3.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+ private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+ private final Keyword cStructureKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+ private final Group cGroup_6_2 = (Group)cGroup_6.eContents().get(2);
+ private final Keyword cUsercode1Keyword_6_2_0 = (Keyword)cGroup_6_2.eContents().get(0);
+ private final Assignment cUserCode1Assignment_6_2_1 = (Assignment)cGroup_6_2.eContents().get(1);
+ private final RuleCall cUserCode1DetailCodeParserRuleCall_6_2_1_0 = (RuleCall)cUserCode1Assignment_6_2_1.eContents().get(0);
+ private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+ private final Keyword cUsercode2Keyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+ private final Assignment cUserCode2Assignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+ private final RuleCall cUserCode2DetailCodeParserRuleCall_6_3_1_0 = (RuleCall)cUserCode2Assignment_6_3_1.eContents().get(0);
+ private final Alternatives cAlternatives_6_4 = (Alternatives)cGroup_6.eContents().get(4);
+ private final Assignment cIntPortsAssignment_6_4_0 = (Assignment)cAlternatives_6_4.eContents().get(0);
+ private final RuleCall cIntPortsPortParserRuleCall_6_4_0_0 = (RuleCall)cIntPortsAssignment_6_4_0.eContents().get(0);
+ private final Assignment cExtPortsAssignment_6_4_1 = (Assignment)cAlternatives_6_4.eContents().get(1);
+ private final RuleCall cExtPortsExternalPortParserRuleCall_6_4_1_0 = (RuleCall)cExtPortsAssignment_6_4_1.eContents().get(0);
+ private final Assignment cServiceImplementationsAssignment_6_5 = (Assignment)cGroup_6.eContents().get(5);
+ private final RuleCall cServiceImplementationsServiceImplementationParserRuleCall_6_5_0 = (RuleCall)cServiceImplementationsAssignment_6_5.eContents().get(0);
+ private final Assignment cStrSAPsAssignment_6_6 = (Assignment)cGroup_6.eContents().get(6);
+ private final RuleCall cStrSAPsSAPRefParserRuleCall_6_6_0 = (RuleCall)cStrSAPsAssignment_6_6.eContents().get(0);
+ private final Assignment cAttributesAssignment_6_7 = (Assignment)cGroup_6.eContents().get(7);
+ private final RuleCall cAttributesAttributeParserRuleCall_6_7_0 = (RuleCall)cAttributesAssignment_6_7.eContents().get(0);
+ private final Assignment cActorRefsAssignment_6_8 = (Assignment)cGroup_6.eContents().get(8);
+ private final RuleCall cActorRefsActorRefParserRuleCall_6_8_0 = (RuleCall)cActorRefsAssignment_6_8.eContents().get(0);
+ private final Assignment cBindingsAssignment_6_9 = (Assignment)cGroup_6.eContents().get(9);
+ private final RuleCall cBindingsBindingParserRuleCall_6_9_0 = (RuleCall)cBindingsAssignment_6_9.eContents().get(0);
+ private final Assignment cConnectionsAssignment_6_10 = (Assignment)cGroup_6.eContents().get(10);
+ private final RuleCall cConnectionsLayerConnectionParserRuleCall_6_10_0 = (RuleCall)cConnectionsAssignment_6_10.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_6_11 = (Keyword)cGroup_6.eContents().get(11);
+ private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+ private final Keyword cBehaviorKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+ private final Assignment cOperationsAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+ private final RuleCall cOperationsOperationParserRuleCall_7_2_0 = (RuleCall)cOperationsAssignment_7_2.eContents().get(0);
+ private final Assignment cStateMachineAssignment_7_3 = (Assignment)cGroup_7.eContents().get(3);
+ private final RuleCall cStateMachineStateMachineParserRuleCall_7_3_0 = (RuleCall)cStateMachineAssignment_7_3.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+ private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+
+ //// **************************************************************
+ //// actor class
+ //// some notes on ports
+ ////
+ //// in ROOM ports can be contained in the structure and/or the interface
+ //// p in s ==> internal end port
+ //// p in i ==> relay port
+ //// p in i and p in s ==> external end port
+ //// since double containment is not supported we decided to define external ports as reference to interface ports
+ //ActorClass:
+ // abstract?="abstract"? "ActorClass" name=ID ("extends" base=[ActorClass|FQN])? "{" ("Interface" "{" ifPorts+=Port*
+ // ifSPPs+=SPPRef* "}")? ("Structure" "{" ("usercode1" userCode1=DetailCode)? ("usercode2" userCode2=DetailCode)?
+ // (intPorts+=Port | extPorts+=ExternalPort)* serviceImplementations+=ServiceImplementation* strSAPs+=SAPRef*
+ // attributes+=Attribute* actorRefs+=ActorRef* bindings+=Binding* connections+=LayerConnection* "}")? ("Behavior" "{"
+ // operations+=Operation* stateMachine=StateMachine? "}")? "}";
+ public ParserRule getRule() { return rule; }
+
+ //abstract?="abstract"? "ActorClass" name=ID ("extends" base=[ActorClass|FQN])? "{" ("Interface" "{" ifPorts+=Port*
+ //ifSPPs+=SPPRef* "}")? ("Structure" "{" ("usercode1" userCode1=DetailCode)? ("usercode2" userCode2=DetailCode)?
+ //(intPorts+=Port | extPorts+=ExternalPort)* serviceImplementations+=ServiceImplementation* strSAPs+=SAPRef*
+ //attributes+=Attribute* actorRefs+=ActorRef* bindings+=Binding* connections+=LayerConnection* "}")? ("Behavior" "{"
+ //operations+=Operation* stateMachine=StateMachine? "}")? "}"
+ public Group getGroup() { return cGroup; }
+
+ //abstract?="abstract"?
+ public Assignment getAbstractAssignment_0() { return cAbstractAssignment_0; }
+
+ //"abstract"
+ public Keyword getAbstractAbstractKeyword_0_0() { return cAbstractAbstractKeyword_0_0; }
+
+ //"ActorClass"
+ public Keyword getActorClassKeyword_1() { return cActorClassKeyword_1; }
+
+ //name=ID
+ public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+
+ //("extends" base=[ActorClass|FQN])?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //"extends"
+ public Keyword getExtendsKeyword_3_0() { return cExtendsKeyword_3_0; }
+
+ //base=[ActorClass|FQN]
+ public Assignment getBaseAssignment_3_1() { return cBaseAssignment_3_1; }
+
+ //[ActorClass|FQN]
+ public CrossReference getBaseActorClassCrossReference_3_1_0() { return cBaseActorClassCrossReference_3_1_0; }
+
+ //FQN
+ public RuleCall getBaseActorClassFQNParserRuleCall_3_1_0_1() { return cBaseActorClassFQNParserRuleCall_3_1_0_1; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
+
+ //("Interface" "{" ifPorts+=Port* ifSPPs+=SPPRef* "}")?
+ public Group getGroup_5() { return cGroup_5; }
+
+ //"Interface"
+ public Keyword getInterfaceKeyword_5_0() { return cInterfaceKeyword_5_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+ //ifPorts+=Port*
+ public Assignment getIfPortsAssignment_5_2() { return cIfPortsAssignment_5_2; }
+
+ //Port
+ public RuleCall getIfPortsPortParserRuleCall_5_2_0() { return cIfPortsPortParserRuleCall_5_2_0; }
+
+ //ifSPPs+=SPPRef*
+ public Assignment getIfSPPsAssignment_5_3() { return cIfSPPsAssignment_5_3; }
+
+ //SPPRef
+ public RuleCall getIfSPPsSPPRefParserRuleCall_5_3_0() { return cIfSPPsSPPRefParserRuleCall_5_3_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
+
+ //("Structure" "{" ("usercode1" userCode1=DetailCode)? ("usercode2" userCode2=DetailCode)? (intPorts+=Port |
+ //extPorts+=ExternalPort)* serviceImplementations+=ServiceImplementation* strSAPs+=SAPRef* attributes+=Attribute*
+ //actorRefs+=ActorRef* bindings+=Binding* connections+=LayerConnection* "}")?
+ public Group getGroup_6() { return cGroup_6; }
+
+ //"Structure"
+ public Keyword getStructureKeyword_6_0() { return cStructureKeyword_6_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+ //("usercode1" userCode1=DetailCode)?
+ public Group getGroup_6_2() { return cGroup_6_2; }
+
+ //"usercode1"
+ public Keyword getUsercode1Keyword_6_2_0() { return cUsercode1Keyword_6_2_0; }
+
+ //userCode1=DetailCode
+ public Assignment getUserCode1Assignment_6_2_1() { return cUserCode1Assignment_6_2_1; }
+
+ //DetailCode
+ public RuleCall getUserCode1DetailCodeParserRuleCall_6_2_1_0() { return cUserCode1DetailCodeParserRuleCall_6_2_1_0; }
+
+ //("usercode2" userCode2=DetailCode)?
+ public Group getGroup_6_3() { return cGroup_6_3; }
+
+ //"usercode2"
+ public Keyword getUsercode2Keyword_6_3_0() { return cUsercode2Keyword_6_3_0; }
+
+ //userCode2=DetailCode
+ public Assignment getUserCode2Assignment_6_3_1() { return cUserCode2Assignment_6_3_1; }
+
+ //DetailCode
+ public RuleCall getUserCode2DetailCodeParserRuleCall_6_3_1_0() { return cUserCode2DetailCodeParserRuleCall_6_3_1_0; }
+
+ //(intPorts+=Port | extPorts+=ExternalPort)*
+ public Alternatives getAlternatives_6_4() { return cAlternatives_6_4; }
+
+ //intPorts+=Port
+ public Assignment getIntPortsAssignment_6_4_0() { return cIntPortsAssignment_6_4_0; }
+
+ //Port
+ public RuleCall getIntPortsPortParserRuleCall_6_4_0_0() { return cIntPortsPortParserRuleCall_6_4_0_0; }
+
+ //extPorts+=ExternalPort
+ public Assignment getExtPortsAssignment_6_4_1() { return cExtPortsAssignment_6_4_1; }
+
+ //ExternalPort
+ public RuleCall getExtPortsExternalPortParserRuleCall_6_4_1_0() { return cExtPortsExternalPortParserRuleCall_6_4_1_0; }
+
+ //serviceImplementations+=ServiceImplementation*
+ public Assignment getServiceImplementationsAssignment_6_5() { return cServiceImplementationsAssignment_6_5; }
+
+ //ServiceImplementation
+ public RuleCall getServiceImplementationsServiceImplementationParserRuleCall_6_5_0() { return cServiceImplementationsServiceImplementationParserRuleCall_6_5_0; }
+
+ //strSAPs+=SAPRef*
+ public Assignment getStrSAPsAssignment_6_6() { return cStrSAPsAssignment_6_6; }
+
+ //SAPRef
+ public RuleCall getStrSAPsSAPRefParserRuleCall_6_6_0() { return cStrSAPsSAPRefParserRuleCall_6_6_0; }
+
+ //attributes+=Attribute*
+ public Assignment getAttributesAssignment_6_7() { return cAttributesAssignment_6_7; }
+
+ //Attribute
+ public RuleCall getAttributesAttributeParserRuleCall_6_7_0() { return cAttributesAttributeParserRuleCall_6_7_0; }
+
+ //actorRefs+=ActorRef*
+ public Assignment getActorRefsAssignment_6_8() { return cActorRefsAssignment_6_8; }
+
+ //ActorRef
+ public RuleCall getActorRefsActorRefParserRuleCall_6_8_0() { return cActorRefsActorRefParserRuleCall_6_8_0; }
+
+ //bindings+=Binding*
+ public Assignment getBindingsAssignment_6_9() { return cBindingsAssignment_6_9; }
+
+ //Binding
+ public RuleCall getBindingsBindingParserRuleCall_6_9_0() { return cBindingsBindingParserRuleCall_6_9_0; }
+
+ //connections+=LayerConnection*
+ public Assignment getConnectionsAssignment_6_10() { return cConnectionsAssignment_6_10; }
+
+ //LayerConnection
+ public RuleCall getConnectionsLayerConnectionParserRuleCall_6_10_0() { return cConnectionsLayerConnectionParserRuleCall_6_10_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_6_11() { return cRightCurlyBracketKeyword_6_11; }
+
+ //("Behavior" "{" operations+=Operation* stateMachine=StateMachine? "}")?
+ public Group getGroup_7() { return cGroup_7; }
+
+ //"Behavior"
+ public Keyword getBehaviorKeyword_7_0() { return cBehaviorKeyword_7_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+ //operations+=Operation*
+ public Assignment getOperationsAssignment_7_2() { return cOperationsAssignment_7_2; }
+
+ //Operation
+ public RuleCall getOperationsOperationParserRuleCall_7_2_0() { return cOperationsOperationParserRuleCall_7_2_0; }
+
+ //stateMachine=StateMachine?
+ public Assignment getStateMachineAssignment_7_3() { return cStateMachineAssignment_7_3; }
+
+ //StateMachine
+ public RuleCall getStateMachineStateMachineParserRuleCall_7_3_0() { return cStateMachineStateMachineParserRuleCall_7_3_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+ }
+
+ public class InterfaceItemElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InterfaceItem");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cPortParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cSAPRefParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cSPPRefParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ //InterfaceItem:
+ // Port | SAPRef | SPPRef;
+ public ParserRule getRule() { return rule; }
+
+ //Port | SAPRef | SPPRef
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //Port
+ public RuleCall getPortParserRuleCall_0() { return cPortParserRuleCall_0; }
+
+ //SAPRef
+ public RuleCall getSAPRefParserRuleCall_1() { return cSAPRefParserRuleCall_1; }
+
+ //SPPRef
+ public RuleCall getSPPRefParserRuleCall_2() { return cSPPRefParserRuleCall_2; }
+ }
+
+ public class PortElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Port");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cConjugatedAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final Keyword cConjugatedConjugatedKeyword_0_0 = (Keyword)cConjugatedAssignment_0.eContents().get(0);
+ private final Keyword cPortKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Keyword cLeftSquareBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+ private final Assignment cMultiplicityAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+ private final RuleCall cMultiplicityINTTerminalRuleCall_3_1_0 = (RuleCall)cMultiplicityAssignment_3_1.eContents().get(0);
+ private final Keyword cRightSquareBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
+ private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Assignment cProtocolAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final CrossReference cProtocolProtocolClassCrossReference_5_0 = (CrossReference)cProtocolAssignment_5.eContents().get(0);
+ private final RuleCall cProtocolProtocolClassFQNParserRuleCall_5_0_1 = (RuleCall)cProtocolProtocolClassCrossReference_5_0.eContents().get(1);
+
+ //Port:
+ // conjugated?="conjugated"? "Port" name=ID ("[" multiplicity=INT "]")? ":" protocol=[ProtocolClass|FQN];
+ public ParserRule getRule() { return rule; }
+
+ //conjugated?="conjugated"? "Port" name=ID ("[" multiplicity=INT "]")? ":" protocol=[ProtocolClass|FQN]
+ public Group getGroup() { return cGroup; }
+
+ //conjugated?="conjugated"?
+ public Assignment getConjugatedAssignment_0() { return cConjugatedAssignment_0; }
+
+ //"conjugated"
+ public Keyword getConjugatedConjugatedKeyword_0_0() { return cConjugatedConjugatedKeyword_0_0; }
+
+ //"Port"
+ public Keyword getPortKeyword_1() { return cPortKeyword_1; }
+
+ //name=ID
+ public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+
+ //("[" multiplicity=INT "]")?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //"["
+ public Keyword getLeftSquareBracketKeyword_3_0() { return cLeftSquareBracketKeyword_3_0; }
+
+ //multiplicity=INT
+ public Assignment getMultiplicityAssignment_3_1() { return cMultiplicityAssignment_3_1; }
+
+ //INT
+ public RuleCall getMultiplicityINTTerminalRuleCall_3_1_0() { return cMultiplicityINTTerminalRuleCall_3_1_0; }
+
+ //"]"
+ public Keyword getRightSquareBracketKeyword_3_2() { return cRightSquareBracketKeyword_3_2; }
+
+ //":"
+ public Keyword getColonKeyword_4() { return cColonKeyword_4; }
+
+ //protocol=[ProtocolClass|FQN]
+ public Assignment getProtocolAssignment_5() { return cProtocolAssignment_5; }
+
+ //[ProtocolClass|FQN]
+ public CrossReference getProtocolProtocolClassCrossReference_5_0() { return cProtocolProtocolClassCrossReference_5_0; }
+
+ //FQN
+ public RuleCall getProtocolProtocolClassFQNParserRuleCall_5_0_1() { return cProtocolProtocolClassFQNParserRuleCall_5_0_1; }
+ }
+
+ public class ExternalPortElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalPort");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cExternalKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Keyword cPortKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cIfportAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final CrossReference cIfportPortCrossReference_2_0 = (CrossReference)cIfportAssignment_2.eContents().get(0);
+ private final RuleCall cIfportPortIDTerminalRuleCall_2_0_1 = (RuleCall)cIfportPortCrossReference_2_0.eContents().get(1);
+
+ //ExternalPort:
+ // "external" "Port" ifport=[Port];
+ public ParserRule getRule() { return rule; }
+
+ //"external" "Port" ifport=[Port]
+ public Group getGroup() { return cGroup; }
+
+ //"external"
+ public Keyword getExternalKeyword_0() { return cExternalKeyword_0; }
+
+ //"Port"
+ public Keyword getPortKeyword_1() { return cPortKeyword_1; }
+
+ //ifport=[Port]
+ public Assignment getIfportAssignment_2() { return cIfportAssignment_2; }
+
+ //[Port]
+ public CrossReference getIfportPortCrossReference_2_0() { return cIfportPortCrossReference_2_0; }
+
+ //ID
+ public RuleCall getIfportPortIDTerminalRuleCall_2_0_1() { return cIfportPortIDTerminalRuleCall_2_0_1; }
+ }
+
+ public class SAPRefElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SAPRef");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cSAPKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cProtocolAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final CrossReference cProtocolProtocolClassCrossReference_3_0 = (CrossReference)cProtocolAssignment_3.eContents().get(0);
+ private final RuleCall cProtocolProtocolClassFQNParserRuleCall_3_0_1 = (RuleCall)cProtocolProtocolClassCrossReference_3_0.eContents().get(1);
+
+ //SAPRef: // we omitted the SAP type (Timing/Frame/Exception)
+ // "SAP" name=ID ":" protocol=[ProtocolClass|FQN];
+ public ParserRule getRule() { return rule; }
+
+ //// we omitted the SAP type (Timing/Frame/Exception)
+ //"SAP" name=ID ":" protocol=[ProtocolClass|FQN]
+ public Group getGroup() { return cGroup; }
+
+ //// we omitted the SAP type (Timing/Frame/Exception)
+ //"SAP"
+ public Keyword getSAPKeyword_0() { return cSAPKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //protocol=[ProtocolClass|FQN]
+ public Assignment getProtocolAssignment_3() { return cProtocolAssignment_3; }
+
+ //[ProtocolClass|FQN]
+ public CrossReference getProtocolProtocolClassCrossReference_3_0() { return cProtocolProtocolClassCrossReference_3_0; }
+
+ //FQN
+ public RuleCall getProtocolProtocolClassFQNParserRuleCall_3_0_1() { return cProtocolProtocolClassFQNParserRuleCall_3_0_1; }
+ }
+
+ public class SPPRefElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SPPRef");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cSPPKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cProtocolAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final CrossReference cProtocolProtocolClassCrossReference_3_0 = (CrossReference)cProtocolAssignment_3.eContents().get(0);
+ private final RuleCall cProtocolProtocolClassFQNParserRuleCall_3_0_1 = (RuleCall)cProtocolProtocolClassCrossReference_3_0.eContents().get(1);
+
+ //SPPRef:
+ // "SPP" name=ID ":" protocol=[ProtocolClass|FQN];
+ public ParserRule getRule() { return rule; }
+
+ //"SPP" name=ID ":" protocol=[ProtocolClass|FQN]
+ public Group getGroup() { return cGroup; }
+
+ //"SPP"
+ public Keyword getSPPKeyword_0() { return cSPPKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //protocol=[ProtocolClass|FQN]
+ public Assignment getProtocolAssignment_3() { return cProtocolAssignment_3; }
+
+ //[ProtocolClass|FQN]
+ public CrossReference getProtocolProtocolClassCrossReference_3_0() { return cProtocolProtocolClassCrossReference_3_0; }
+
+ //FQN
+ public RuleCall getProtocolProtocolClassFQNParserRuleCall_3_0_1() { return cProtocolProtocolClassFQNParserRuleCall_3_0_1; }
+ }
+
+ public class ServiceImplementationElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ServiceImplementation");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cServiceImplementationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Keyword cOfKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cSppAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final CrossReference cSppSPPRefCrossReference_2_0 = (CrossReference)cSppAssignment_2.eContents().get(0);
+ private final RuleCall cSppSPPRefIDTerminalRuleCall_2_0_1 = (RuleCall)cSppSPPRefCrossReference_2_0.eContents().get(1);
+
+ //ServiceImplementation:
+ // "ServiceImplementation" "of" spp=[SPPRef];
+ public ParserRule getRule() { return rule; }
+
+ //"ServiceImplementation" "of" spp=[SPPRef]
+ public Group getGroup() { return cGroup; }
+
+ //"ServiceImplementation"
+ public Keyword getServiceImplementationKeyword_0() { return cServiceImplementationKeyword_0; }
+
+ //"of"
+ public Keyword getOfKeyword_1() { return cOfKeyword_1; }
+
+ //spp=[SPPRef]
+ public Assignment getSppAssignment_2() { return cSppAssignment_2; }
+
+ //[SPPRef]
+ public CrossReference getSppSPPRefCrossReference_2_0() { return cSppSPPRefCrossReference_2_0; }
+
+ //ID
+ public RuleCall getSppSPPRefIDTerminalRuleCall_2_0_1() { return cSppSPPRefIDTerminalRuleCall_2_0_1; }
+ }
+
+ public class LogicalSystemElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LogicalSystem");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLogicalSystemKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cSubSystemsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cSubSystemsSubSystemRefParserRuleCall_3_0 = (RuleCall)cSubSystemsAssignment_3.eContents().get(0);
+ private final Assignment cBindingsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final RuleCall cBindingsBindingParserRuleCall_4_0 = (RuleCall)cBindingsAssignment_4.eContents().get(0);
+ private final Assignment cConnectionsAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final RuleCall cConnectionsLayerConnectionParserRuleCall_5_0 = (RuleCall)cConnectionsAssignment_5.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+
+ //LogicalSystem:
+ // "LogicalSystem" name=ID "{" subSystems+=SubSystemRef+ bindings+=Binding* connections+=LayerConnection* "}";
+ public ParserRule getRule() { return rule; }
+
+ //"LogicalSystem" name=ID "{" subSystems+=SubSystemRef+ bindings+=Binding* connections+=LayerConnection* "}"
+ public Group getGroup() { return cGroup; }
+
+ //"LogicalSystem"
+ public Keyword getLogicalSystemKeyword_0() { return cLogicalSystemKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+ //subSystems+=SubSystemRef+
+ public Assignment getSubSystemsAssignment_3() { return cSubSystemsAssignment_3; }
+
+ //SubSystemRef
+ public RuleCall getSubSystemsSubSystemRefParserRuleCall_3_0() { return cSubSystemsSubSystemRefParserRuleCall_3_0; }
+
+ //bindings+=Binding*
+ public Assignment getBindingsAssignment_4() { return cBindingsAssignment_4; }
+
+ //Binding
+ public RuleCall getBindingsBindingParserRuleCall_4_0() { return cBindingsBindingParserRuleCall_4_0; }
+
+ //connections+=LayerConnection*
+ public Assignment getConnectionsAssignment_5() { return cConnectionsAssignment_5; }
+
+ //LayerConnection
+ public RuleCall getConnectionsLayerConnectionParserRuleCall_5_0() { return cConnectionsLayerConnectionParserRuleCall_5_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+ }
+
+ public class ActorContainerRefElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActorContainerRef");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cSubSystemRefParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cActorRefParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //ActorContainerRef:
+ // SubSystemRef | ActorRef;
+ public ParserRule getRule() { return rule; }
+
+ //SubSystemRef | ActorRef
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //SubSystemRef
+ public RuleCall getSubSystemRefParserRuleCall_0() { return cSubSystemRefParserRuleCall_0; }
+
+ //ActorRef
+ public RuleCall getActorRefParserRuleCall_1() { return cActorRefParserRuleCall_1; }
+ }
+
+ public class SubSystemRefElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SubSystemRef");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cSubSystemRefKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final CrossReference cTypeSubSystemClassCrossReference_3_0 = (CrossReference)cTypeAssignment_3.eContents().get(0);
+ private final RuleCall cTypeSubSystemClassFQNParserRuleCall_3_0_1 = (RuleCall)cTypeSubSystemClassCrossReference_3_0.eContents().get(1);
+
+ //SubSystemRef:
+ // "SubSystemRef" name=ID ":" type=[SubSystemClass|FQN];
+ public ParserRule getRule() { return rule; }
+
+ //"SubSystemRef" name=ID ":" type=[SubSystemClass|FQN]
+ public Group getGroup() { return cGroup; }
+
+ //"SubSystemRef"
+ public Keyword getSubSystemRefKeyword_0() { return cSubSystemRefKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //type=[SubSystemClass|FQN]
+ public Assignment getTypeAssignment_3() { return cTypeAssignment_3; }
+
+ //[SubSystemClass|FQN]
+ public CrossReference getTypeSubSystemClassCrossReference_3_0() { return cTypeSubSystemClassCrossReference_3_0; }
+
+ //FQN
+ public RuleCall getTypeSubSystemClassFQNParserRuleCall_3_0_1() { return cTypeSubSystemClassFQNParserRuleCall_3_0_1; }
+ }
+
+ public class SubSystemClassElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SubSystemClass");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cSubSystemClassKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cRelayPortsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cRelayPortsPortParserRuleCall_3_0 = (RuleCall)cRelayPortsAssignment_3.eContents().get(0);
+ private final Assignment cIfSPPsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final RuleCall cIfSPPsSPPRefParserRuleCall_4_0 = (RuleCall)cIfSPPsAssignment_4.eContents().get(0);
+ private final Assignment cActorRefsAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final RuleCall cActorRefsActorRefParserRuleCall_5_0 = (RuleCall)cActorRefsAssignment_5.eContents().get(0);
+ private final Assignment cBindingsAssignment_6 = (Assignment)cGroup.eContents().get(6);
+ private final RuleCall cBindingsBindingParserRuleCall_6_0 = (RuleCall)cBindingsAssignment_6.eContents().get(0);
+ private final Assignment cConnectionsAssignment_7 = (Assignment)cGroup.eContents().get(7);
+ private final RuleCall cConnectionsLayerConnectionParserRuleCall_7_0 = (RuleCall)cConnectionsAssignment_7.eContents().get(0);
+ private final Assignment cThreadsAssignment_8 = (Assignment)cGroup.eContents().get(8);
+ private final RuleCall cThreadsLogicalThreadParserRuleCall_8_0 = (RuleCall)cThreadsAssignment_8.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+
+ //SubSystemClass:
+ // "SubSystemClass" name=ID "{" relayPorts+=Port* ifSPPs+=SPPRef* actorRefs+=ActorRef+ bindings+=Binding*
+ // connections+=LayerConnection* threads+=LogicalThread* "}";
+ public ParserRule getRule() { return rule; }
+
+ //"SubSystemClass" name=ID "{" relayPorts+=Port* ifSPPs+=SPPRef* actorRefs+=ActorRef+ bindings+=Binding*
+ //connections+=LayerConnection* threads+=LogicalThread* "}"
+ public Group getGroup() { return cGroup; }
+
+ //"SubSystemClass"
+ public Keyword getSubSystemClassKeyword_0() { return cSubSystemClassKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+ //relayPorts+=Port*
+ public Assignment getRelayPortsAssignment_3() { return cRelayPortsAssignment_3; }
+
+ //Port
+ public RuleCall getRelayPortsPortParserRuleCall_3_0() { return cRelayPortsPortParserRuleCall_3_0; }
+
+ //ifSPPs+=SPPRef*
+ public Assignment getIfSPPsAssignment_4() { return cIfSPPsAssignment_4; }
+
+ //SPPRef
+ public RuleCall getIfSPPsSPPRefParserRuleCall_4_0() { return cIfSPPsSPPRefParserRuleCall_4_0; }
+
+ //actorRefs+=ActorRef+
+ public Assignment getActorRefsAssignment_5() { return cActorRefsAssignment_5; }
+
+ //ActorRef
+ public RuleCall getActorRefsActorRefParserRuleCall_5_0() { return cActorRefsActorRefParserRuleCall_5_0; }
+
+ //bindings+=Binding*
+ public Assignment getBindingsAssignment_6() { return cBindingsAssignment_6; }
+
+ //Binding
+ public RuleCall getBindingsBindingParserRuleCall_6_0() { return cBindingsBindingParserRuleCall_6_0; }
+
+ //connections+=LayerConnection*
+ public Assignment getConnectionsAssignment_7() { return cConnectionsAssignment_7; }
+
+ //LayerConnection
+ public RuleCall getConnectionsLayerConnectionParserRuleCall_7_0() { return cConnectionsLayerConnectionParserRuleCall_7_0; }
+
+ //threads+=LogicalThread*
+ public Assignment getThreadsAssignment_8() { return cThreadsAssignment_8; }
+
+ //LogicalThread
+ public RuleCall getThreadsLogicalThreadParserRuleCall_8_0() { return cThreadsLogicalThreadParserRuleCall_8_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
+ }
+
+ public class LogicalThreadElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LogicalThread");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLogicalThreadKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cInstancesAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cInstancesActorInstancePathParserRuleCall_3_0 = (RuleCall)cInstancesAssignment_3.eContents().get(0);
+ private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+ private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+ private final Assignment cInstancesAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+ private final RuleCall cInstancesActorInstancePathParserRuleCall_4_1_0 = (RuleCall)cInstancesAssignment_4_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+
+ //LogicalThread:
+ // "LogicalThread" name=ID "{" instances+=ActorInstancePath ("," instances+=ActorInstancePath)* "}";
+ public ParserRule getRule() { return rule; }
+
+ //"LogicalThread" name=ID "{" instances+=ActorInstancePath ("," instances+=ActorInstancePath)* "}"
+ public Group getGroup() { return cGroup; }
+
+ //"LogicalThread"
+ public Keyword getLogicalThreadKeyword_0() { return cLogicalThreadKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+ //instances+=ActorInstancePath
+ public Assignment getInstancesAssignment_3() { return cInstancesAssignment_3; }
+
+ //ActorInstancePath
+ public RuleCall getInstancesActorInstancePathParserRuleCall_3_0() { return cInstancesActorInstancePathParserRuleCall_3_0; }
+
+ //("," instances+=ActorInstancePath)*
+ public Group getGroup_4() { return cGroup_4; }
+
+ //","
+ public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }
+
+ //instances+=ActorInstancePath
+ public Assignment getInstancesAssignment_4_1() { return cInstancesAssignment_4_1; }
+
+ //ActorInstancePath
+ public RuleCall getInstancesActorInstancePathParserRuleCall_4_1_0() { return cInstancesActorInstancePathParserRuleCall_4_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+ }
+
+ public class ActorInstancePathElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActorInstancePath");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cSegmentsAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cSegmentsIDTerminalRuleCall_0_0 = (RuleCall)cSegmentsAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cSegmentsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cSegmentsIDTerminalRuleCall_1_1_0 = (RuleCall)cSegmentsAssignment_1_1.eContents().get(0);
+
+ //ActorInstancePath:
+ // segments+=ID ("." segments+=ID)*;
+ public ParserRule getRule() { return rule; }
+
+ //segments+=ID ("." segments+=ID)*
+ public Group getGroup() { return cGroup; }
+
+ //segments+=ID
+ public Assignment getSegmentsAssignment_0() { return cSegmentsAssignment_0; }
+
+ //ID
+ public RuleCall getSegmentsIDTerminalRuleCall_0_0() { return cSegmentsIDTerminalRuleCall_0_0; }
+
+ //("." segments+=ID)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //"."
+ public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+ //segments+=ID
+ public Assignment getSegmentsAssignment_1_1() { return cSegmentsAssignment_1_1; }
+
+ //ID
+ public RuleCall getSegmentsIDTerminalRuleCall_1_1_0() { return cSegmentsIDTerminalRuleCall_1_1_0; }
+ }
+
+ public class BindingElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Binding");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cBindingKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cEndpoint1Assignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cEndpoint1BindingEndPointParserRuleCall_1_0 = (RuleCall)cEndpoint1Assignment_1.eContents().get(0);
+ private final Keyword cAndKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cEndpoint2Assignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cEndpoint2BindingEndPointParserRuleCall_3_0 = (RuleCall)cEndpoint2Assignment_3.eContents().get(0);
+
+ //// TODOHRR: bindings for replicated ports
+ //// (1) declare several bindings
+ //// (2) use a notation with 1 to n bindings
+ //Binding:
+ // "Binding" endpoint1=BindingEndPoint "and" endpoint2=BindingEndPoint;
+ public ParserRule getRule() { return rule; }
+
+ //"Binding" endpoint1=BindingEndPoint "and" endpoint2=BindingEndPoint
+ public Group getGroup() { return cGroup; }
+
+ //"Binding"
+ public Keyword getBindingKeyword_0() { return cBindingKeyword_0; }
+
+ //endpoint1=BindingEndPoint
+ public Assignment getEndpoint1Assignment_1() { return cEndpoint1Assignment_1; }
+
+ //BindingEndPoint
+ public RuleCall getEndpoint1BindingEndPointParserRuleCall_1_0() { return cEndpoint1BindingEndPointParserRuleCall_1_0; }
+
+ //"and"
+ public Keyword getAndKeyword_2() { return cAndKeyword_2; }
+
+ //endpoint2=BindingEndPoint
+ public Assignment getEndpoint2Assignment_3() { return cEndpoint2Assignment_3; }
+
+ //BindingEndPoint
+ public RuleCall getEndpoint2BindingEndPointParserRuleCall_3_0() { return cEndpoint2BindingEndPointParserRuleCall_3_0; }
+ }
+
+ public class BindingEndPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BindingEndPoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
+ private final Assignment cActorRefAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
+ private final CrossReference cActorRefActorContainerRefCrossReference_0_0_0 = (CrossReference)cActorRefAssignment_0_0.eContents().get(0);
+ private final RuleCall cActorRefActorContainerRefIDTerminalRuleCall_0_0_0_1 = (RuleCall)cActorRefActorContainerRefCrossReference_0_0_0.eContents().get(1);
+ private final Keyword cFullStopKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
+ private final Assignment cPortAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cPortPortCrossReference_1_0 = (CrossReference)cPortAssignment_1.eContents().get(0);
+ private final RuleCall cPortPortIDTerminalRuleCall_1_0_1 = (RuleCall)cPortPortCrossReference_1_0.eContents().get(1);
+
+ //BindingEndPoint:
+ // (actorRef=[ActorContainerRef] ".")? port=[Port];
+ public ParserRule getRule() { return rule; }
+
+ //(actorRef=[ActorContainerRef] ".")? port=[Port]
+ public Group getGroup() { return cGroup; }
+
+ //(actorRef=[ActorContainerRef] ".")?
+ public Group getGroup_0() { return cGroup_0; }
+
+ //actorRef=[ActorContainerRef]
+ public Assignment getActorRefAssignment_0_0() { return cActorRefAssignment_0_0; }
+
+ //[ActorContainerRef]
+ public CrossReference getActorRefActorContainerRefCrossReference_0_0_0() { return cActorRefActorContainerRefCrossReference_0_0_0; }
+
+ //ID
+ public RuleCall getActorRefActorContainerRefIDTerminalRuleCall_0_0_0_1() { return cActorRefActorContainerRefIDTerminalRuleCall_0_0_0_1; }
+
+ //"."
+ public Keyword getFullStopKeyword_0_1() { return cFullStopKeyword_0_1; }
+
+ //port=[Port]
+ public Assignment getPortAssignment_1() { return cPortAssignment_1; }
+
+ //[Port]
+ public CrossReference getPortPortCrossReference_1_0() { return cPortPortCrossReference_1_0; }
+
+ //ID
+ public RuleCall getPortPortIDTerminalRuleCall_1_0_1() { return cPortPortIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class LayerConnectionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LayerConnection");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLayerConnectionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cFromAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cFromSAPointParserRuleCall_1_0 = (RuleCall)cFromAssignment_1.eContents().get(0);
+ private final Keyword cSatisfied_byKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cToAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cToSPPointParserRuleCall_3_0 = (RuleCall)cToAssignment_3.eContents().get(0);
+
+ //LayerConnection:
+ // "LayerConnection" from=SAPoint "satisfied_by" to=SPPoint;
+ public ParserRule getRule() { return rule; }
+
+ //"LayerConnection" from=SAPoint "satisfied_by" to=SPPoint
+ public Group getGroup() { return cGroup; }
+
+ //"LayerConnection"
+ public Keyword getLayerConnectionKeyword_0() { return cLayerConnectionKeyword_0; }
+
+ //from=SAPoint
+ public Assignment getFromAssignment_1() { return cFromAssignment_1; }
+
+ //SAPoint
+ public RuleCall getFromSAPointParserRuleCall_1_0() { return cFromSAPointParserRuleCall_1_0; }
+
+ //"satisfied_by"
+ public Keyword getSatisfied_byKeyword_2() { return cSatisfied_byKeyword_2; }
+
+ //to=SPPoint
+ public Assignment getToAssignment_3() { return cToAssignment_3; }
+
+ //SPPoint
+ public RuleCall getToSPPointParserRuleCall_3_0() { return cToSPPointParserRuleCall_3_0; }
+ }
+
+ public class SAPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SAPoint");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cRefSAPointParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cRelaySAPointParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //SAPoint:
+ // RefSAPoint | RelaySAPoint;
+ public ParserRule getRule() { return rule; }
+
+ //RefSAPoint | RelaySAPoint
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //RefSAPoint
+ public RuleCall getRefSAPointParserRuleCall_0() { return cRefSAPointParserRuleCall_0; }
+
+ //RelaySAPoint
+ public RuleCall getRelaySAPointParserRuleCall_1() { return cRelaySAPointParserRuleCall_1; }
+ }
+
+ public class RefSAPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RefSAPoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cRefKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cRefActorContainerRefCrossReference_1_0 = (CrossReference)cRefAssignment_1.eContents().get(0);
+ private final RuleCall cRefActorContainerRefIDTerminalRuleCall_1_0_1 = (RuleCall)cRefActorContainerRefCrossReference_1_0.eContents().get(1);
+
+ //RefSAPoint: // satisfies a sub actor
+ // "ref" ref=[ActorContainerRef];
+ public ParserRule getRule() { return rule; }
+
+ //// satisfies a sub actor
+ //"ref" ref=[ActorContainerRef]
+ public Group getGroup() { return cGroup; }
+
+ //// satisfies a sub actor
+ //"ref"
+ public Keyword getRefKeyword_0() { return cRefKeyword_0; }
+
+ //ref=[ActorContainerRef]
+ public Assignment getRefAssignment_1() { return cRefAssignment_1; }
+
+ //[ActorContainerRef]
+ public CrossReference getRefActorContainerRefCrossReference_1_0() { return cRefActorContainerRefCrossReference_1_0; }
+
+ //ID
+ public RuleCall getRefActorContainerRefIDTerminalRuleCall_1_0_1() { return cRefActorContainerRefIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class RelaySAPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RelaySAPoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cRelay_sapKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cRelayAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cRelaySPPRefCrossReference_1_0 = (CrossReference)cRelayAssignment_1.eContents().get(0);
+ private final RuleCall cRelaySPPRefIDTerminalRuleCall_1_0_1 = (RuleCall)cRelaySPPRefCrossReference_1_0.eContents().get(1);
+
+ //RelaySAPoint: // relays from own interface
+ // "relay_sap" relay=[SPPRef];
+ public ParserRule getRule() { return rule; }
+
+ //// relays from own interface
+ //"relay_sap" relay=[SPPRef]
+ public Group getGroup() { return cGroup; }
+
+ //// relays from own interface
+ //"relay_sap"
+ public Keyword getRelay_sapKeyword_0() { return cRelay_sapKeyword_0; }
+
+ //relay=[SPPRef]
+ public Assignment getRelayAssignment_1() { return cRelayAssignment_1; }
+
+ //[SPPRef]
+ public CrossReference getRelaySPPRefCrossReference_1_0() { return cRelaySPPRefCrossReference_1_0; }
+
+ //ID
+ public RuleCall getRelaySPPRefIDTerminalRuleCall_1_0_1() { return cRelaySPPRefIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class SPPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SPPoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cRefAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cRefActorContainerRefCrossReference_0_0 = (CrossReference)cRefAssignment_0.eContents().get(0);
+ private final RuleCall cRefActorContainerRefIDTerminalRuleCall_0_0_1 = (RuleCall)cRefActorContainerRefCrossReference_0_0.eContents().get(1);
+ private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cServiceAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final CrossReference cServiceSPPRefCrossReference_2_0 = (CrossReference)cServiceAssignment_2.eContents().get(0);
+ private final RuleCall cServiceSPPRefIDTerminalRuleCall_2_0_1 = (RuleCall)cServiceSPPRefCrossReference_2_0.eContents().get(1);
+
+ //SPPoint:
+ // ref=[ActorContainerRef] "." service=[SPPRef];
+ public ParserRule getRule() { return rule; }
+
+ //ref=[ActorContainerRef] "." service=[SPPRef]
+ public Group getGroup() { return cGroup; }
+
+ //ref=[ActorContainerRef]
+ public Assignment getRefAssignment_0() { return cRefAssignment_0; }
+
+ //[ActorContainerRef]
+ public CrossReference getRefActorContainerRefCrossReference_0_0() { return cRefActorContainerRefCrossReference_0_0; }
+
+ //ID
+ public RuleCall getRefActorContainerRefIDTerminalRuleCall_0_0_1() { return cRefActorContainerRefIDTerminalRuleCall_0_0_1; }
+
+ //"."
+ public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }
+
+ //service=[SPPRef]
+ public Assignment getServiceAssignment_2() { return cServiceAssignment_2; }
+
+ //[SPPRef]
+ public CrossReference getServiceSPPRefCrossReference_2_0() { return cServiceSPPRefCrossReference_2_0; }
+
+ //ID
+ public RuleCall getServiceSPPRefIDTerminalRuleCall_2_0_1() { return cServiceSPPRefIDTerminalRuleCall_2_0_1; }
+ }
+
+ public class ActorRefElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActorRef");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cActorRefKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final CrossReference cTypeActorClassCrossReference_3_0 = (CrossReference)cTypeAssignment_3.eContents().get(0);
+ private final RuleCall cTypeActorClassFQNParserRuleCall_3_0_1 = (RuleCall)cTypeActorClassCrossReference_3_0.eContents().get(1);
+
+ //// TODOHRR: support replicated actors
+ //ActorRef:
+ // "ActorRef" name=ID ":" type=[ActorClass|FQN];
+ public ParserRule getRule() { return rule; }
+
+ //"ActorRef" name=ID ":" type=[ActorClass|FQN]
+ public Group getGroup() { return cGroup; }
+
+ //"ActorRef"
+ public Keyword getActorRefKeyword_0() { return cActorRefKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //type=[ActorClass|FQN]
+ public Assignment getTypeAssignment_3() { return cTypeAssignment_3; }
+
+ //[ActorClass|FQN]
+ public CrossReference getTypeActorClassCrossReference_3_0() { return cTypeActorClassCrossReference_3_0; }
+
+ //FQN
+ public RuleCall getTypeActorClassFQNParserRuleCall_3_0_1() { return cTypeActorClassFQNParserRuleCall_3_0_1; }
+ }
+
+ public class StateGraphNodeElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StateGraphNode");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cStateParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cChoicePointParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cTrPointParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ //// **************************************************************
+ //// state machine
+ //StateGraphNode:
+ // State | ChoicePoint | TrPoint;
+ public ParserRule getRule() { return rule; }
+
+ //State | ChoicePoint | TrPoint
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //State
+ public RuleCall getStateParserRuleCall_0() { return cStateParserRuleCall_0; }
+
+ //ChoicePoint
+ public RuleCall getChoicePointParserRuleCall_1() { return cChoicePointParserRuleCall_1; }
+
+ //TrPoint
+ public RuleCall getTrPointParserRuleCall_2() { return cTrPointParserRuleCall_2; }
+ }
+
+ public class StateGraphItemElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StateGraphItem");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cStateGraphNodeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cTransitionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //StateGraphItem:
+ // StateGraphNode | Transition;
+ public ParserRule getRule() { return rule; }
+
+ //StateGraphNode | Transition
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //StateGraphNode
+ public RuleCall getStateGraphNodeParserRuleCall_0() { return cStateGraphNodeParserRuleCall_0; }
+
+ //Transition
+ public RuleCall getTransitionParserRuleCall_1() { return cTransitionParserRuleCall_1; }
+ }
+
+ public class StateElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "State");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cBaseStateParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cRefinedStateParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //State:
+ // BaseState | RefinedState;
+ public ParserRule getRule() { return rule; }
+
+ //BaseState | RefinedState
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //BaseState
+ public RuleCall getBaseStateParserRuleCall_0() { return cBaseStateParserRuleCall_0; }
+
+ //RefinedState
+ public RuleCall getRefinedStateParserRuleCall_1() { return cRefinedStateParserRuleCall_1; }
+ }
+
+ public class StateGraphElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StateGraph");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
+ private final Assignment cStatesAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
+ private final RuleCall cStatesStateParserRuleCall_1_0_0 = (RuleCall)cStatesAssignment_1_0.eContents().get(0);
+ private final Assignment cTrPointsAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
+ private final RuleCall cTrPointsTrPointParserRuleCall_1_1_0 = (RuleCall)cTrPointsAssignment_1_1.eContents().get(0);
+ private final Assignment cChPointsAssignment_1_2 = (Assignment)cAlternatives_1.eContents().get(2);
+ private final RuleCall cChPointsChoicePointParserRuleCall_1_2_0 = (RuleCall)cChPointsAssignment_1_2.eContents().get(0);
+ private final Assignment cTransitionsAssignment_1_3 = (Assignment)cAlternatives_1.eContents().get(3);
+ private final RuleCall cTransitionsTransitionParserRuleCall_1_3_0 = (RuleCall)cTransitionsAssignment_1_3.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+
+ //StateGraph:
+ // "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}";
+ public ParserRule getRule() { return rule; }
+
+ //"{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}"
+ public Group getGroup() { return cGroup; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+ //(states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+
+ public Alternatives getAlternatives_1() { return cAlternatives_1; }
+
+ //states+=State
+ public Assignment getStatesAssignment_1_0() { return cStatesAssignment_1_0; }
+
+ //State
+ public RuleCall getStatesStateParserRuleCall_1_0_0() { return cStatesStateParserRuleCall_1_0_0; }
+
+ //trPoints+=TrPoint
+ public Assignment getTrPointsAssignment_1_1() { return cTrPointsAssignment_1_1; }
+
+ //TrPoint
+ public RuleCall getTrPointsTrPointParserRuleCall_1_1_0() { return cTrPointsTrPointParserRuleCall_1_1_0; }
+
+ //chPoints+=ChoicePoint
+ public Assignment getChPointsAssignment_1_2() { return cChPointsAssignment_1_2; }
+
+ //ChoicePoint
+ public RuleCall getChPointsChoicePointParserRuleCall_1_2_0() { return cChPointsChoicePointParserRuleCall_1_2_0; }
+
+ //transitions+=Transition
+ public Assignment getTransitionsAssignment_1_3() { return cTransitionsAssignment_1_3; }
+
+ //Transition
+ public RuleCall getTransitionsTransitionParserRuleCall_1_3_0() { return cTransitionsTransitionParserRuleCall_1_3_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_2() { return cRightCurlyBracketKeyword_2; }
+ }
+
+ public class StateMachineElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StateMachine");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cStateMachineKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+ private final Assignment cStatesAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+ private final RuleCall cStatesStateParserRuleCall_2_0_0 = (RuleCall)cStatesAssignment_2_0.eContents().get(0);
+ private final Assignment cTrPointsAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
+ private final RuleCall cTrPointsTrPointParserRuleCall_2_1_0 = (RuleCall)cTrPointsAssignment_2_1.eContents().get(0);
+ private final Assignment cChPointsAssignment_2_2 = (Assignment)cAlternatives_2.eContents().get(2);
+ private final RuleCall cChPointsChoicePointParserRuleCall_2_2_0 = (RuleCall)cChPointsAssignment_2_2.eContents().get(0);
+ private final Assignment cTransitionsAssignment_2_3 = (Assignment)cAlternatives_2.eContents().get(3);
+ private final RuleCall cTransitionsTransitionParserRuleCall_2_3_0 = (RuleCall)cTransitionsAssignment_2_3.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+
+ //StateMachine returns StateGraph:
+ // "StateMachine" "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}";
+ public ParserRule getRule() { return rule; }
+
+ //"StateMachine" "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}"
+ public Group getGroup() { return cGroup; }
+
+ //"StateMachine"
+ public Keyword getStateMachineKeyword_0() { return cStateMachineKeyword_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+ //(states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+
+ public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+ //states+=State
+ public Assignment getStatesAssignment_2_0() { return cStatesAssignment_2_0; }
+
+ //State
+ public RuleCall getStatesStateParserRuleCall_2_0_0() { return cStatesStateParserRuleCall_2_0_0; }
+
+ //trPoints+=TrPoint
+ public Assignment getTrPointsAssignment_2_1() { return cTrPointsAssignment_2_1; }
+
+ //TrPoint
+ public RuleCall getTrPointsTrPointParserRuleCall_2_1_0() { return cTrPointsTrPointParserRuleCall_2_1_0; }
+
+ //chPoints+=ChoicePoint
+ public Assignment getChPointsAssignment_2_2() { return cChPointsAssignment_2_2; }
+
+ //ChoicePoint
+ public RuleCall getChPointsChoicePointParserRuleCall_2_2_0() { return cChPointsChoicePointParserRuleCall_2_2_0; }
+
+ //transitions+=Transition
+ public Assignment getTransitionsAssignment_2_3() { return cTransitionsAssignment_2_3; }
+
+ //Transition
+ public RuleCall getTransitionsTransitionParserRuleCall_2_3_0() { return cTransitionsTransitionParserRuleCall_2_3_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
+ }
+
+ public class BaseStateElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BaseState");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cStateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Keyword cEntryKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+ private final Assignment cEntryCodeAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+ private final RuleCall cEntryCodeDetailCodeParserRuleCall_3_1_0 = (RuleCall)cEntryCodeAssignment_3_1.eContents().get(0);
+ private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+ private final Keyword cExitKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+ private final Assignment cExitCodeAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+ private final RuleCall cExitCodeDetailCodeParserRuleCall_4_1_0 = (RuleCall)cExitCodeAssignment_4_1.eContents().get(0);
+ private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+ private final Keyword cSubgraphKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+ private final Assignment cSubgraphAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+ private final RuleCall cSubgraphStateGraphParserRuleCall_5_1_0 = (RuleCall)cSubgraphAssignment_5_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+
+ //// entry and exit code have multiplicity many: in BaseState to be able to add derived class codes here,
+ //// in RefinedState to still have both features in the common base class State
+ //BaseState:
+ // "State" name=ID "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph" subgraph=StateGraph)?
+ // "}";
+ public ParserRule getRule() { return rule; }
+
+ //"State" name=ID "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph" subgraph=StateGraph)? "}"
+ public Group getGroup() { return cGroup; }
+
+ //"State"
+ public Keyword getStateKeyword_0() { return cStateKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+ //("entry" entryCode=DetailCode)?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //"entry"
+ public Keyword getEntryKeyword_3_0() { return cEntryKeyword_3_0; }
+
+ //entryCode=DetailCode
+ public Assignment getEntryCodeAssignment_3_1() { return cEntryCodeAssignment_3_1; }
+
+ //DetailCode
+ public RuleCall getEntryCodeDetailCodeParserRuleCall_3_1_0() { return cEntryCodeDetailCodeParserRuleCall_3_1_0; }
+
+ //("exit" exitCode=DetailCode)?
+ public Group getGroup_4() { return cGroup_4; }
+
+ //"exit"
+ public Keyword getExitKeyword_4_0() { return cExitKeyword_4_0; }
+
+ //exitCode=DetailCode
+ public Assignment getExitCodeAssignment_4_1() { return cExitCodeAssignment_4_1; }
+
+ //DetailCode
+ public RuleCall getExitCodeDetailCodeParserRuleCall_4_1_0() { return cExitCodeDetailCodeParserRuleCall_4_1_0; }
+
+ //("subgraph" subgraph=StateGraph)?
+ public Group getGroup_5() { return cGroup_5; }
+
+ //"subgraph"
+ public Keyword getSubgraphKeyword_5_0() { return cSubgraphKeyword_5_0; }
+
+ //subgraph=StateGraph
+ public Assignment getSubgraphAssignment_5_1() { return cSubgraphAssignment_5_1; }
+
+ //StateGraph
+ public RuleCall getSubgraphStateGraphParserRuleCall_5_1_0() { return cSubgraphStateGraphParserRuleCall_5_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+ }
+
+ public class RefinedStateElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RefinedState");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cRefinedStateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cBaseAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cBaseBaseStateCrossReference_1_0 = (CrossReference)cBaseAssignment_1.eContents().get(0);
+ private final RuleCall cBaseBaseStateFQNParserRuleCall_1_0_1 = (RuleCall)cBaseBaseStateCrossReference_1_0.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+ private final Keyword cEntryKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+ private final Assignment cEntryCodeAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+ private final RuleCall cEntryCodeDetailCodeParserRuleCall_3_1_0 = (RuleCall)cEntryCodeAssignment_3_1.eContents().get(0);
+ private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+ private final Keyword cExitKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+ private final Assignment cExitCodeAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+ private final RuleCall cExitCodeDetailCodeParserRuleCall_4_1_0 = (RuleCall)cExitCodeAssignment_4_1.eContents().get(0);
+ private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+ private final Keyword cSubgraphKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+ private final Assignment cSubgraphAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+ private final RuleCall cSubgraphStateGraphParserRuleCall_5_1_0 = (RuleCall)cSubgraphAssignment_5_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+
+ //RefinedState:
+ // "RefinedState" base=[BaseState|FQN] "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph"
+ // subgraph=StateGraph)? "}";
+ public ParserRule getRule() { return rule; }
+
+ //"RefinedState" base=[BaseState|FQN] "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph"
+ //subgraph=StateGraph)? "}"
+ public Group getGroup() { return cGroup; }
+
+ //"RefinedState"
+ public Keyword getRefinedStateKeyword_0() { return cRefinedStateKeyword_0; }
+
+ //base=[BaseState|FQN]
+ public Assignment getBaseAssignment_1() { return cBaseAssignment_1; }
+
+ //[BaseState|FQN]
+ public CrossReference getBaseBaseStateCrossReference_1_0() { return cBaseBaseStateCrossReference_1_0; }
+
+ //FQN
+ public RuleCall getBaseBaseStateFQNParserRuleCall_1_0_1() { return cBaseBaseStateFQNParserRuleCall_1_0_1; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+ //("entry" entryCode=DetailCode)?
+ public Group getGroup_3() { return cGroup_3; }
+
+ //"entry"
+ public Keyword getEntryKeyword_3_0() { return cEntryKeyword_3_0; }
+
+ //entryCode=DetailCode
+ public Assignment getEntryCodeAssignment_3_1() { return cEntryCodeAssignment_3_1; }
+
+ //DetailCode
+ public RuleCall getEntryCodeDetailCodeParserRuleCall_3_1_0() { return cEntryCodeDetailCodeParserRuleCall_3_1_0; }
+
+ //("exit" exitCode=DetailCode)?
+ public Group getGroup_4() { return cGroup_4; }
+
+ //"exit"
+ public Keyword getExitKeyword_4_0() { return cExitKeyword_4_0; }
+
+ //exitCode=DetailCode
+ public Assignment getExitCodeAssignment_4_1() { return cExitCodeAssignment_4_1; }
+
+ //DetailCode
+ public RuleCall getExitCodeDetailCodeParserRuleCall_4_1_0() { return cExitCodeDetailCodeParserRuleCall_4_1_0; }
+
+ //("subgraph" subgraph=StateGraph)?
+ public Group getGroup_5() { return cGroup_5; }
+
+ //"subgraph"
+ public Keyword getSubgraphKeyword_5_0() { return cSubgraphKeyword_5_0; }
+
+ //subgraph=StateGraph
+ public Assignment getSubgraphAssignment_5_1() { return cSubgraphAssignment_5_1; }
+
+ //StateGraph
+ public RuleCall getSubgraphStateGraphParserRuleCall_5_1_0() { return cSubgraphStateGraphParserRuleCall_5_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+ }
+
+ public class DetailCodeElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DetailCode");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cCommandsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cCommandsSTRINGTerminalRuleCall_1_0 = (RuleCall)cCommandsAssignment_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+
+ //// TODOHRR: provide a means to call super class code (cf. ROOM p. 310f)
+ //// super() keyword or flag like in Trice
+ //DetailCode:
+ // "{" commands+=STRING+ "}";
+ public ParserRule getRule() { return rule; }
+
+ //"{" commands+=STRING+ "}"
+ public Group getGroup() { return cGroup; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+ //commands+=STRING+
+ public Assignment getCommandsAssignment_1() { return cCommandsAssignment_1; }
+
+ //STRING
+ public RuleCall getCommandsSTRINGTerminalRuleCall_1_0() { return cCommandsSTRINGTerminalRuleCall_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_2() { return cRightCurlyBracketKeyword_2; }
+ }
+
+ public class TrPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TrPoint");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cTransitionPointParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cEntryPointParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cExitPointParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ //TrPoint:
+ // TransitionPoint | EntryPoint | ExitPoint;
+ public ParserRule getRule() { return rule; }
+
+ //TransitionPoint | EntryPoint | ExitPoint
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //TransitionPoint
+ public RuleCall getTransitionPointParserRuleCall_0() { return cTransitionPointParserRuleCall_0; }
+
+ //EntryPoint
+ public RuleCall getEntryPointParserRuleCall_1() { return cEntryPointParserRuleCall_1; }
+
+ //ExitPoint
+ public RuleCall getExitPointParserRuleCall_2() { return cExitPointParserRuleCall_2; }
+ }
+
+ public class TransitionPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TransitionPoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cHandlerAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final Keyword cHandlerHandlerKeyword_0_0 = (Keyword)cHandlerAssignment_0.eContents().get(0);
+ private final Keyword cTransitionPointKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+
+ //TransitionPoint:
+ // handler?="handler"? "TransitionPoint" name=ID;
+ public ParserRule getRule() { return rule; }
+
+ //handler?="handler"? "TransitionPoint" name=ID
+ public Group getGroup() { return cGroup; }
+
+ //handler?="handler"?
+ public Assignment getHandlerAssignment_0() { return cHandlerAssignment_0; }
+
+ //"handler"
+ public Keyword getHandlerHandlerKeyword_0_0() { return cHandlerHandlerKeyword_0_0; }
+
+ //"TransitionPoint"
+ public Keyword getTransitionPointKeyword_1() { return cTransitionPointKeyword_1; }
+
+ //name=ID
+ public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+ }
+
+ public class EntryPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EntryPoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cEntryPointKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+
+ //EntryPoint:
+ // "EntryPoint" name=ID;
+ public ParserRule getRule() { return rule; }
+
+ //"EntryPoint" name=ID
+ public Group getGroup() { return cGroup; }
+
+ //"EntryPoint"
+ public Keyword getEntryPointKeyword_0() { return cEntryPointKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+ }
+
+ public class ExitPointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExitPoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cExitPointKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+
+ //ExitPoint:
+ // "ExitPoint" name=ID;
+ public ParserRule getRule() { return rule; }
+
+ //"ExitPoint" name=ID
+ public Group getGroup() { return cGroup; }
+
+ //"ExitPoint"
+ public Keyword getExitPointKeyword_0() { return cExitPointKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+ }
+
+ public class ChoicePointElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChoicePoint");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cChoicePointKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+
+ //ChoicePoint:
+ // "ChoicePoint" name=ID;
+ public ParserRule getRule() { return rule; }
+
+ //"ChoicePoint" name=ID
+ public Group getGroup() { return cGroup; }
+
+ //"ChoicePoint"
+ public Keyword getChoicePointKeyword_0() { return cChoicePointKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+ }
+
+ public class TransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Transition");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cInitialTransitionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cNonInitialTransitionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+
+ //Transition:
+ // InitialTransition | NonInitialTransition;
+ public ParserRule getRule() { return rule; }
+
+ //InitialTransition | NonInitialTransition
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //InitialTransition
+ public RuleCall getInitialTransitionParserRuleCall_0() { return cInitialTransitionParserRuleCall_0; }
+
+ //NonInitialTransition
+ public RuleCall getNonInitialTransitionParserRuleCall_1() { return cNonInitialTransitionParserRuleCall_1; }
+ }
+
+ public class NonInitialTransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NonInitialTransition");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cTriggeredTransitionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cContinuationTransitionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cCPBranchTransitionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ //NonInitialTransition:
+ // TriggeredTransition | ContinuationTransition | CPBranchTransition;
+ public ParserRule getRule() { return rule; }
+
+ //TriggeredTransition | ContinuationTransition | CPBranchTransition
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //TriggeredTransition
+ public RuleCall getTriggeredTransitionParserRuleCall_0() { return cTriggeredTransitionParserRuleCall_0; }
+
+ //ContinuationTransition
+ public RuleCall getContinuationTransitionParserRuleCall_1() { return cContinuationTransitionParserRuleCall_1; }
+
+ //CPBranchTransition
+ public RuleCall getCPBranchTransitionParserRuleCall_2() { return cCPBranchTransitionParserRuleCall_2; }
+ }
+
+ public class InitialTransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InitialTransition");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cTransitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Keyword cInitialKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Keyword cHyphenMinusGreaterThanSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Assignment cToAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final RuleCall cToTransitionTerminalParserRuleCall_5_0 = (RuleCall)cToAssignment_5.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+ private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+ private final Keyword cActionKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+ private final Assignment cActionAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
+ private final RuleCall cActionDetailCodeParserRuleCall_7_1_0 = (RuleCall)cActionAssignment_7_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+
+ //InitialTransition:
+ // "Transition" name=ID? ":" "initial" "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}";
+ public ParserRule getRule() { return rule; }
+
+ //"Transition" name=ID? ":" "initial" "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}"
+ public Group getGroup() { return cGroup; }
+
+ //"Transition"
+ public Keyword getTransitionKeyword_0() { return cTransitionKeyword_0; }
+
+ //name=ID?
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //"initial"
+ public Keyword getInitialKeyword_3() { return cInitialKeyword_3; }
+
+ //"->"
+ public Keyword getHyphenMinusGreaterThanSignKeyword_4() { return cHyphenMinusGreaterThanSignKeyword_4; }
+
+ //to=TransitionTerminal
+ public Assignment getToAssignment_5() { return cToAssignment_5; }
+
+ //TransitionTerminal
+ public RuleCall getToTransitionTerminalParserRuleCall_5_0() { return cToTransitionTerminalParserRuleCall_5_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+
+ //("action" action=DetailCode)?
+ public Group getGroup_7() { return cGroup_7; }
+
+ //"action"
+ public Keyword getActionKeyword_7_0() { return cActionKeyword_7_0; }
+
+ //action=DetailCode
+ public Assignment getActionAssignment_7_1() { return cActionAssignment_7_1; }
+
+ //DetailCode
+ public RuleCall getActionDetailCodeParserRuleCall_7_1_0() { return cActionDetailCodeParserRuleCall_7_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+ }
+
+ public class ContinuationTransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ContinuationTransition");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cTransitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cFromAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cFromTransitionTerminalParserRuleCall_3_0 = (RuleCall)cFromAssignment_3.eContents().get(0);
+ private final Keyword cHyphenMinusGreaterThanSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Assignment cToAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final RuleCall cToTransitionTerminalParserRuleCall_5_0 = (RuleCall)cToAssignment_5.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+ private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+ private final Keyword cActionKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+ private final Assignment cActionAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
+ private final RuleCall cActionDetailCodeParserRuleCall_7_1_0 = (RuleCall)cActionAssignment_7_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+
+ //ContinuationTransition:
+ // "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}";
+ public ParserRule getRule() { return rule; }
+
+ //"Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}"
+ public Group getGroup() { return cGroup; }
+
+ //"Transition"
+ public Keyword getTransitionKeyword_0() { return cTransitionKeyword_0; }
+
+ //name=ID?
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //from=TransitionTerminal
+ public Assignment getFromAssignment_3() { return cFromAssignment_3; }
+
+ //TransitionTerminal
+ public RuleCall getFromTransitionTerminalParserRuleCall_3_0() { return cFromTransitionTerminalParserRuleCall_3_0; }
+
+ //"->"
+ public Keyword getHyphenMinusGreaterThanSignKeyword_4() { return cHyphenMinusGreaterThanSignKeyword_4; }
+
+ //to=TransitionTerminal
+ public Assignment getToAssignment_5() { return cToAssignment_5; }
+
+ //TransitionTerminal
+ public RuleCall getToTransitionTerminalParserRuleCall_5_0() { return cToTransitionTerminalParserRuleCall_5_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+
+ //("action" action=DetailCode)?
+ public Group getGroup_7() { return cGroup_7; }
+
+ //"action"
+ public Keyword getActionKeyword_7_0() { return cActionKeyword_7_0; }
+
+ //action=DetailCode
+ public Assignment getActionAssignment_7_1() { return cActionAssignment_7_1; }
+
+ //DetailCode
+ public RuleCall getActionDetailCodeParserRuleCall_7_1_0() { return cActionDetailCodeParserRuleCall_7_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+ }
+
+ public class TriggeredTransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TriggeredTransition");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cTransitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cFromAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cFromTransitionTerminalParserRuleCall_3_0 = (RuleCall)cFromAssignment_3.eContents().get(0);
+ private final Keyword cHyphenMinusGreaterThanSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Assignment cToAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final RuleCall cToTransitionTerminalParserRuleCall_5_0 = (RuleCall)cToAssignment_5.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+ private final Keyword cTriggersKeyword_7 = (Keyword)cGroup.eContents().get(7);
+ private final Keyword cLeftCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+ private final Assignment cTriggersAssignment_9 = (Assignment)cGroup.eContents().get(9);
+ private final RuleCall cTriggersTriggerParserRuleCall_9_0 = (RuleCall)cTriggersAssignment_9.eContents().get(0);
+ private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
+ private final Keyword cOrKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
+ private final Assignment cTriggersAssignment_10_1 = (Assignment)cGroup_10.eContents().get(1);
+ private final RuleCall cTriggersTriggerParserRuleCall_10_1_0 = (RuleCall)cTriggersAssignment_10_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
+ private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
+ private final Keyword cActionKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
+ private final Assignment cActionAssignment_12_1 = (Assignment)cGroup_12.eContents().get(1);
+ private final RuleCall cActionDetailCodeParserRuleCall_12_1_0 = (RuleCall)cActionAssignment_12_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_13 = (Keyword)cGroup.eContents().get(13);
+
+ //TriggeredTransition:
+ // "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "triggers" "{" triggers+=Trigger
+ // ("or" triggers+=Trigger)* "}" ("action" action=DetailCode)? "}";
+ public ParserRule getRule() { return rule; }
+
+ //"Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "triggers" "{" triggers+=Trigger ("or"
+ //triggers+=Trigger)* "}" ("action" action=DetailCode)? "}"
+ public Group getGroup() { return cGroup; }
+
+ //"Transition"
+ public Keyword getTransitionKeyword_0() { return cTransitionKeyword_0; }
+
+ //name=ID?
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //from=TransitionTerminal
+ public Assignment getFromAssignment_3() { return cFromAssignment_3; }
+
+ //TransitionTerminal
+ public RuleCall getFromTransitionTerminalParserRuleCall_3_0() { return cFromTransitionTerminalParserRuleCall_3_0; }
+
+ //"->"
+ public Keyword getHyphenMinusGreaterThanSignKeyword_4() { return cHyphenMinusGreaterThanSignKeyword_4; }
+
+ //to=TransitionTerminal
+ public Assignment getToAssignment_5() { return cToAssignment_5; }
+
+ //TransitionTerminal
+ public RuleCall getToTransitionTerminalParserRuleCall_5_0() { return cToTransitionTerminalParserRuleCall_5_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+
+ //"triggers"
+ public Keyword getTriggersKeyword_7() { return cTriggersKeyword_7; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_8() { return cLeftCurlyBracketKeyword_8; }
+
+ //triggers+=Trigger
+ public Assignment getTriggersAssignment_9() { return cTriggersAssignment_9; }
+
+ //Trigger
+ public RuleCall getTriggersTriggerParserRuleCall_9_0() { return cTriggersTriggerParserRuleCall_9_0; }
+
+ //("or" triggers+=Trigger)*
+ public Group getGroup_10() { return cGroup_10; }
+
+ //"or"
+ public Keyword getOrKeyword_10_0() { return cOrKeyword_10_0; }
+
+ //triggers+=Trigger
+ public Assignment getTriggersAssignment_10_1() { return cTriggersAssignment_10_1; }
+
+ //Trigger
+ public RuleCall getTriggersTriggerParserRuleCall_10_1_0() { return cTriggersTriggerParserRuleCall_10_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_11() { return cRightCurlyBracketKeyword_11; }
+
+ //("action" action=DetailCode)?
+ public Group getGroup_12() { return cGroup_12; }
+
+ //"action"
+ public Keyword getActionKeyword_12_0() { return cActionKeyword_12_0; }
+
+ //action=DetailCode
+ public Assignment getActionAssignment_12_1() { return cActionAssignment_12_1; }
+
+ //DetailCode
+ public RuleCall getActionDetailCodeParserRuleCall_12_1_0() { return cActionDetailCodeParserRuleCall_12_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_13() { return cRightCurlyBracketKeyword_13; }
+ }
+
+ public class CPBranchTransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CPBranchTransition");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cTransitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cFromAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cFromTransitionTerminalParserRuleCall_3_0 = (RuleCall)cFromAssignment_3.eContents().get(0);
+ private final Keyword cHyphenMinusGreaterThanSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Assignment cToAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final RuleCall cToTransitionTerminalParserRuleCall_5_0 = (RuleCall)cToAssignment_5.eContents().get(0);
+ private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+ private final Keyword cCondKeyword_7 = (Keyword)cGroup.eContents().get(7);
+ private final Assignment cConditionAssignment_8 = (Assignment)cGroup.eContents().get(8);
+ private final RuleCall cConditionDetailCodeParserRuleCall_8_0 = (RuleCall)cConditionAssignment_8.eContents().get(0);
+ private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
+ private final Keyword cActionKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
+ private final Assignment cActionAssignment_9_1 = (Assignment)cGroup_9.eContents().get(1);
+ private final RuleCall cActionDetailCodeParserRuleCall_9_1_0 = (RuleCall)cActionAssignment_9_1.eContents().get(0);
+ private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
+
+ //CPBranchTransition:
+ // "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "cond" condition=DetailCode ("action"
+ // action=DetailCode)? "}";
+ public ParserRule getRule() { return rule; }
+
+ //"Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "cond" condition=DetailCode ("action"
+ //action=DetailCode)? "}"
+ public Group getGroup() { return cGroup; }
+
+ //"Transition"
+ public Keyword getTransitionKeyword_0() { return cTransitionKeyword_0; }
+
+ //name=ID?
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //":"
+ public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+
+ //from=TransitionTerminal
+ public Assignment getFromAssignment_3() { return cFromAssignment_3; }
+
+ //TransitionTerminal
+ public RuleCall getFromTransitionTerminalParserRuleCall_3_0() { return cFromTransitionTerminalParserRuleCall_3_0; }
+
+ //"->"
+ public Keyword getHyphenMinusGreaterThanSignKeyword_4() { return cHyphenMinusGreaterThanSignKeyword_4; }
+
+ //to=TransitionTerminal
+ public Assignment getToAssignment_5() { return cToAssignment_5; }
+
+ //TransitionTerminal
+ public RuleCall getToTransitionTerminalParserRuleCall_5_0() { return cToTransitionTerminalParserRuleCall_5_0; }
+
+ //"{"
+ public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+
+ //"cond"
+ public Keyword getCondKeyword_7() { return cCondKeyword_7; }
+
+ //condition=DetailCode
+ public Assignment getConditionAssignment_8() { return cConditionAssignment_8; }
+
+ //DetailCode
+ public RuleCall getConditionDetailCodeParserRuleCall_8_0() { return cConditionDetailCodeParserRuleCall_8_0; }
+
+ //("action" action=DetailCode)?
+ public Group getGroup_9() { return cGroup_9; }
+
+ //"action"
+ public Keyword getActionKeyword_9_0() { return cActionKeyword_9_0; }
+
+ //action=DetailCode
+ public Assignment getActionAssignment_9_1() { return cActionAssignment_9_1; }
+
+ //DetailCode
+ public RuleCall getActionDetailCodeParserRuleCall_9_1_0() { return cActionDetailCodeParserRuleCall_9_1_0; }
+
+ //"}"
+ public Keyword getRightCurlyBracketKeyword_10() { return cRightCurlyBracketKeyword_10; }
+ }
+
+ public class TransitionTerminalElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TransitionTerminal");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final RuleCall cStateTerminalParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+ private final RuleCall cTrPointTerminalParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+ private final RuleCall cSubStateTrPointTerminalParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+ private final RuleCall cChoicepointTerminalParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+
+ //TransitionTerminal:
+ // StateTerminal | TrPointTerminal | SubStateTrPointTerminal | ChoicepointTerminal;
+ public ParserRule getRule() { return rule; }
+
+ //StateTerminal | TrPointTerminal | SubStateTrPointTerminal | ChoicepointTerminal
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //StateTerminal
+ public RuleCall getStateTerminalParserRuleCall_0() { return cStateTerminalParserRuleCall_0; }
+
+ //TrPointTerminal
+ public RuleCall getTrPointTerminalParserRuleCall_1() { return cTrPointTerminalParserRuleCall_1; }
+
+ //SubStateTrPointTerminal
+ public RuleCall getSubStateTrPointTerminalParserRuleCall_2() { return cSubStateTrPointTerminalParserRuleCall_2; }
+
+ //ChoicepointTerminal
+ public RuleCall getChoicepointTerminalParserRuleCall_3() { return cChoicepointTerminalParserRuleCall_3; }
+ }
+
+ public class StateTerminalElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StateTerminal");
+ private final Assignment cStateAssignment = (Assignment)rule.eContents().get(1);
+ private final CrossReference cStateBaseStateCrossReference_0 = (CrossReference)cStateAssignment.eContents().get(0);
+ private final RuleCall cStateBaseStateIDTerminalRuleCall_0_1 = (RuleCall)cStateBaseStateCrossReference_0.eContents().get(1);
+
+ //StateTerminal:
+ // state=[BaseState];
+ public ParserRule getRule() { return rule; }
+
+ //state=[BaseState]
+ public Assignment getStateAssignment() { return cStateAssignment; }
+
+ //[BaseState]
+ public CrossReference getStateBaseStateCrossReference_0() { return cStateBaseStateCrossReference_0; }
+
+ //ID
+ public RuleCall getStateBaseStateIDTerminalRuleCall_0_1() { return cStateBaseStateIDTerminalRuleCall_0_1; }
+ }
+
+ public class TrPointTerminalElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TrPointTerminal");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cMyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cTrPointAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cTrPointTrPointCrossReference_1_0 = (CrossReference)cTrPointAssignment_1.eContents().get(0);
+ private final RuleCall cTrPointTrPointIDTerminalRuleCall_1_0_1 = (RuleCall)cTrPointTrPointCrossReference_1_0.eContents().get(1);
+
+ //TrPointTerminal:
+ // "my" trPoint=[TrPoint];
+ public ParserRule getRule() { return rule; }
+
+ //"my" trPoint=[TrPoint]
+ public Group getGroup() { return cGroup; }
+
+ //"my"
+ public Keyword getMyKeyword_0() { return cMyKeyword_0; }
+
+ //trPoint=[TrPoint]
+ public Assignment getTrPointAssignment_1() { return cTrPointAssignment_1; }
+
+ //[TrPoint]
+ public CrossReference getTrPointTrPointCrossReference_1_0() { return cTrPointTrPointCrossReference_1_0; }
+
+ //ID
+ public RuleCall getTrPointTrPointIDTerminalRuleCall_1_0_1() { return cTrPointTrPointIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class SubStateTrPointTerminalElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SubStateTrPointTerminal");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cTrPointAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cTrPointTrPointCrossReference_0_0 = (CrossReference)cTrPointAssignment_0.eContents().get(0);
+ private final RuleCall cTrPointTrPointIDTerminalRuleCall_0_0_1 = (RuleCall)cTrPointTrPointCrossReference_0_0.eContents().get(1);
+ private final Keyword cOfKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cStateAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final CrossReference cStateBaseStateCrossReference_2_0 = (CrossReference)cStateAssignment_2.eContents().get(0);
+ private final RuleCall cStateBaseStateIDTerminalRuleCall_2_0_1 = (RuleCall)cStateBaseStateCrossReference_2_0.eContents().get(1);
+
+ //SubStateTrPointTerminal:
+ // trPoint=[TrPoint] "of" state=[BaseState];
+ public ParserRule getRule() { return rule; }
+
+ //trPoint=[TrPoint] "of" state=[BaseState]
+ public Group getGroup() { return cGroup; }
+
+ //trPoint=[TrPoint]
+ public Assignment getTrPointAssignment_0() { return cTrPointAssignment_0; }
+
+ //[TrPoint]
+ public CrossReference getTrPointTrPointCrossReference_0_0() { return cTrPointTrPointCrossReference_0_0; }
+
+ //ID
+ public RuleCall getTrPointTrPointIDTerminalRuleCall_0_0_1() { return cTrPointTrPointIDTerminalRuleCall_0_0_1; }
+
+ //"of"
+ public Keyword getOfKeyword_1() { return cOfKeyword_1; }
+
+ //state=[BaseState]
+ public Assignment getStateAssignment_2() { return cStateAssignment_2; }
+
+ //[BaseState]
+ public CrossReference getStateBaseStateCrossReference_2_0() { return cStateBaseStateCrossReference_2_0; }
+
+ //ID
+ public RuleCall getStateBaseStateIDTerminalRuleCall_2_0_1() { return cStateBaseStateIDTerminalRuleCall_2_0_1; }
+ }
+
+ public class ChoicepointTerminalElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChoicepointTerminal");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cCpKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cCpAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cCpChoicePointCrossReference_1_0 = (CrossReference)cCpAssignment_1.eContents().get(0);
+ private final RuleCall cCpChoicePointIDTerminalRuleCall_1_0_1 = (RuleCall)cCpChoicePointCrossReference_1_0.eContents().get(1);
+
+ //ChoicepointTerminal:
+ // "cp" cp=[ChoicePoint];
+ public ParserRule getRule() { return rule; }
+
+ //"cp" cp=[ChoicePoint]
+ public Group getGroup() { return cGroup; }
+
+ //"cp"
+ public Keyword getCpKeyword_0() { return cCpKeyword_0; }
+
+ //cp=[ChoicePoint]
+ public Assignment getCpAssignment_1() { return cCpAssignment_1; }
+
+ //[ChoicePoint]
+ public CrossReference getCpChoicePointCrossReference_1_0() { return cCpChoicePointCrossReference_1_0; }
+
+ //ID
+ public RuleCall getCpChoicePointIDTerminalRuleCall_1_0_1() { return cCpChoicePointIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class TriggerElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Trigger");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cLessThanSignKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cMsgFromIfPairsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cMsgFromIfPairsMessageFromIfParserRuleCall_1_0 = (RuleCall)cMsgFromIfPairsAssignment_1.eContents().get(0);
+ private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+ private final Keyword cVerticalLineKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+ private final Assignment cMsgFromIfPairsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final RuleCall cMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0 = (RuleCall)cMsgFromIfPairsAssignment_2_1.eContents().get(0);
+ private final Assignment cGuardAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cGuardGuardParserRuleCall_3_0 = (RuleCall)cGuardAssignment_3.eContents().get(0);
+ private final Keyword cGreaterThanSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
+
+ ////TransitionSource: TransitionTerminal|ChoicePointCaseRef|ChoicePointDefaultRef;
+ ////TransitionSource: TransitionTerminal|ChoicePointRef;
+ ////TransitionDest: TransitionTerminal|ChoicePointRef;
+ ////ChoicePointCaseRef: 'cp' cp=[ChoicePoint|ID] 'case' case=[ChoicePointCase|ID];
+ ////ChoicePointDefaultRef: 'cp' cp=[ChoicePoint|ID] 'default';
+ ////ChoicePointRef: 'cp' cp=[ChoicePoint|ID];
+ //Trigger:
+ // "<" msgFromIfPairs+=MessageFromIf ("|" msgFromIfPairs+=MessageFromIf)* guard=Guard? ">";
+ public ParserRule getRule() { return rule; }
+
+ //"<" msgFromIfPairs+=MessageFromIf ("|" msgFromIfPairs+=MessageFromIf)* guard=Guard? ">"
+ public Group getGroup() { return cGroup; }
+
+ //"<"
+ public Keyword getLessThanSignKeyword_0() { return cLessThanSignKeyword_0; }
+
+ //msgFromIfPairs+=MessageFromIf
+ public Assignment getMsgFromIfPairsAssignment_1() { return cMsgFromIfPairsAssignment_1; }
+
+ //MessageFromIf
+ public RuleCall getMsgFromIfPairsMessageFromIfParserRuleCall_1_0() { return cMsgFromIfPairsMessageFromIfParserRuleCall_1_0; }
+
+ //("|" msgFromIfPairs+=MessageFromIf)*
+ public Group getGroup_2() { return cGroup_2; }
+
+ //"|"
+ public Keyword getVerticalLineKeyword_2_0() { return cVerticalLineKeyword_2_0; }
+
+ //msgFromIfPairs+=MessageFromIf
+ public Assignment getMsgFromIfPairsAssignment_2_1() { return cMsgFromIfPairsAssignment_2_1; }
+
+ //MessageFromIf
+ public RuleCall getMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0() { return cMsgFromIfPairsMessageFromIfParserRuleCall_2_1_0; }
+
+ //guard=Guard?
+ public Assignment getGuardAssignment_3() { return cGuardAssignment_3; }
+
+ //Guard
+ public RuleCall getGuardGuardParserRuleCall_3_0() { return cGuardGuardParserRuleCall_3_0; }
+
+ //">"
+ public Keyword getGreaterThanSignKeyword_4() { return cGreaterThanSignKeyword_4; }
+ }
+
+ public class MessageFromIfElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "MessageFromIf");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cMessageAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cMessageMessageCrossReference_0_0 = (CrossReference)cMessageAssignment_0.eContents().get(0);
+ private final RuleCall cMessageMessageIDTerminalRuleCall_0_0_1 = (RuleCall)cMessageMessageCrossReference_0_0.eContents().get(1);
+ private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cFromAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final CrossReference cFromInterfaceItemCrossReference_2_0 = (CrossReference)cFromAssignment_2.eContents().get(0);
+ private final RuleCall cFromInterfaceItemIDTerminalRuleCall_2_0_1 = (RuleCall)cFromInterfaceItemCrossReference_2_0.eContents().get(1);
+
+ //MessageFromIf:
+ // message=[Message] ":" from=[InterfaceItem];
+ public ParserRule getRule() { return rule; }
+
+ //message=[Message] ":" from=[InterfaceItem]
+ public Group getGroup() { return cGroup; }
+
+ //message=[Message]
+ public Assignment getMessageAssignment_0() { return cMessageAssignment_0; }
+
+ //[Message]
+ public CrossReference getMessageMessageCrossReference_0_0() { return cMessageMessageCrossReference_0_0; }
+
+ //ID
+ public RuleCall getMessageMessageIDTerminalRuleCall_0_0_1() { return cMessageMessageIDTerminalRuleCall_0_0_1; }
+
+ //":"
+ public Keyword getColonKeyword_1() { return cColonKeyword_1; }
+
+ //from=[InterfaceItem]
+ public Assignment getFromAssignment_2() { return cFromAssignment_2; }
+
+ //[InterfaceItem]
+ public CrossReference getFromInterfaceItemCrossReference_2_0() { return cFromInterfaceItemCrossReference_2_0; }
+
+ //ID
+ public RuleCall getFromInterfaceItemIDTerminalRuleCall_2_0_1() { return cFromInterfaceItemIDTerminalRuleCall_2_0_1; }
+ }
+
+ public class GuardElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Guard");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cGuardKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cGuardAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cGuardDetailCodeParserRuleCall_1_0 = (RuleCall)cGuardAssignment_1.eContents().get(0);
+
+ //Guard:
+ // "guard" guard=DetailCode;
+ public ParserRule getRule() { return rule; }
+
+ //"guard" guard=DetailCode
+ public Group getGroup() { return cGroup; }
+
+ //"guard"
+ public Keyword getGuardKeyword_0() { return cGuardKeyword_0; }
+
+ //guard=DetailCode
+ public Assignment getGuardAssignment_1() { return cGuardAssignment_1; }
+
+ //DetailCode
+ public RuleCall getGuardDetailCodeParserRuleCall_1_0() { return cGuardDetailCodeParserRuleCall_1_0; }
+ }
+
+ public class ImportElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Import");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cImportKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cImportedNamespaceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cImportedNamespaceImportedFQNParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
+
+ //// **************************************************************
+ //// general
+ //Import:
+ // "import" importedNamespace=ImportedFQN;
+ public ParserRule getRule() { return rule; }
+
+ //"import" importedNamespace=ImportedFQN
+ public Group getGroup() { return cGroup; }
+
+ //"import"
+ public Keyword getImportKeyword_0() { return cImportKeyword_0; }
+
+ //importedNamespace=ImportedFQN
+ public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
+
+ //ImportedFQN
+ public RuleCall getImportedNamespaceImportedFQNParserRuleCall_1_0() { return cImportedNamespaceImportedFQNParserRuleCall_1_0; }
+ }
+
+ public class ImportedFQNElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ImportedFQN");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final RuleCall cFQNParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Keyword cAsteriskKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+
+ //ImportedFQN returns ecore::EString:
+ // FQN ("." "*")?;
+ public ParserRule getRule() { return rule; }
+
+ //FQN ("." "*")?
+ public Group getGroup() { return cGroup; }
+
+ //FQN
+ public RuleCall getFQNParserRuleCall_0() { return cFQNParserRuleCall_0; }
+
+ //("." "*")?
+ public Group getGroup_1() { return cGroup_1; }
+
+ //"."
+ public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+ //"*"
+ public Keyword getAsteriskKeyword_1_1() { return cAsteriskKeyword_1_1; }
+ }
+
+ public class FQNElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FQN");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+
+ //FQN returns ecore::EString:
+ // ID ("." ID)*;
+ public ParserRule getRule() { return rule; }
+
+ //ID ("." ID)*
+ public Group getGroup() { return cGroup; }
+
+ //ID
+ public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
+
+ //("." ID)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //"."
+ public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+ //ID
+ public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
+ }
+
+
+ public class PrimitiveTypeElements extends AbstractEnumRuleElementFinder {
+ private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "PrimitiveType");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final EnumLiteralDeclaration cVoidEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+ private final Keyword cVoidVoidKeyword_0_0 = (Keyword)cVoidEnumLiteralDeclaration_0.eContents().get(0);
+ private final EnumLiteralDeclaration cInt8EnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+ private final Keyword cInt8Int8Keyword_1_0 = (Keyword)cInt8EnumLiteralDeclaration_1.eContents().get(0);
+ private final EnumLiteralDeclaration cInt16EnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+ private final Keyword cInt16Int16Keyword_2_0 = (Keyword)cInt16EnumLiteralDeclaration_2.eContents().get(0);
+ private final EnumLiteralDeclaration cInt32EnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+ private final Keyword cInt32Int32Keyword_3_0 = (Keyword)cInt32EnumLiteralDeclaration_3.eContents().get(0);
+ private final EnumLiteralDeclaration cUint8EnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+ private final Keyword cUint8Uint8Keyword_4_0 = (Keyword)cUint8EnumLiteralDeclaration_4.eContents().get(0);
+ private final EnumLiteralDeclaration cUint16EnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+ private final Keyword cUint16Uint16Keyword_5_0 = (Keyword)cUint16EnumLiteralDeclaration_5.eContents().get(0);
+ private final EnumLiteralDeclaration cUint32EnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+ private final Keyword cUint32Uint32Keyword_6_0 = (Keyword)cUint32EnumLiteralDeclaration_6.eContents().get(0);
+ private final EnumLiteralDeclaration cFloat32EnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+ private final Keyword cFloat32Float32Keyword_7_0 = (Keyword)cFloat32EnumLiteralDeclaration_7.eContents().get(0);
+ private final EnumLiteralDeclaration cFloat64EnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+ private final Keyword cFloat64Float64Keyword_8_0 = (Keyword)cFloat64EnumLiteralDeclaration_8.eContents().get(0);
+ private final EnumLiteralDeclaration cBooleanEnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
+ private final Keyword cBooleanBooleanKeyword_9_0 = (Keyword)cBooleanEnumLiteralDeclaration_9.eContents().get(0);
+ private final EnumLiteralDeclaration cStringEnumLiteralDeclaration_10 = (EnumLiteralDeclaration)cAlternatives.eContents().get(10);
+ private final Keyword cStringStringKeyword_10_0 = (Keyword)cStringEnumLiteralDeclaration_10.eContents().get(0);
+ private final EnumLiteralDeclaration cCharEnumLiteralDeclaration_11 = (EnumLiteralDeclaration)cAlternatives.eContents().get(11);
+ private final Keyword cCharCharKeyword_11_0 = (Keyword)cCharEnumLiteralDeclaration_11.eContents().get(0);
+
+ //// **************************************************************
+ //// data class
+ //// cf. decision DSL2: fixed size data types
+ //// convert appropriately for Java and issue an error if size not available
+ //enum PrimitiveType:
+ // void | int8 | int16 | int32 | uint8 | uint16 | uint32 | float32 | float64 | boolean | string | char;
+ public EnumRule getRule() { return rule; }
+
+ //void | int8 | int16 | int32 | uint8 | uint16 | uint32 | float32 | float64 | boolean | string | char
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //void
+ public EnumLiteralDeclaration getVoidEnumLiteralDeclaration_0() { return cVoidEnumLiteralDeclaration_0; }
+
+ //"void"
+ public Keyword getVoidVoidKeyword_0_0() { return cVoidVoidKeyword_0_0; }
+
+ //int8
+ public EnumLiteralDeclaration getInt8EnumLiteralDeclaration_1() { return cInt8EnumLiteralDeclaration_1; }
+
+ //"int8"
+ public Keyword getInt8Int8Keyword_1_0() { return cInt8Int8Keyword_1_0; }
+
+ //int16
+ public EnumLiteralDeclaration getInt16EnumLiteralDeclaration_2() { return cInt16EnumLiteralDeclaration_2; }
+
+ //"int16"
+ public Keyword getInt16Int16Keyword_2_0() { return cInt16Int16Keyword_2_0; }
+
+ //int32
+ public EnumLiteralDeclaration getInt32EnumLiteralDeclaration_3() { return cInt32EnumLiteralDeclaration_3; }
+
+ //"int32"
+ public Keyword getInt32Int32Keyword_3_0() { return cInt32Int32Keyword_3_0; }
+
+ //uint8
+ public EnumLiteralDeclaration getUint8EnumLiteralDeclaration_4() { return cUint8EnumLiteralDeclaration_4; }
+
+ //"uint8"
+ public Keyword getUint8Uint8Keyword_4_0() { return cUint8Uint8Keyword_4_0; }
+
+ //uint16
+ public EnumLiteralDeclaration getUint16EnumLiteralDeclaration_5() { return cUint16EnumLiteralDeclaration_5; }
+
+ //"uint16"
+ public Keyword getUint16Uint16Keyword_5_0() { return cUint16Uint16Keyword_5_0; }
+
+ //uint32
+ public EnumLiteralDeclaration getUint32EnumLiteralDeclaration_6() { return cUint32EnumLiteralDeclaration_6; }
+
+ //"uint32"
+ public Keyword getUint32Uint32Keyword_6_0() { return cUint32Uint32Keyword_6_0; }
+
+ //float32
+ public EnumLiteralDeclaration getFloat32EnumLiteralDeclaration_7() { return cFloat32EnumLiteralDeclaration_7; }
+
+ //"float32"
+ public Keyword getFloat32Float32Keyword_7_0() { return cFloat32Float32Keyword_7_0; }
+
+ //float64
+ public EnumLiteralDeclaration getFloat64EnumLiteralDeclaration_8() { return cFloat64EnumLiteralDeclaration_8; }
+
+ //"float64"
+ public Keyword getFloat64Float64Keyword_8_0() { return cFloat64Float64Keyword_8_0; }
+
+ //boolean
+ public EnumLiteralDeclaration getBooleanEnumLiteralDeclaration_9() { return cBooleanEnumLiteralDeclaration_9; }
+
+ //"boolean"
+ public Keyword getBooleanBooleanKeyword_9_0() { return cBooleanBooleanKeyword_9_0; }
+
+ //string
+ public EnumLiteralDeclaration getStringEnumLiteralDeclaration_10() { return cStringEnumLiteralDeclaration_10; }
+
+ //"string"
+ public Keyword getStringStringKeyword_10_0() { return cStringStringKeyword_10_0; }
+
+ //char
+ public EnumLiteralDeclaration getCharEnumLiteralDeclaration_11() { return cCharEnumLiteralDeclaration_11; }
+
+ //"char"
+ public Keyword getCharCharKeyword_11_0() { return cCharCharKeyword_11_0; }
+ }
+
+ private RoomModelElements pRoomModel;
+ private RoomClassElements pRoomClass;
+ private StructureClassElements pStructureClass;
+ private ActorContainerClassElements pActorContainerClass;
+ private PrimitiveTypeElements unknownRulePrimitiveType;
+ private TypedIDElements pTypedID;
+ private FreeTypedIDElements pFreeTypedID;
+ private TypeElements pType;
+ private FreeTypeElements pFreeType;
+ private DataClassElements pDataClass;
+ private AttributeElements pAttribute;
+ private OperationElements pOperation;
+ private ProtocolClassElements pProtocolClass;
+ private MessageElements pMessage;
+ private PortClassElements pPortClass;
+ private MessageHandlerElements pMessageHandler;
+ private ProtocolSemanticsElements pProtocolSemantics;
+ private SemanticsRuleElements pSemanticsRule;
+ private SemanticsInRuleElements pSemanticsInRule;
+ private SemanticsOutRuleElements pSemanticsOutRule;
+ private ActorClassElements pActorClass;
+ private InterfaceItemElements pInterfaceItem;
+ private PortElements pPort;
+ private ExternalPortElements pExternalPort;
+ private SAPRefElements pSAPRef;
+ private SPPRefElements pSPPRef;
+ private ServiceImplementationElements pServiceImplementation;
+ private LogicalSystemElements pLogicalSystem;
+ private ActorContainerRefElements pActorContainerRef;
+ private SubSystemRefElements pSubSystemRef;
+ private SubSystemClassElements pSubSystemClass;
+ private LogicalThreadElements pLogicalThread;
+ private ActorInstancePathElements pActorInstancePath;
+ private BindingElements pBinding;
+ private BindingEndPointElements pBindingEndPoint;
+ private LayerConnectionElements pLayerConnection;
+ private SAPointElements pSAPoint;
+ private RefSAPointElements pRefSAPoint;
+ private RelaySAPointElements pRelaySAPoint;
+ private SPPointElements pSPPoint;
+ private ActorRefElements pActorRef;
+ private StateGraphNodeElements pStateGraphNode;
+ private StateGraphItemElements pStateGraphItem;
+ private StateElements pState;
+ private StateGraphElements pStateGraph;
+ private StateMachineElements pStateMachine;
+ private BaseStateElements pBaseState;
+ private RefinedStateElements pRefinedState;
+ private DetailCodeElements pDetailCode;
+ private TrPointElements pTrPoint;
+ private TransitionPointElements pTransitionPoint;
+ private EntryPointElements pEntryPoint;
+ private ExitPointElements pExitPoint;
+ private ChoicePointElements pChoicePoint;
+ private TransitionElements pTransition;
+ private NonInitialTransitionElements pNonInitialTransition;
+ private InitialTransitionElements pInitialTransition;
+ private ContinuationTransitionElements pContinuationTransition;
+ private TriggeredTransitionElements pTriggeredTransition;
+ private CPBranchTransitionElements pCPBranchTransition;
+ private TransitionTerminalElements pTransitionTerminal;
+ private StateTerminalElements pStateTerminal;
+ private TrPointTerminalElements pTrPointTerminal;
+ private SubStateTrPointTerminalElements pSubStateTrPointTerminal;
+ private ChoicepointTerminalElements pChoicepointTerminal;
+ private TriggerElements pTrigger;
+ private MessageFromIfElements pMessageFromIf;
+ private GuardElements pGuard;
+ private ImportElements pImport;
+ private ImportedFQNElements pImportedFQN;
+ private FQNElements pFQN;
+
+ private final GrammarProvider grammarProvider;
+
+ private TerminalsGrammarAccess gaTerminals;
+
+ @Inject
+ public RoomGrammarAccess(GrammarProvider grammarProvider,
+ TerminalsGrammarAccess gaTerminals) {
+ this.grammarProvider = grammarProvider;
+ this.gaTerminals = gaTerminals;
+ }
+
+ public Grammar getGrammar() {
+ return grammarProvider.getGrammar(this);
+ }
+
+
+ public TerminalsGrammarAccess getTerminalsGrammarAccess() {
+ return gaTerminals;
+ }
+
+
+ //RoomModel:
+ // "RoomModel" name=FQN "{" imports+=Import* (dataClasses+=DataClass | protocolClasses+=ProtocolClass |
+ // actorClasses+=ActorClass | subSystemClasses+=SubSystemClass | systems+=LogicalSystem)+ "}";
+ public RoomModelElements getRoomModelAccess() {
+ return (pRoomModel != null) ? pRoomModel : (pRoomModel = new RoomModelElements());
+ }
+
+ public ParserRule getRoomModelRule() {
+ return getRoomModelAccess().getRule();
+ }
+
+ //RoomClass:
+ // DataClass | ProtocolClass | StructureClass;
+ public RoomClassElements getRoomClassAccess() {
+ return (pRoomClass != null) ? pRoomClass : (pRoomClass = new RoomClassElements());
+ }
+
+ public ParserRule getRoomClassRule() {
+ return getRoomClassAccess().getRule();
+ }
+
+ //StructureClass:
+ // ActorContainerClass | LogicalSystem;
+ public StructureClassElements getStructureClassAccess() {
+ return (pStructureClass != null) ? pStructureClass : (pStructureClass = new StructureClassElements());
+ }
+
+ public ParserRule getStructureClassRule() {
+ return getStructureClassAccess().getRule();
+ }
+
+ //ActorContainerClass:
+ // ActorClass | SubSystemClass;
+ public ActorContainerClassElements getActorContainerClassAccess() {
+ return (pActorContainerClass != null) ? pActorContainerClass : (pActorContainerClass = new ActorContainerClassElements());
+ }
+
+ public ParserRule getActorContainerClassRule() {
+ return getActorContainerClassAccess().getRule();
+ }
+
+ //// **************************************************************
+ //// data class
+ //// cf. decision DSL2: fixed size data types
+ //// convert appropriately for Java and issue an error if size not available
+ //enum PrimitiveType:
+ // void | int8 | int16 | int32 | uint8 | uint16 | uint32 | float32 | float64 | boolean | string | char;
+ public PrimitiveTypeElements getPrimitiveTypeAccess() {
+ return (unknownRulePrimitiveType != null) ? unknownRulePrimitiveType : (unknownRulePrimitiveType = new PrimitiveTypeElements());
+ }
+
+ public EnumRule getPrimitiveTypeRule() {
+ return getPrimitiveTypeAccess().getRule();
+ }
+
+ //TypedID:
+ // name=ID ":" type=Type;
+ public TypedIDElements getTypedIDAccess() {
+ return (pTypedID != null) ? pTypedID : (pTypedID = new TypedIDElements());
+ }
+
+ public ParserRule getTypedIDRule() {
+ return getTypedIDAccess().getRule();
+ }
+
+ //FreeTypedID:
+ // name=ID ":" type=FreeType;
+ public FreeTypedIDElements getFreeTypedIDAccess() {
+ return (pFreeTypedID != null) ? pFreeTypedID : (pFreeTypedID = new FreeTypedIDElements());
+ }
+
+ public ParserRule getFreeTypedIDRule() {
+ return getFreeTypedIDAccess().getRule();
+ }
+
+ //Type:
+ // prim=PrimitiveType | type=[DataClass|FQN];
+ public TypeElements getTypeAccess() {
+ return (pType != null) ? pType : (pType = new TypeElements());
+ }
+
+ public ParserRule getTypeRule() {
+ return getTypeAccess().getRule();
+ }
+
+ //FreeType:
+ // prim=PrimitiveType | type=ID;
+ public FreeTypeElements getFreeTypeAccess() {
+ return (pFreeType != null) ? pFreeType : (pFreeType = new FreeTypeElements());
+ }
+
+ public ParserRule getFreeTypeRule() {
+ return getFreeTypeAccess().getRule();
+ }
+
+ //// TODOHRR: define detail level language?
+ //DataClass:
+ // "DataClass" name=ID ("extends" base=[DataClass|FQN])? "{" imports+=Import* attributes+=Attribute+
+ // operations+=Operation* "}";
+ public DataClassElements getDataClassAccess() {
+ return (pDataClass != null) ? pDataClass : (pDataClass = new DataClassElements());
+ }
+
+ public ParserRule getDataClassRule() {
+ return getDataClassAccess().getRule();
+ }
+
+ //Attribute:
+ // "Attribute" name=ID ("[" size=INT "]")? ":" type=Type;
+ public AttributeElements getAttributeAccess() {
+ return (pAttribute != null) ? pAttribute : (pAttribute = new AttributeElements());
+ }
+
+ public ParserRule getAttributeRule() {
+ return getAttributeAccess().getRule();
+ }
+
+ //// TODOHRR: pass arguments and return value by value/reference
+ //Operation:
+ // "Operation" name=ID "(" (arguments+=FreeTypedID ("," arguments+=FreeTypedID)*)? ")" (":" returntype=FreeType)?
+ // detailCode=DetailCode;
+ public OperationElements getOperationAccess() {
+ return (pOperation != null) ? pOperation : (pOperation = new OperationElements());
+ }
+
+ public ParserRule getOperationRule() {
+ return getOperationAccess().getRule();
+ }
+
+ //// **************************************************************
+ //// protocol class
+ //ProtocolClass:
+ // "ProtocolClass" name=ID ("extends" base=[ProtocolClass|FQN])? "{" ("usercode1" userCode1=DetailCode)? ("usercode2"
+ // userCode2=DetailCode)? "incoming" "{" incomingMessages+=Message* "}" "outgoing" "{" outgoingMessages+=Message* "}"
+ // ("regular" "PortClass" regular=PortClass)? ("conjugate" "PortClass" conjugate=PortClass)? semantics=ProtocolSemantics?
+ // "}";
+ public ProtocolClassElements getProtocolClassAccess() {
+ return (pProtocolClass != null) ? pProtocolClass : (pProtocolClass = new ProtocolClassElements());
+ }
+
+ public ParserRule getProtocolClassRule() {
+ return getProtocolClassAccess().getRule();
+ }
+
+ //Message:
+ // "Message" name=ID "(" (arguments+=TypedID ("," arguments+=TypedID)*)? ")";
+ public MessageElements getMessageAccess() {
+ return (pMessage != null) ? pMessage : (pMessage = new MessageElements());
+ }
+
+ public ParserRule getMessageRule() {
+ return getMessageAccess().getRule();
+ }
+
+ //PortClass:
+ // "{" ("usercode" userCode=DetailCode)? (attributes+=Attribute | operations+=Operation | msgHandlers+=MessageHandler)+
+ // "}";
+ public PortClassElements getPortClassAccess() {
+ return (pPortClass != null) ? pPortClass : (pPortClass = new PortClassElements());
+ }
+
+ public ParserRule getPortClassRule() {
+ return getPortClassAccess().getRule();
+ }
+
+ //MessageHandler:
+ // "handle" msg=[Message] detailCode=DetailCode;
+ public MessageHandlerElements getMessageHandlerAccess() {
+ return (pMessageHandler != null) ? pMessageHandler : (pMessageHandler = new MessageHandlerElements());
+ }
+
+ public ParserRule getMessageHandlerRule() {
+ return getMessageHandlerAccess().getRule();
+ }
+
+ //ProtocolSemantics:
+ // "semantics" "{" rules+=SemanticsRule+ "}";
+ public ProtocolSemanticsElements getProtocolSemanticsAccess() {
+ return (pProtocolSemantics != null) ? pProtocolSemantics : (pProtocolSemantics = new ProtocolSemanticsElements());
+ }
+
+ public ParserRule getProtocolSemanticsRule() {
+ return getProtocolSemanticsAccess().getRule();
+ }
+
+ //SemanticsRule:
+ // SemanticsInRule | SemanticsOutRule;
+ public SemanticsRuleElements getSemanticsRuleAccess() {
+ return (pSemanticsRule != null) ? pSemanticsRule : (pSemanticsRule = new SemanticsRuleElements());
+ }
+
+ public ParserRule getSemanticsRuleRule() {
+ return getSemanticsRuleAccess().getRule();
+ }
+
+ //SemanticsInRule:
+ // "in" msg=[Message] "->" "{" followUps+=SemanticsRule* "}";
+ public SemanticsInRuleElements getSemanticsInRuleAccess() {
+ return (pSemanticsInRule != null) ? pSemanticsInRule : (pSemanticsInRule = new SemanticsInRuleElements());
+ }
+
+ public ParserRule getSemanticsInRuleRule() {
+ return getSemanticsInRuleAccess().getRule();
+ }
+
+ //SemanticsOutRule:
+ // "out" msg=[Message] "->" "{" followUps+=SemanticsRule* "}";
+ public SemanticsOutRuleElements getSemanticsOutRuleAccess() {
+ return (pSemanticsOutRule != null) ? pSemanticsOutRule : (pSemanticsOutRule = new SemanticsOutRuleElements());
+ }
+
+ public ParserRule getSemanticsOutRuleRule() {
+ return getSemanticsOutRuleAccess().getRule();
+ }
+
+ //// **************************************************************
+ //// actor class
+ //// some notes on ports
+ ////
+ //// in ROOM ports can be contained in the structure and/or the interface
+ //// p in s ==> internal end port
+ //// p in i ==> relay port
+ //// p in i and p in s ==> external end port
+ //// since double containment is not supported we decided to define external ports as reference to interface ports
+ //ActorClass:
+ // abstract?="abstract"? "ActorClass" name=ID ("extends" base=[ActorClass|FQN])? "{" ("Interface" "{" ifPorts+=Port*
+ // ifSPPs+=SPPRef* "}")? ("Structure" "{" ("usercode1" userCode1=DetailCode)? ("usercode2" userCode2=DetailCode)?
+ // (intPorts+=Port | extPorts+=ExternalPort)* serviceImplementations+=ServiceImplementation* strSAPs+=SAPRef*
+ // attributes+=Attribute* actorRefs+=ActorRef* bindings+=Binding* connections+=LayerConnection* "}")? ("Behavior" "{"
+ // operations+=Operation* stateMachine=StateMachine? "}")? "}";
+ public ActorClassElements getActorClassAccess() {
+ return (pActorClass != null) ? pActorClass : (pActorClass = new ActorClassElements());
+ }
+
+ public ParserRule getActorClassRule() {
+ return getActorClassAccess().getRule();
+ }
+
+ //InterfaceItem:
+ // Port | SAPRef | SPPRef;
+ public InterfaceItemElements getInterfaceItemAccess() {
+ return (pInterfaceItem != null) ? pInterfaceItem : (pInterfaceItem = new InterfaceItemElements());
+ }
+
+ public ParserRule getInterfaceItemRule() {
+ return getInterfaceItemAccess().getRule();
+ }
+
+ //Port:
+ // conjugated?="conjugated"? "Port" name=ID ("[" multiplicity=INT "]")? ":" protocol=[ProtocolClass|FQN];
+ public PortElements getPortAccess() {
+ return (pPort != null) ? pPort : (pPort = new PortElements());
+ }
+
+ public ParserRule getPortRule() {
+ return getPortAccess().getRule();
+ }
+
+ //ExternalPort:
+ // "external" "Port" ifport=[Port];
+ public ExternalPortElements getExternalPortAccess() {
+ return (pExternalPort != null) ? pExternalPort : (pExternalPort = new ExternalPortElements());
+ }
+
+ public ParserRule getExternalPortRule() {
+ return getExternalPortAccess().getRule();
+ }
+
+ //SAPRef: // we omitted the SAP type (Timing/Frame/Exception)
+ // "SAP" name=ID ":" protocol=[ProtocolClass|FQN];
+ public SAPRefElements getSAPRefAccess() {
+ return (pSAPRef != null) ? pSAPRef : (pSAPRef = new SAPRefElements());
+ }
+
+ public ParserRule getSAPRefRule() {
+ return getSAPRefAccess().getRule();
+ }
+
+ //SPPRef:
+ // "SPP" name=ID ":" protocol=[ProtocolClass|FQN];
+ public SPPRefElements getSPPRefAccess() {
+ return (pSPPRef != null) ? pSPPRef : (pSPPRef = new SPPRefElements());
+ }
+
+ public ParserRule getSPPRefRule() {
+ return getSPPRefAccess().getRule();
+ }
+
+ //ServiceImplementation:
+ // "ServiceImplementation" "of" spp=[SPPRef];
+ public ServiceImplementationElements getServiceImplementationAccess() {
+ return (pServiceImplementation != null) ? pServiceImplementation : (pServiceImplementation = new ServiceImplementationElements());
+ }
+
+ public ParserRule getServiceImplementationRule() {
+ return getServiceImplementationAccess().getRule();
+ }
+
+ //LogicalSystem:
+ // "LogicalSystem" name=ID "{" subSystems+=SubSystemRef+ bindings+=Binding* connections+=LayerConnection* "}";
+ public LogicalSystemElements getLogicalSystemAccess() {
+ return (pLogicalSystem != null) ? pLogicalSystem : (pLogicalSystem = new LogicalSystemElements());
+ }
+
+ public ParserRule getLogicalSystemRule() {
+ return getLogicalSystemAccess().getRule();
+ }
+
+ //ActorContainerRef:
+ // SubSystemRef | ActorRef;
+ public ActorContainerRefElements getActorContainerRefAccess() {
+ return (pActorContainerRef != null) ? pActorContainerRef : (pActorContainerRef = new ActorContainerRefElements());
+ }
+
+ public ParserRule getActorContainerRefRule() {
+ return getActorContainerRefAccess().getRule();
+ }
+
+ //SubSystemRef:
+ // "SubSystemRef" name=ID ":" type=[SubSystemClass|FQN];
+ public SubSystemRefElements getSubSystemRefAccess() {
+ return (pSubSystemRef != null) ? pSubSystemRef : (pSubSystemRef = new SubSystemRefElements());
+ }
+
+ public ParserRule getSubSystemRefRule() {
+ return getSubSystemRefAccess().getRule();
+ }
+
+ //SubSystemClass:
+ // "SubSystemClass" name=ID "{" relayPorts+=Port* ifSPPs+=SPPRef* actorRefs+=ActorRef+ bindings+=Binding*
+ // connections+=LayerConnection* threads+=LogicalThread* "}";
+ public SubSystemClassElements getSubSystemClassAccess() {
+ return (pSubSystemClass != null) ? pSubSystemClass : (pSubSystemClass = new SubSystemClassElements());
+ }
+
+ public ParserRule getSubSystemClassRule() {
+ return getSubSystemClassAccess().getRule();
+ }
+
+ //LogicalThread:
+ // "LogicalThread" name=ID "{" instances+=ActorInstancePath ("," instances+=ActorInstancePath)* "}";
+ public LogicalThreadElements getLogicalThreadAccess() {
+ return (pLogicalThread != null) ? pLogicalThread : (pLogicalThread = new LogicalThreadElements());
+ }
+
+ public ParserRule getLogicalThreadRule() {
+ return getLogicalThreadAccess().getRule();
+ }
+
+ //ActorInstancePath:
+ // segments+=ID ("." segments+=ID)*;
+ public ActorInstancePathElements getActorInstancePathAccess() {
+ return (pActorInstancePath != null) ? pActorInstancePath : (pActorInstancePath = new ActorInstancePathElements());
+ }
+
+ public ParserRule getActorInstancePathRule() {
+ return getActorInstancePathAccess().getRule();
+ }
+
+ //// TODOHRR: bindings for replicated ports
+ //// (1) declare several bindings
+ //// (2) use a notation with 1 to n bindings
+ //Binding:
+ // "Binding" endpoint1=BindingEndPoint "and" endpoint2=BindingEndPoint;
+ public BindingElements getBindingAccess() {
+ return (pBinding != null) ? pBinding : (pBinding = new BindingElements());
+ }
+
+ public ParserRule getBindingRule() {
+ return getBindingAccess().getRule();
+ }
+
+ //BindingEndPoint:
+ // (actorRef=[ActorContainerRef] ".")? port=[Port];
+ public BindingEndPointElements getBindingEndPointAccess() {
+ return (pBindingEndPoint != null) ? pBindingEndPoint : (pBindingEndPoint = new BindingEndPointElements());
+ }
+
+ public ParserRule getBindingEndPointRule() {
+ return getBindingEndPointAccess().getRule();
+ }
+
+ //LayerConnection:
+ // "LayerConnection" from=SAPoint "satisfied_by" to=SPPoint;
+ public LayerConnectionElements getLayerConnectionAccess() {
+ return (pLayerConnection != null) ? pLayerConnection : (pLayerConnection = new LayerConnectionElements());
+ }
+
+ public ParserRule getLayerConnectionRule() {
+ return getLayerConnectionAccess().getRule();
+ }
+
+ //SAPoint:
+ // RefSAPoint | RelaySAPoint;
+ public SAPointElements getSAPointAccess() {
+ return (pSAPoint != null) ? pSAPoint : (pSAPoint = new SAPointElements());
+ }
+
+ public ParserRule getSAPointRule() {
+ return getSAPointAccess().getRule();
+ }
+
+ //RefSAPoint: // satisfies a sub actor
+ // "ref" ref=[ActorContainerRef];
+ public RefSAPointElements getRefSAPointAccess() {
+ return (pRefSAPoint != null) ? pRefSAPoint : (pRefSAPoint = new RefSAPointElements());
+ }
+
+ public ParserRule getRefSAPointRule() {
+ return getRefSAPointAccess().getRule();
+ }
+
+ //RelaySAPoint: // relays from own interface
+ // "relay_sap" relay=[SPPRef];
+ public RelaySAPointElements getRelaySAPointAccess() {
+ return (pRelaySAPoint != null) ? pRelaySAPoint : (pRelaySAPoint = new RelaySAPointElements());
+ }
+
+ public ParserRule getRelaySAPointRule() {
+ return getRelaySAPointAccess().getRule();
+ }
+
+ //SPPoint:
+ // ref=[ActorContainerRef] "." service=[SPPRef];
+ public SPPointElements getSPPointAccess() {
+ return (pSPPoint != null) ? pSPPoint : (pSPPoint = new SPPointElements());
+ }
+
+ public ParserRule getSPPointRule() {
+ return getSPPointAccess().getRule();
+ }
+
+ //// TODOHRR: support replicated actors
+ //ActorRef:
+ // "ActorRef" name=ID ":" type=[ActorClass|FQN];
+ public ActorRefElements getActorRefAccess() {
+ return (pActorRef != null) ? pActorRef : (pActorRef = new ActorRefElements());
+ }
+
+ public ParserRule getActorRefRule() {
+ return getActorRefAccess().getRule();
+ }
+
+ //// **************************************************************
+ //// state machine
+ //StateGraphNode:
+ // State | ChoicePoint | TrPoint;
+ public StateGraphNodeElements getStateGraphNodeAccess() {
+ return (pStateGraphNode != null) ? pStateGraphNode : (pStateGraphNode = new StateGraphNodeElements());
+ }
+
+ public ParserRule getStateGraphNodeRule() {
+ return getStateGraphNodeAccess().getRule();
+ }
+
+ //StateGraphItem:
+ // StateGraphNode | Transition;
+ public StateGraphItemElements getStateGraphItemAccess() {
+ return (pStateGraphItem != null) ? pStateGraphItem : (pStateGraphItem = new StateGraphItemElements());
+ }
+
+ public ParserRule getStateGraphItemRule() {
+ return getStateGraphItemAccess().getRule();
+ }
+
+ //State:
+ // BaseState | RefinedState;
+ public StateElements getStateAccess() {
+ return (pState != null) ? pState : (pState = new StateElements());
+ }
+
+ public ParserRule getStateRule() {
+ return getStateAccess().getRule();
+ }
+
+ //StateGraph:
+ // "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}";
+ public StateGraphElements getStateGraphAccess() {
+ return (pStateGraph != null) ? pStateGraph : (pStateGraph = new StateGraphElements());
+ }
+
+ public ParserRule getStateGraphRule() {
+ return getStateGraphAccess().getRule();
+ }
+
+ //StateMachine returns StateGraph:
+ // "StateMachine" "{" (states+=State | trPoints+=TrPoint | chPoints+=ChoicePoint | transitions+=Transition)+ "}";
+ public StateMachineElements getStateMachineAccess() {
+ return (pStateMachine != null) ? pStateMachine : (pStateMachine = new StateMachineElements());
+ }
+
+ public ParserRule getStateMachineRule() {
+ return getStateMachineAccess().getRule();
+ }
+
+ //// entry and exit code have multiplicity many: in BaseState to be able to add derived class codes here,
+ //// in RefinedState to still have both features in the common base class State
+ //BaseState:
+ // "State" name=ID "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph" subgraph=StateGraph)?
+ // "}";
+ public BaseStateElements getBaseStateAccess() {
+ return (pBaseState != null) ? pBaseState : (pBaseState = new BaseStateElements());
+ }
+
+ public ParserRule getBaseStateRule() {
+ return getBaseStateAccess().getRule();
+ }
+
+ //RefinedState:
+ // "RefinedState" base=[BaseState|FQN] "{" ("entry" entryCode=DetailCode)? ("exit" exitCode=DetailCode)? ("subgraph"
+ // subgraph=StateGraph)? "}";
+ public RefinedStateElements getRefinedStateAccess() {
+ return (pRefinedState != null) ? pRefinedState : (pRefinedState = new RefinedStateElements());
+ }
+
+ public ParserRule getRefinedStateRule() {
+ return getRefinedStateAccess().getRule();
+ }
+
+ //// TODOHRR: provide a means to call super class code (cf. ROOM p. 310f)
+ //// super() keyword or flag like in Trice
+ //DetailCode:
+ // "{" commands+=STRING+ "}";
+ public DetailCodeElements getDetailCodeAccess() {
+ return (pDetailCode != null) ? pDetailCode : (pDetailCode = new DetailCodeElements());
+ }
+
+ public ParserRule getDetailCodeRule() {
+ return getDetailCodeAccess().getRule();
+ }
+
+ //TrPoint:
+ // TransitionPoint | EntryPoint | ExitPoint;
+ public TrPointElements getTrPointAccess() {
+ return (pTrPoint != null) ? pTrPoint : (pTrPoint = new TrPointElements());
+ }
+
+ public ParserRule getTrPointRule() {
+ return getTrPointAccess().getRule();
+ }
+
+ //TransitionPoint:
+ // handler?="handler"? "TransitionPoint" name=ID;
+ public TransitionPointElements getTransitionPointAccess() {
+ return (pTransitionPoint != null) ? pTransitionPoint : (pTransitionPoint = new TransitionPointElements());
+ }
+
+ public ParserRule getTransitionPointRule() {
+ return getTransitionPointAccess().getRule();
+ }
+
+ //EntryPoint:
+ // "EntryPoint" name=ID;
+ public EntryPointElements getEntryPointAccess() {
+ return (pEntryPoint != null) ? pEntryPoint : (pEntryPoint = new EntryPointElements());
+ }
+
+ public ParserRule getEntryPointRule() {
+ return getEntryPointAccess().getRule();
+ }
+
+ //ExitPoint:
+ // "ExitPoint" name=ID;
+ public ExitPointElements getExitPointAccess() {
+ return (pExitPoint != null) ? pExitPoint : (pExitPoint = new ExitPointElements());
+ }
+
+ public ParserRule getExitPointRule() {
+ return getExitPointAccess().getRule();
+ }
+
+ //ChoicePoint:
+ // "ChoicePoint" name=ID;
+ public ChoicePointElements getChoicePointAccess() {
+ return (pChoicePoint != null) ? pChoicePoint : (pChoicePoint = new ChoicePointElements());
+ }
+
+ public ParserRule getChoicePointRule() {
+ return getChoicePointAccess().getRule();
+ }
+
+ //Transition:
+ // InitialTransition | NonInitialTransition;
+ public TransitionElements getTransitionAccess() {
+ return (pTransition != null) ? pTransition : (pTransition = new TransitionElements());
+ }
+
+ public ParserRule getTransitionRule() {
+ return getTransitionAccess().getRule();
+ }
+
+ //NonInitialTransition:
+ // TriggeredTransition | ContinuationTransition | CPBranchTransition;
+ public NonInitialTransitionElements getNonInitialTransitionAccess() {
+ return (pNonInitialTransition != null) ? pNonInitialTransition : (pNonInitialTransition = new NonInitialTransitionElements());
+ }
+
+ public ParserRule getNonInitialTransitionRule() {
+ return getNonInitialTransitionAccess().getRule();
+ }
+
+ //InitialTransition:
+ // "Transition" name=ID? ":" "initial" "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}";
+ public InitialTransitionElements getInitialTransitionAccess() {
+ return (pInitialTransition != null) ? pInitialTransition : (pInitialTransition = new InitialTransitionElements());
+ }
+
+ public ParserRule getInitialTransitionRule() {
+ return getInitialTransitionAccess().getRule();
+ }
+
+ //ContinuationTransition:
+ // "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" ("action" action=DetailCode)? "}";
+ public ContinuationTransitionElements getContinuationTransitionAccess() {
+ return (pContinuationTransition != null) ? pContinuationTransition : (pContinuationTransition = new ContinuationTransitionElements());
+ }
+
+ public ParserRule getContinuationTransitionRule() {
+ return getContinuationTransitionAccess().getRule();
+ }
+
+ //TriggeredTransition:
+ // "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "triggers" "{" triggers+=Trigger
+ // ("or" triggers+=Trigger)* "}" ("action" action=DetailCode)? "}";
+ public TriggeredTransitionElements getTriggeredTransitionAccess() {
+ return (pTriggeredTransition != null) ? pTriggeredTransition : (pTriggeredTransition = new TriggeredTransitionElements());
+ }
+
+ public ParserRule getTriggeredTransitionRule() {
+ return getTriggeredTransitionAccess().getRule();
+ }
+
+ //CPBranchTransition:
+ // "Transition" name=ID? ":" from=TransitionTerminal "->" to=TransitionTerminal "{" "cond" condition=DetailCode ("action"
+ // action=DetailCode)? "}";
+ public CPBranchTransitionElements getCPBranchTransitionAccess() {
+ return (pCPBranchTransition != null) ? pCPBranchTransition : (pCPBranchTransition = new CPBranchTransitionElements());
+ }
+
+ public ParserRule getCPBranchTransitionRule() {
+ return getCPBranchTransitionAccess().getRule();
+ }
+
+ //TransitionTerminal:
+ // StateTerminal | TrPointTerminal | SubStateTrPointTerminal | ChoicepointTerminal;
+ public TransitionTerminalElements getTransitionTerminalAccess() {
+ return (pTransitionTerminal != null) ? pTransitionTerminal : (pTransitionTerminal = new TransitionTerminalElements());
+ }
+
+ public ParserRule getTransitionTerminalRule() {
+ return getTransitionTerminalAccess().getRule();
+ }
+
+ //StateTerminal:
+ // state=[BaseState];
+ public StateTerminalElements getStateTerminalAccess() {
+ return (pStateTerminal != null) ? pStateTerminal : (pStateTerminal = new StateTerminalElements());
+ }
+
+ public ParserRule getStateTerminalRule() {
+ return getStateTerminalAccess().getRule();
+ }
+
+ //TrPointTerminal:
+ // "my" trPoint=[TrPoint];
+ public TrPointTerminalElements getTrPointTerminalAccess() {
+ return (pTrPointTerminal != null) ? pTrPointTerminal : (pTrPointTerminal = new TrPointTerminalElements());
+ }
+
+ public ParserRule getTrPointTerminalRule() {
+ return getTrPointTerminalAccess().getRule();
+ }
+
+ //SubStateTrPointTerminal:
+ // trPoint=[TrPoint] "of" state=[BaseState];
+ public SubStateTrPointTerminalElements getSubStateTrPointTerminalAccess() {
+ return (pSubStateTrPointTerminal != null) ? pSubStateTrPointTerminal : (pSubStateTrPointTerminal = new SubStateTrPointTerminalElements());
+ }
+
+ public ParserRule getSubStateTrPointTerminalRule() {
+ return getSubStateTrPointTerminalAccess().getRule();
+ }
+
+ //ChoicepointTerminal:
+ // "cp" cp=[ChoicePoint];
+ public ChoicepointTerminalElements getChoicepointTerminalAccess() {
+ return (pChoicepointTerminal != null) ? pChoicepointTerminal : (pChoicepointTerminal = new ChoicepointTerminalElements());
+ }
+
+ public ParserRule getChoicepointTerminalRule() {
+ return getChoicepointTerminalAccess().getRule();
+ }
+
+ ////TransitionSource: TransitionTerminal|ChoicePointCaseRef|ChoicePointDefaultRef;
+ ////TransitionSource: TransitionTerminal|ChoicePointRef;
+ ////TransitionDest: TransitionTerminal|ChoicePointRef;
+ ////ChoicePointCaseRef: 'cp' cp=[ChoicePoint|ID] 'case' case=[ChoicePointCase|ID];
+ ////ChoicePointDefaultRef: 'cp' cp=[ChoicePoint|ID] 'default';
+ ////ChoicePointRef: 'cp' cp=[ChoicePoint|ID];
+ //Trigger:
+ // "<" msgFromIfPairs+=MessageFromIf ("|" msgFromIfPairs+=MessageFromIf)* guard=Guard? ">";
+ public TriggerElements getTriggerAccess() {
+ return (pTrigger != null) ? pTrigger : (pTrigger = new TriggerElements());
+ }
+
+ public ParserRule getTriggerRule() {
+ return getTriggerAccess().getRule();
+ }
+
+ //MessageFromIf:
+ // message=[Message] ":" from=[InterfaceItem];
+ public MessageFromIfElements getMessageFromIfAccess() {
+ return (pMessageFromIf != null) ? pMessageFromIf : (pMessageFromIf = new MessageFromIfElements());
+ }
+
+ public ParserRule getMessageFromIfRule() {
+ return getMessageFromIfAccess().getRule();
+ }
+
+ //Guard:
+ // "guard" guard=DetailCode;
+ public GuardElements getGuardAccess() {
+ return (pGuard != null) ? pGuard : (pGuard = new GuardElements());
+ }
+
+ public ParserRule getGuardRule() {
+ return getGuardAccess().getRule();
+ }
+
+ //// **************************************************************
+ //// general
+ //Import:
+ // "import" importedNamespace=ImportedFQN;
+ public ImportElements getImportAccess() {
+ return (pImport != null) ? pImport : (pImport = new ImportElements());
+ }
+
+ public ParserRule getImportRule() {
+ return getImportAccess().getRule();
+ }
+
+ //ImportedFQN returns ecore::EString:
+ // FQN ("." "*")?;
+ public ImportedFQNElements getImportedFQNAccess() {
+ return (pImportedFQN != null) ? pImportedFQN : (pImportedFQN = new ImportedFQNElements());
+ }
+
+ public ParserRule getImportedFQNRule() {
+ return getImportedFQNAccess().getRule();
+ }
+
+ //FQN returns ecore::EString:
+ // ID ("." ID)*;
+ public FQNElements getFQNAccess() {
+ return (pFQN != null) ? pFQN : (pFQN = new FQNElements());
+ }
+
+ public ParserRule getFQNRule() {
+ return getFQNAccess().getRule();
+ }
+
+ //terminal ID:
+ // "^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+ public TerminalRule getIDRule() {
+ return gaTerminals.getIDRule();
+ }
+
+ //terminal INT returns ecore::EInt:
+ // "0".."9"+;
+ public TerminalRule getINTRule() {
+ return gaTerminals.getINTRule();
+ }
+
+ //terminal STRING:
+ // "\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" | "n" |
+ // "f" | "r" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
+ public TerminalRule getSTRINGRule() {
+ return gaTerminals.getSTRINGRule();
+ }
+
+ //terminal ML_COMMENT:
+ // "/ *"->"* /";
+ public TerminalRule getML_COMMENTRule() {
+ return gaTerminals.getML_COMMENTRule();
+ }
+
+ //terminal SL_COMMENT:
+ // "//" !("\n" | "\r")* ("\r"? "\n")?;
+ public TerminalRule getSL_COMMENTRule() {
+ return gaTerminals.getSL_COMMENTRule();
+ }
+
+ //terminal WS:
+ // (" " | "\t" | "\r" | "\n")+;
+ public TerminalRule getWSRule() {
+ return gaTerminals.getWSRule();
+ }
+
+ //terminal ANY_OTHER:
+ // .;
+ public TerminalRule getANY_OTHERRule() {
+ return gaTerminals.getANY_OTHERRule();
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/validation/AbstractRoomJavaValidator.java b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/validation/AbstractRoomJavaValidator.java
new file mode 100644
index 000000000..1283ad810
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/validation/AbstractRoomJavaValidator.java
@@ -0,0 +1,20 @@
+package org.eclipse.etrice.core.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
+import org.eclipse.xtext.validation.ComposedChecks;
+
+@ComposedChecks(validators= {org.eclipse.xtext.validation.ImportUriValidator.class, org.eclipse.xtext.validation.NamesAreUniqueValidator.class})
+public class AbstractRoomJavaValidator extends AbstractDeclarativeValidator {
+
+@Override
+ protected List<EPackage> getEPackages() {
+ List<EPackage> result = new ArrayList<EPackage>();
+ result.add(org.eclipse.etrice.core.room.RoomPackage.eINSTANCE);
+ return result;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/GenerateRoom.mwe2 b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/GenerateRoom.mwe2
new file mode 100644
index 000000000..e88ae0055
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/GenerateRoom.mwe2
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+
+module org.eclipse.etrice.core.Room
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+
+var grammarURI = "classpath:/org/eclipse/etrice/core/Room.xtext"
+var file.extensions = "room"
+var projectName = "org.eclipse.etrice.core.room"
+var runtimeProject = "../${projectName}"
+
+Workflow {
+ bean = StandaloneSetup {
+ platformUri = "${runtimeProject}/.."
+ }
+
+ component = DirectoryCleaner {
+ directory = "${runtimeProject}/src-gen"
+ }
+
+ component = DirectoryCleaner {
+ directory = "${runtimeProject}.ui/src-gen"
+ }
+
+ component = Generator {
+ pathRtProject = runtimeProject
+ pathUiProject = "${runtimeProject}.ui"
+ projectNameRt = projectName
+ projectNameUi = "${projectName}.ui"
+
+ language = {
+ uri = grammarURI
+ fileExtensions = file.extensions
+
+ // Java API to access grammar elements (required by several other fragments)
+ fragment = grammarAccess.GrammarAccessFragment {}
+
+ // generates Java API for the generated EPackages
+ fragment = ecore.EcoreGeneratorFragment {
+ // referencedGenModels = "uri to genmodel, uri to next genmodel"
+ }
+
+ // the serialization component
+ fragment = parseTreeConstructor.ParseTreeConstructorFragment {}
+
+ // a custom ResourceFactory for use with EMF
+ fragment = resourceFactory.ResourceFactoryFragment {
+ fileExtensions = file.extensions
+ }
+
+ // the following fragment tries to use the Antlr Generator fragment which can be installed via update manager from http://download.itemis.com/updates/
+ fragment = AntlrDelegatingFragment {}
+
+ /*
+ If you don't want to use the Antlr fragment for some reason, remove the antlr fragment and uncomment the packrat parser fragment below.
+ fragment = parser.PackratParserFragment {}
+ */
+
+ // check-based API for validation
+ /*
+ fragment = validation.CheckFragment {}
+ */
+
+ // java-based API for validation
+ fragment = validation.JavaValidatorFragment {
+ composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+ composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+ }
+
+ // scoping and exporting API
+ /*
+ fragment = scoping.ImportURIScopingFragment {}
+ fragment = exporting.SimpleNamesFragment {}
+ */
+
+ // scoping and exporting API
+ fragment = scoping.ImportNamespacesScopingFragment {}
+ fragment = exporting.QualifiedNamesFragment {}
+
+ // formatter API
+ fragment = formatting.FormatterFragment {}
+
+ // labeling API
+ fragment = labeling.LabelProviderFragment {}
+
+ // outline API
+ fragment = outline.TransformerFragment {}
+ fragment = outline.OutlineNodeAdapterFactoryFragment {}
+ fragment = outline.QuickOutlineFragment {}
+
+ // java-based API for content assistance
+ fragment = contentAssist.JavaBasedContentAssistFragment {}
+
+ // the following fragment tries to use the Antlr based content assist
+ // fragment which can be downloaded from http://www.itemis.com
+ // and will be ignored if it's not available.
+ fragment = DelegatingGeneratorFragment {
+ delegate = "de.itemis.xtext.antlr.XtextAntlrUiGeneratorFragment"
+ message="You are generating without ANTLR. It is highly recommended to download and use the plugin \'de.itemis.xtext.antlr\' \n\t using the update site http://download.itemis.com/updates/."
+ }
+
+ fragment = builder.BuilderIntegrationFragment {}
+
+ // project wizard (optional)
+ /*
+ fragment = projectWizard.SimpleProjectWizardFragment {
+ generatorProjectName = "${projectName}.generator"
+ modelFileExtension = file.extensions
+ }
+ */
+
+ // quickfix API
+ fragment = quickfix.QuickfixProviderFragment {}
+ }
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.ecorediag b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.ecorediag
new file mode 100644
index 000000000..b02d1355b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.ecorediag
@@ -0,0 +1,2784 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_ajilUPVFEd-4fo1YBnNwaQ" type="EcoreTools" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_ajilUfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajilUvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajilU_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajilVPVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//RoomModel/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilVfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilVvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilV_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilWPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilWfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilWvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilW_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilXPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajilXfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//RoomModel"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilXvVFEd-4fo1YBnNwaQ" x="515" y="-415"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilX_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajilYPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajilYfVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajilYvVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//RoomClass/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilY_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilZPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilZfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilZvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilZ_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilaPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilafVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilavVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajila_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//RoomClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilbPVFEd-4fo1YBnNwaQ" x="1115" y="-305"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilbfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajilbvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajilb_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilcPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilcfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilcvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilc_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajildPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajildfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajildvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajild_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//StructureClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilePVFEd-4fo1YBnNwaQ" x="1180" y="-125"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilefVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajilevVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajile_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilfPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilffVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilfvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilf_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilgPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilgfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilgvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajilg_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ActorContainerClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilhPVFEd-4fo1YBnNwaQ" x="1125" y="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilhfVFEd-4fo1YBnNwaQ" type="1005">
+ <children xmi:type="notation:Node" xmi:id="_ajilhvVFEd-4fo1YBnNwaQ" type="4010"/>
+ <children xmi:type="notation:Node" xmi:id="_ajilh_VFEd-4fo1YBnNwaQ" type="5008">
+ <children xmi:type="notation:Node" xmi:id="_ajiliPVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/void"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilifVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilivVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/int8"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajili_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiljPVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/int16"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiljfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiljvVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/int32"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilj_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilkPVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/uint8"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilkfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilkvVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/uint16"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilk_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajillPVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/uint32"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajillfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajillvVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/float32"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajill_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilmPVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/float64"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilmfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilmvVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/boolean"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilm_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilnPVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/string"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilnfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilnvVFEd-4fo1YBnNwaQ" type="2006">
+ <element xmi:type="ecore:EEnumLiteral" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType/char"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiln_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiloPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilofVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilovVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajilo_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EEnum" href="../../../src-gen/de/protos/Room.ecore#//PrimitiveType"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilpPVFEd-4fo1YBnNwaQ" x="100" y="-386"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilpfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajilpvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajilp_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajilqPVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//TypedID/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilqfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilqvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilq_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilrPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilrfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilrvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilr_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilsPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajilsfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//TypedID"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilsvVFEd-4fo1YBnNwaQ" x="475" y="125"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajils_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajiltPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajiltfVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajiltvVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//FreeTypedID/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilt_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiluPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilufVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiluvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilu_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilvPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilvfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilvvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajilv_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//FreeTypedID"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilwPVFEd-4fo1YBnNwaQ" x="285" y="130"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilwfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajilwvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajilw_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajilxPVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//Type/prim"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajilxfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilxvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajilx_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilyPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilyfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajilyvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajily_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajilzPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajilzfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Type"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajilzvVFEd-4fo1YBnNwaQ" x="470" y="245"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajilz_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajil0PVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajil0fVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajil0vVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//FreeType/prim"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajil0_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil1PVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//FreeType/type"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajil1fVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajil1vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajil1_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajil2PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil2fVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajil2vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajil2_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajil3PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajil3fVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//FreeType"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajil3vVFEd-4fo1YBnNwaQ" x="270" y="220"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil3_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajil4PVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajil4fVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajil4vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajil4_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajil5PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil5fVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajil5vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajil5_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajil6PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajil6fVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//DataClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajil6vVFEd-4fo1YBnNwaQ" x="505" y="-65"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil6_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajil7PVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajil7fVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajil7vVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//Attribute/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajil7_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil8PVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//Attribute/size"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajil8fVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajil8vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajil8_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajil9PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil9fVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajil9vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajil9_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajil-PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajil-fVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Attribute"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajil-vVFEd-4fo1YBnNwaQ" x="440" y="370"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajil-_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajil_PVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajil_fVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajil_vVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//Operation/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajil__VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimAPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimAfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimAvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimA_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimBPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimBfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimBvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimB_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Operation"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimCPVFEd-4fo1YBnNwaQ" x="245" y="365"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimCfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimCvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimC_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimDPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimDfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimDvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimD_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimEPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimEfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimEvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimE_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimFPVFEd-4fo1YBnNwaQ" x="805" y="-65"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimFfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimFvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimF_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajimGPVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//Message/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajimGfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimGvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimG_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimHPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimHfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimHvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimH_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimIPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimIfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Message"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimIvVFEd-4fo1YBnNwaQ" x="795" y="120"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimI_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimJPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimJfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimJvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimJ_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimKPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimKfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimKvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimK_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimLPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimLfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//PortClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimLvVFEd-4fo1YBnNwaQ" x="615" y="650"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimL_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimMPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimMfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimMvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimM_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimNPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimNfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimNvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimN_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimOPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimOfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//MessageHandler"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimOvVFEd-4fo1YBnNwaQ" x="615" y="550"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimO_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimPPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimPfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimPvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimP_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimQPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimQfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimQvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimQ_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimRPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimRfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ProtocolSemantics"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimRvVFEd-4fo1YBnNwaQ" x="790" y="220"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimR_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimSPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimSfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimSvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimS_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimTPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimTfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimTvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimT_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimUPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimUfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SemanticsRule"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimUvVFEd-4fo1YBnNwaQ" x="775" y="320"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimU_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimVPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimVfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimVvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimV_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimWPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimWfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimWvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimW_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimXPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimXfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SemanticsInRule"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimXvVFEd-4fo1YBnNwaQ" x="630" y="475"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimX_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimYPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimYfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimYvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimY_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimZPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimZfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimZvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimZ_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimaPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimafVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SemanticsOutRule"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimavVFEd-4fo1YBnNwaQ" x="770" y="475"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajima_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimbPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimbfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimbvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimb_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimcPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimcfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimcvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimc_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimdPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimdfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ActorClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimdvVFEd-4fo1YBnNwaQ" x="1025" y="245"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimd_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimePVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimefVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimevVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajime_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimfPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimffVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimfvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimf_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimgPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimgfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//InterfaceItem"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimgvVFEd-4fo1YBnNwaQ" x="2130" y="805"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimg_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimhPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimhfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimhvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimh_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimiPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimifVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimivVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimi_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimjPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimjfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Port"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimjvVFEd-4fo1YBnNwaQ" x="2265" y="940"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimj_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimkPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimkfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimkvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimk_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimlPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimlfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimlvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajiml_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimmPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimmfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ExternalPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimmvVFEd-4fo1YBnNwaQ" x="2255" y="1015"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimm_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimnPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimnfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimnvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimn_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimoPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimofVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimovVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimo_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimpPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimpfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SAPRef"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimpvVFEd-4fo1YBnNwaQ" x="2110" y="940"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimp_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimqPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimqfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimqvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimq_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimrPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimrfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimrvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimr_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimsPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimsfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SPPRef"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimsvVFEd-4fo1YBnNwaQ" x="1865" y="935"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajims_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimtPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimtfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimtvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimt_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimuPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimufVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimuvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimu_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimvPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimvfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ServiceImplementation"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimvvVFEd-4fo1YBnNwaQ" x="1600" y="895"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimv_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimwPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimwfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimwvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimw_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimxPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimxfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajimxvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajimx_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajimyPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajimyfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//LogicalSystem"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajimyvVFEd-4fo1YBnNwaQ" x="1285" y="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajimy_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajimzPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajimzfVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajimzvVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//ActorContainerRef/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajimz_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim0PVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim0fVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim0vVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim0_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim1PVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim1fVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim1vVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajim1_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ActorContainerRef"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajim2PVFEd-4fo1YBnNwaQ" x="1745" y="245"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim2fVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajim2vVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajim2_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim3PVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim3fVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim3vVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim3_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim4PVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim4fVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim4vVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajim4_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SubSystemRef"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajim5PVFEd-4fo1YBnNwaQ" x="1650" y="540"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim5fVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajim5vVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajim5_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim6PVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim6fVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim6vVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim6_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim7PVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim7fVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim7vVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajim7_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SubSystemClass"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajim8PVFEd-4fo1YBnNwaQ" x="1155" y="245"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim8fVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajim8vVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajim8_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajim9PVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//LogicalThread/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajim9fVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim9vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim9_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim-PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim-fVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajim-vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajim-_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajim_PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajim_fVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//LogicalThread"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajim_vVFEd-4fo1YBnNwaQ" x="1005" y="735"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajim__VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinAPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinAfVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajinAvVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//ActorInstancePath/segments"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajinA_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinBPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinBfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinBvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinB_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinCPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinCfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinCvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinC_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ActorInstancePath"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinDPVFEd-4fo1YBnNwaQ" x="1000" y="840"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinDfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinDvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinD_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinEPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinEfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinEvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinE_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinFPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinFfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinFvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinF_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Binding"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinGPVFEd-4fo1YBnNwaQ" x="2405" y="315"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinGfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinGvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinG_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinHPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinHfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinHvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinH_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinIPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinIfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinIvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinI_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//BindingEndPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinJPVFEd-4fo1YBnNwaQ" x="2415" y="470"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinJfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinJvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinJ_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinKPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinKfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinKvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinK_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinLPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinLfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinLvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinL_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//LayerConnection"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinMPVFEd-4fo1YBnNwaQ" x="2115" y="275"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinMfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinMvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinM_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinNPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinNfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinNvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinN_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinOPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinOfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinOvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinO_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SAPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinPPVFEd-4fo1YBnNwaQ" x="2190" y="485"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinPfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinPvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinP_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinQPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinQfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinQvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinQ_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinRPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinRfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinRvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinR_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//RefSAPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinSPVFEd-4fo1YBnNwaQ" x="2125" y="615"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinSfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinSvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinS_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinTPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinTfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinTvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinT_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinUPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinUfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinUvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinU_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//RelaySAPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinVPVFEd-4fo1YBnNwaQ" x="2330" y="615"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinVfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinVvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinV_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinWPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinWfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinWvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinW_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinXPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinXfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinXvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinX_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SPPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinYPVFEd-4fo1YBnNwaQ" x="2045" y="500"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinYfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinYvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinY_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinZPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinZfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinZvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinZ_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinaPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinafVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinavVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajina_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ActorRef"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinbPVFEd-4fo1YBnNwaQ" x="1800" y="535"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinbfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinbvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinb_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajincPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajincfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajincvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinc_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajindPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajindfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajindvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajind_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//StateGraphNode"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinePVFEd-4fo1YBnNwaQ" x="100" y="1605"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinefVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinevVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajine_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinfPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinffVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinfvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinf_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajingPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajingfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajingvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajing_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//StateGraphItem"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinhPVFEd-4fo1YBnNwaQ" x="1482" y="1230"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinhfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinhvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinh_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiniPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinifVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinivVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajini_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinjPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinjfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinjvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinj_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//State"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinkPVFEd-4fo1YBnNwaQ" x="70" y="1830"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinkfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinkvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajink_VFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinlPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinlfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinlvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinl_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinmPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinmfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinmvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinm_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//StateGraph"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinnPVFEd-4fo1YBnNwaQ" x="1470" y="1090"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinnfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinnvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinn_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajinoPVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//BaseState/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajinofVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinovVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajino_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinpPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinpfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinpvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinp_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinqPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinqfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//BaseState"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinqvVFEd-4fo1YBnNwaQ" x="-100" y="2000"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinq_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinrPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinrfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinrvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinr_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinsPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinsfVFEd-4fo1YBnNwaQ" type="5002">
+ <children xmi:type="notation:Node" xmi:id="_ajinsvVFEd-4fo1YBnNwaQ" type="2002">
+ <element xmi:type="ecore:EOperation" href="../../../src-gen/de/protos/Room.ecore#//RefinedState/getName"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajins_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajintPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajintfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajintvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajint_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//RefinedState"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinuPVFEd-4fo1YBnNwaQ" x="125" y="2000"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinufVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinuvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinu_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajinvPVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//DetailCode/commands"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajinvfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinvvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinv_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinwPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinwfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinwvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinw_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinxPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajinxfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//DetailCode"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajinxvVFEd-4fo1YBnNwaQ" x="1020" y="1525"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinx_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajinyPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajinyfVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajinyvVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//TrPoint/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiny_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajinzPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajinzfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajinzvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajinz_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajin0PVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajin0fVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajin0vVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajin0_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//TrPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajin1PVFEd-4fo1YBnNwaQ" x="455" y="1828"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajin1fVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajin1vVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajin1_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajin2PVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//TransitionPoint/handler"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajin2fVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajin2vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajin2_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajin3PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajin3fVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajin3vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajin3_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajin4PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajin4fVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//TransitionPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajin4vVFEd-4fo1YBnNwaQ" x="325" y="1998"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajin4_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajin5PVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajin5fVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajin5vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajin5_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajin6PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajin6fVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajin6vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajin6_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajin7PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajin7fVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//EntryPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajin7vVFEd-4fo1YBnNwaQ" x="505" y="2003"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajin7_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajin8PVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajin8fVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajin8vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajin8_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajin9PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajin9fVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajin9vVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajin9_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajin-PVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajin-fVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ExitPoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajin-vVFEd-4fo1YBnNwaQ" x="665" y="2008"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajin-_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajin_PVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajin_fVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajin_vVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//ChoicePoint/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajin__VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioAPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioAfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioAvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioA_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioBPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioBfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioBvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioB_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ChoicePoint"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioCPVFEd-4fo1YBnNwaQ" x="-70" y="1820"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioCfVFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioCvVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioC_VFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajioDPVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//Transition/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajioDfVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioDvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioD_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioEPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioEfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioEvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioE_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioFPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioFfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Transition"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioFvVFEd-4fo1YBnNwaQ" x="1481" y="1644"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioF_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioGPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioGfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioGvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioG_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioHPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioHfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioHvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioH_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioIPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioIfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//NonInitialTransition"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioIvVFEd-4fo1YBnNwaQ" x="1551" y="1772"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioI_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioJPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioJfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioJvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioJ_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioKPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioKfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioKvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioK_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioLPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioLfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//InitialTransition"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioLvVFEd-4fo1YBnNwaQ" x="1130" y="1890"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioL_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioMPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioMfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioMvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioM_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioNPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioNfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioNvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioN_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioOPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioOfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ContinuationTransition"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioOvVFEd-4fo1YBnNwaQ" x="1552" y="1883"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioO_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioPPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioPfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioPvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioP_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioQPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioQfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioQvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioQ_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioRPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioRfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//TriggeredTransition"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioRvVFEd-4fo1YBnNwaQ" x="1790" y="1890"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioR_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioSPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioSfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioSvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioS_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioTPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioTfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioTvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioT_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioUPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioUfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//CPBranchTransition"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioUvVFEd-4fo1YBnNwaQ" x="1328" y="1883"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioU_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioVPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioVfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioVvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioV_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioWPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioWfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioWvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioW_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioXPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioXfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//TransitionTerminal"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioXvVFEd-4fo1YBnNwaQ" x="1450" y="2020"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioX_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioYPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioYfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioYvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioY_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioZPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioZfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioZvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioZ_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioaPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajioafVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//StateTerminal"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajioavVFEd-4fo1YBnNwaQ" x="1209" y="2262"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioa_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajiobPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajiobfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiobvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajiob_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiocPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiocfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiocvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioc_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiodPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajiodfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//TrPointTerminal"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajiodvVFEd-4fo1YBnNwaQ" x="1724" y="2257"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiod_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioePVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioefVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioevVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioe_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiofPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioffVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiofvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajiof_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiogPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajiogfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//SubStateTrPointTerminal"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajiogvVFEd-4fo1YBnNwaQ" x="1379" y="2262"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiog_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajiohPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajiohfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiohvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioh_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajioiPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioifVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioivVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioi_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiojPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajiojfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//ChoicepointTerminal"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajiojvVFEd-4fo1YBnNwaQ" x="1560" y="2259"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioj_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajiokPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajiokfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiokvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajiok_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiolPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiolfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiolvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajiol_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiomPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajiomfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Trigger"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajiomvVFEd-4fo1YBnNwaQ" x="980" y="1725"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiom_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajionPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajionfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajionvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajion_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiooPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioofVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioovVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioo_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiopPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajiopfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//MessageFromIf"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajiopvVFEd-4fo1YBnNwaQ" x="945" y="1815"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiop_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajioqPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajioqfVFEd-4fo1YBnNwaQ" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajioqvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioq_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiorPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiorfVFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiorvVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajior_VFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiosPVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajiosfVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Guard"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajiosvVFEd-4fo1YBnNwaQ" x="1290" y="1545"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajios_VFEd-4fo1YBnNwaQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_ajiotPVFEd-4fo1YBnNwaQ" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_ajiotfVFEd-4fo1YBnNwaQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_ajiotvVFEd-4fo1YBnNwaQ" type="2001">
+ <element xmi:type="ecore:EAttribute" href="../../../src-gen/de/protos/Room.ecore#//Import/importedNamespace"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiot_VFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiouPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajioufVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiouvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiou_VFEd-4fo1YBnNwaQ" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ajiovPVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ajiovfVFEd-4fo1YBnNwaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ajiovvVFEd-4fo1YBnNwaQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ajiov_VFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="../../../src-gen/de/protos/Room.ecore#//Import"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajiowPVFEd-4fo1YBnNwaQ" x="270" y="-310"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ajiowfVFEd-4fo1YBnNwaQ"/>
+ <element xmi:type="ecore:EPackage" href="../../../src-gen/de/protos/Room.ecore#/"/>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiowvVFEd-4fo1YBnNwaQ" type="3002" source="_ajilUfVFEd-4fo1YBnNwaQ" target="_ajios_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiow_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajioxPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioxfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajioxvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiox_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajioyPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RoomModel/imports"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajioyfVFEd-4fo1YBnNwaQ" points="[-13, 23, 78, -131]$[-62, 105, 29, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajioyvVFEd-4fo1YBnNwaQ" id="(0.12173913043478261,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajioy_VFEd-4fo1YBnNwaQ" id="(0.8203883495145631,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiozPVFEd-4fo1YBnNwaQ" type="3002" source="_ajilUfVFEd-4fo1YBnNwaQ" target="_ajil3_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiozfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiozvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajioz_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio0PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajio0fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajio0vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RoomModel/dataClasses"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajio0_VFEd-4fo1YBnNwaQ" points="[2, 49, -12, -342]$[13, 350, -1, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio1PVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio1fVFEd-4fo1YBnNwaQ" id="(0.5196078431372549,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajio1vVFEd-4fo1YBnNwaQ" type="3002" source="_ajilUfVFEd-4fo1YBnNwaQ" target="_ajimCfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajio1_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio2PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajio2fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio2vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajio2_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajio3PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RoomModel/protocolClasses"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajio3fVFEd-4fo1YBnNwaQ" points="[31, 49, -218, -342]$[223, 350, -26, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio3vVFEd-4fo1YBnNwaQ" id="(0.6608695652173913,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio3_VFEd-4fo1YBnNwaQ" id="(0.3333333333333333,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajio4PVFEd-4fo1YBnNwaQ" type="3002" source="_ajilUfVFEd-4fo1YBnNwaQ" target="_ajima_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajio4fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio4vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajio4_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio5PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajio5fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajio5vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RoomModel/actorClasses"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajio5_VFEd-4fo1YBnNwaQ" points="[20, 29, -447, -672]$[439, 660, -28, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio6PVFEd-4fo1YBnNwaQ" id="(0.8260869565217391,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio6fVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajio6vVFEd-4fo1YBnNwaQ" type="3002" source="_ajilUfVFEd-4fo1YBnNwaQ" target="_ajim5fVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajio6_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio7PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajio7fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio7vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajio7_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajio8PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RoomModel/subSystemClasses"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajio8fVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 266]$[0, -266, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio8vVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio8_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajio9PVFEd-4fo1YBnNwaQ" type="3002" source="_ajilUfVFEd-4fo1YBnNwaQ" target="_ajimv_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajio9fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio9vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajio9_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajio-PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajio-fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajio-vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RoomModel/systems"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajio-_VFEd-4fo1YBnNwaQ" points="[0, 0, 315, 60]$[-315, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio_PVFEd-4fo1YBnNwaQ" id="(0.3652173913043478,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajio_fVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajio_vVFEd-4fo1YBnNwaQ" type="3002" source="_ajilbfVFEd-4fo1YBnNwaQ" target="_ajinDfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajio__VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipAPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipAfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipAvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipA_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipBPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//StructureClass/bindings"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipBfVFEd-4fo1YBnNwaQ" points="[0, 0, -1161, 60]$[1161, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipBvVFEd-4fo1YBnNwaQ" id="(0.7475728155339806,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipB_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipCPVFEd-4fo1YBnNwaQ" type="3002" source="_ajilbfVFEd-4fo1YBnNwaQ" target="_ajinJfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipCfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipCvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipC_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipDPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipDfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipDvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//StructureClass/connections"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipD_VFEd-4fo1YBnNwaQ" points="[0, 0, 332, 60]$[-332, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipEPVFEd-4fo1YBnNwaQ" id="(0.24271844660194175,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipEfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipEvVFEd-4fo1YBnNwaQ" type="3003" source="_ajilbfVFEd-4fo1YBnNwaQ" target="_ajilX_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipE_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipFPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipFfVFEd-4fo1YBnNwaQ" points="[-16, 0, 43, 131]$[-16, -18, 43, 113]$[-21, -18, 38, 113]$[-21, -131, 38, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipFvVFEd-4fo1YBnNwaQ" id="(0.49514563106796117,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipF_VFEd-4fo1YBnNwaQ" id="(0.4956521739130435,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipGPVFEd-4fo1YBnNwaQ" type="3002" source="_ajilefVFEd-4fo1YBnNwaQ" target="_ajimp_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipGfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipGvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipG_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipHPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipHfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipHvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorContainerClass/ifSPPs"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipH_VFEd-4fo1YBnNwaQ" points="[31, 41, -662, -905]$[582, 759, -111, -187]$[668, 905, -25, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipIPVFEd-4fo1YBnNwaQ" id="(0.717391304347826,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipIfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipIvVFEd-4fo1YBnNwaQ" type="3002" source="_ajilefVFEd-4fo1YBnNwaQ" target="_ajinYfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipI_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipJPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipJfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipJvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipJ_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipKPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorContainerClass/actorRefs"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipKfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 68]$[0, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipKvVFEd-4fo1YBnNwaQ" id="(0.4420289855072464,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipK_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipLPVFEd-4fo1YBnNwaQ" type="3003" source="_ajilefVFEd-4fo1YBnNwaQ" target="_ajilbfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipLfVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipLvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipL_VFEd-4fo1YBnNwaQ" points="[0, 0, 115, 68]$[0, -30, 115, 38]$[-115, -30, 0, 38]$[-115, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipMPVFEd-4fo1YBnNwaQ" id="(0.21739130434782608,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipMfVFEd-4fo1YBnNwaQ" id="(0.6601941747572816,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipMvVFEd-4fo1YBnNwaQ" type="3002" source="_ajilpfVFEd-4fo1YBnNwaQ" target="_ajilwfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipM_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipNPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipNfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipNvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipN_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipOPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//TypedID/type"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipOfVFEd-4fo1YBnNwaQ" points="[0, 0, 346, 60]$[-346, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipOvVFEd-4fo1YBnNwaQ" id="(0.25217391304347825,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipO_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipPPVFEd-4fo1YBnNwaQ" type="3002" source="_ajils_VFEd-4fo1YBnNwaQ" target="_ajilz_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipPfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipPvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipP_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipQPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipQfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipQvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//FreeTypedID/type"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipQ_VFEd-4fo1YBnNwaQ" points="[0, 0, -141, 235]$[141, -235, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipRPVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipRfVFEd-4fo1YBnNwaQ" id="(0.2465753424657534,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipRvVFEd-4fo1YBnNwaQ" type="3002" source="_ajilwfVFEd-4fo1YBnNwaQ" target="_ajil3_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipR_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipSPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipSfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipSvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipS_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipTPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Type/type"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipTfVFEd-4fo1YBnNwaQ" points="[0, 0, -144, 60]$[144, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipTvVFEd-4fo1YBnNwaQ" id="(0.6643835616438356,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipT_VFEd-4fo1YBnNwaQ" id="(0.2549019607843137,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipUPVFEd-4fo1YBnNwaQ" type="3002" source="_ajil3_VFEd-4fo1YBnNwaQ" target="_ajil3_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipUfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipUvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipU_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipVPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipVfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipVvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//DataClass/base"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipV_VFEd-4fo1YBnNwaQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipWPVFEd-4fo1YBnNwaQ" type="3002" source="_ajil3_VFEd-4fo1YBnNwaQ" target="_ajios_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipWfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipWvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipW_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipXPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipXfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipXvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//DataClass/imports"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipX_VFEd-4fo1YBnNwaQ" points="[0, 0, 338, 60]$[-338, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipYPVFEd-4fo1YBnNwaQ" id="(0.19607843137254902,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipYfVFEd-4fo1YBnNwaQ" id="(0.9077669902912622,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipYvVFEd-4fo1YBnNwaQ" type="3002" source="_ajil3_VFEd-4fo1YBnNwaQ" target="_ajil6_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipY_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipZPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipZfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipZvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipZ_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipaPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//DataClass/attributes"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipafVFEd-4fo1YBnNwaQ" points="[-4, 41, 43, -460]$[-40, 435, 7, -66]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipavVFEd-4fo1YBnNwaQ" id="(0.39215686274509803,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipa_VFEd-4fo1YBnNwaQ" id="(0.5130434782608696,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipbPVFEd-4fo1YBnNwaQ" type="3002" source="_ajil3_VFEd-4fo1YBnNwaQ" target="_ajil-_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipbfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipbvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipb_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipcPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipcfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipcvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//DataClass/operations"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipc_VFEd-4fo1YBnNwaQ" points="[-25, 41, 267, -438]$[-262, 430, 30, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipdPVFEd-4fo1YBnNwaQ" id="(0.5980392156862745,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipdfVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipdvVFEd-4fo1YBnNwaQ" type="3003" source="_ajil3_VFEd-4fo1YBnNwaQ" target="_ajilX_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipd_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipePVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipefVFEd-4fo1YBnNwaQ" points="[0, 0, -558, 191]$[0, -118, -558, 73]$[558, -118, 0, 73]$[558, -191, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipevVFEd-4fo1YBnNwaQ" id="(0.7941176470588235,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipe_VFEd-4fo1YBnNwaQ" id="(0.24347826086956523,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipfPVFEd-4fo1YBnNwaQ" type="3002" source="_ajil6_VFEd-4fo1YBnNwaQ" target="_ajilwfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipffVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipfvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipf_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipgPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipgfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipgvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Attribute/type"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipg_VFEd-4fo1YBnNwaQ" points="[17, -66, -32, 125]$[36, -142, -13, 49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiphPVFEd-4fo1YBnNwaQ" id="(0.25217391304347825,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiphfVFEd-4fo1YBnNwaQ" id="(0.3287671232876712,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiphvVFEd-4fo1YBnNwaQ" type="3002" source="_ajil-_VFEd-4fo1YBnNwaQ" target="_ajils_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiph_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipiPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipifVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipivVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipi_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipjPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Operation/arguments"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipjfVFEd-4fo1YBnNwaQ" points="[0, 0, 149, 60]$[-149, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipjvVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipj_VFEd-4fo1YBnNwaQ" id="(0.4956521739130435,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipkPVFEd-4fo1YBnNwaQ" type="3002" source="_ajil-_VFEd-4fo1YBnNwaQ" target="_ajilz_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipkfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipkvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipk_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiplPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiplfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiplvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Operation/returntype"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipl_VFEd-4fo1YBnNwaQ" points="[0, 0, 0, 346]$[0, -346, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipmPVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipmfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipmvVFEd-4fo1YBnNwaQ" type="3002" source="_ajil-_VFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipm_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipnPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipnfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipnvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipn_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipoPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Operation/detailCode"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipofVFEd-4fo1YBnNwaQ" points="[0, 0, -2347, 60]$[2347, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipovVFEd-4fo1YBnNwaQ" id="(0.7478260869565218,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipo_VFEd-4fo1YBnNwaQ" id="(0.07482993197278912,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajippPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajimCfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajippfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajippvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipp_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipqPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipqfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipqvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/base"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipq_VFEd-4fo1YBnNwaQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiprPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiprfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiprvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipr_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipsPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipsfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipsvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/userCode1"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajips_VFEd-4fo1YBnNwaQ" points="[4, 41, -179, -1598]$[177, 1590, -6, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiptPVFEd-4fo1YBnNwaQ" id="(0.8725490196078431,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiptfVFEd-4fo1YBnNwaQ" id="(0.38095238095238093,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiptvVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipt_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipuPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipufVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipuvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipu_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipvPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/userCode2"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipvfVFEd-4fo1YBnNwaQ" points="[5, 41, -180, -1598]$[179, 1590, -6, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipvvVFEd-4fo1YBnNwaQ" id="(0.7450980392156863,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipv_VFEd-4fo1YBnNwaQ" id="(0.30612244897959184,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipwPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajimFfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipwfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipwvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipw_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipxPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipxfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajipxvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/incomingMessages"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajipx_VFEd-4fo1YBnNwaQ" points="[3, 41, 0, -193]$[3, 185, 0, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipyPVFEd-4fo1YBnNwaQ" id="(0.6176470588235294,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajipyfVFEd-4fo1YBnNwaQ" id="(0.6608695652173913,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajipyvVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajimFfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajipy_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipzPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajipzfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajipzvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajipz_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajip0PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/outgoingMessages"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajip0fVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 299]$[0, -299, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip0vVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip0_VFEd-4fo1YBnNwaQ" id="(0.4956521739130435,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajip1PVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajimI_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajip1fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip1vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajip1_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip2PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajip2fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajip2vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/regular"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajip2_VFEd-4fo1YBnNwaQ" points="[0, 0, 143, 68]$[-143, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip3PVFEd-4fo1YBnNwaQ" id="(0.39215686274509803,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip3fVFEd-4fo1YBnNwaQ" id="(0.6666666666666666,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajip3vVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajimI_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajip3_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip4PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajip4fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip4vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajip4_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajip5PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/conjugate"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajip5fVFEd-4fo1YBnNwaQ" points="[0, 0, 167, 68]$[-167, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip5vVFEd-4fo1YBnNwaQ" id="(0.29411764705882354,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip5_VFEd-4fo1YBnNwaQ" id="(0.3333333333333333,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajip6PVFEd-4fo1YBnNwaQ" type="3002" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajimO_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajip6fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip6vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajip6_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip7PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajip7fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajip7vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolClass/semantics"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajip7_VFEd-4fo1YBnNwaQ" points="[0, 0, 315, 68]$[-315, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip8PVFEd-4fo1YBnNwaQ" id="(0.19607843137254902,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip8fVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajip8vVFEd-4fo1YBnNwaQ" type="3003" source="_ajimCfVFEd-4fo1YBnNwaQ" target="_ajilX_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajip8_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajip9PVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajip9fVFEd-4fo1YBnNwaQ" points="[0, 0, -385, 191]$[0, -118, -385, 73]$[326, -118, -59, 73]$[326, -191, -59, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip9vVFEd-4fo1YBnNwaQ" id="(0.09803921568627451,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajip9_VFEd-4fo1YBnNwaQ" id="(0.7478260869565218,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajip-PVFEd-4fo1YBnNwaQ" type="3002" source="_ajimFfVFEd-4fo1YBnNwaQ" target="_ajilpfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajip-fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip-vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajip-_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajip_PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajip_fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajip_vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Message/arguments"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajip__VFEd-4fo1YBnNwaQ" points="[-13, -3, 263, 41]$[-220, -36, 56, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqAPVFEd-4fo1YBnNwaQ" id="(0.12173913043478261,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqAfVFEd-4fo1YBnNwaQ" id="(0.5130434782608696,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqAvVFEd-4fo1YBnNwaQ" type="3002" source="_ajimI_VFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqA_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqBPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqBfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqBvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqB_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqCPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//PortClass/userCode"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqCfVFEd-4fo1YBnNwaQ" points="[17, 41, -373, -883]$[369, 875, -21, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqCvVFEd-4fo1YBnNwaQ" id="(0.47058823529411764,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqC_VFEd-4fo1YBnNwaQ" id="(0.22448979591836735,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqDPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimI_VFEd-4fo1YBnNwaQ" target="_ajil6_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqDfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqDvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqD_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqEPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqEfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqEvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//PortClass/attributes"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqE_VFEd-4fo1YBnNwaQ" points="[0, 0, 2679, 60]$[-2679, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqFPVFEd-4fo1YBnNwaQ" id="(0.11764705882352941,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqFfVFEd-4fo1YBnNwaQ" id="(0.8347826086956521,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqFvVFEd-4fo1YBnNwaQ" type="3002" source="_ajimI_VFEd-4fo1YBnNwaQ" target="_ajil-_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqF_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqGPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqGfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqGvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqG_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqHPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//PortClass/operations"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqHfVFEd-4fo1YBnNwaQ" points="[0, 0, 309, 236]$[-309, -236, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqHvVFEd-4fo1YBnNwaQ" id="(0.23529411764705882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqH_VFEd-4fo1YBnNwaQ" id="(0.7478260869565218,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqIPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimI_VFEd-4fo1YBnNwaQ" target="_ajimL_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqIfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqIvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqI_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqJPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqJfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqJvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//PortClass/msgHandlers"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqJ_VFEd-4fo1YBnNwaQ" points="[0, 0, 163, 85]$[-163, -85, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqKPVFEd-4fo1YBnNwaQ" id="(0.35294117647058826,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqKfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqKvVFEd-4fo1YBnNwaQ" type="3002" source="_ajimL_VFEd-4fo1YBnNwaQ" target="_ajimFfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqK_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqLPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqLfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqLvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqL_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqMPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//MessageHandler/msg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqMfVFEd-4fo1YBnNwaQ" points="[0, 0, -354, 60]$[354, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqMvVFEd-4fo1YBnNwaQ" id="(0.3333333333333333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqM_VFEd-4fo1YBnNwaQ" id="(0.3652173913043478,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqNPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimL_VFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqNfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqNvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqN_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqOPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqOfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqOvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//MessageHandler/detailCode"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqO_VFEd-4fo1YBnNwaQ" points="[0, 0, -1303, 60]$[1303, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqPPVFEd-4fo1YBnNwaQ" id="(0.6666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqPfVFEd-4fo1YBnNwaQ" id="(0.14965986394557823,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqPvVFEd-4fo1YBnNwaQ" type="3002" source="_ajimO_VFEd-4fo1YBnNwaQ" target="_ajimR_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqP_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqQPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqQfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqQvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqQ_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqRPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ProtocolSemantics/rules"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqRfVFEd-4fo1YBnNwaQ" points="[-2, 41, 0, -100]$[-2, 100, 0, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqRvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqR_VFEd-4fo1YBnNwaQ" id="(0.75,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqSPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimR_VFEd-4fo1YBnNwaQ" target="_ajimFfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqSfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqSvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqS_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqTPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqTfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqTvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SemanticsRule/msg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqT_VFEd-4fo1YBnNwaQ" points="[0, 0, -492, 60]$[492, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqUPVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqUfVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqUvVFEd-4fo1YBnNwaQ" type="3002" source="_ajimR_VFEd-4fo1YBnNwaQ" target="_ajimR_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqU_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqVPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqVfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqVvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqV_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqWPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SemanticsRule/followUps"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqWfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqWvVFEd-4fo1YBnNwaQ" type="3003" source="_ajimU_VFEd-4fo1YBnNwaQ" target="_ajimR_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqW_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqXPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqXfVFEd-4fo1YBnNwaQ" points="[0, 0, -114, 114]$[0, -50, -114, 64]$[118, -50, 4, 64]$[118, -114, 4, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqXvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqX_VFEd-4fo1YBnNwaQ" id="(0.25,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqYPVFEd-4fo1YBnNwaQ" type="3003" source="_ajimX_VFEd-4fo1YBnNwaQ" target="_ajimR_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqYfVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqYvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqY_VFEd-4fo1YBnNwaQ" points="[3, 0, 8, 114]$[3, -114, 8, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqZPVFEd-4fo1YBnNwaQ" id="(0.496,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqZfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqZvVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajima_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqZ_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqaPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqafVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqavVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqa_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqbPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/base"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqbfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqbvVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajimg_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqb_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqcPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqcfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqcvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqc_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqdPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/ifPorts"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqdfVFEd-4fo1YBnNwaQ" points="[21, 12, -1154, -724]$[1161, 726, -14, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqdvVFEd-4fo1YBnNwaQ" id="(0.7941176470588235,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqd_VFEd-4fo1YBnNwaQ" id="(0.14814814814814814,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqePVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqefVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqevVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqe_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqfPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqffVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqfvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/userCode1"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqf_VFEd-4fo1YBnNwaQ" points="[0, 41, -7, -1288]$[7, 1280, 0, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqgPVFEd-4fo1YBnNwaQ" id="(0.6568627450980392,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqgfVFEd-4fo1YBnNwaQ" id="(0.5374149659863946,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqgvVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqg_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqhPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqhfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqhvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqh_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqiPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/userCode2"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqifVFEd-4fo1YBnNwaQ" points="[1, 41, -10, -1288]$[10, 1280, -1, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqivVFEd-4fo1YBnNwaQ" id="(0.5098039215686274,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqi_VFEd-4fo1YBnNwaQ" id="(0.4557823129251701,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqjPVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajimg_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqjfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqjvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqj_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqkPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqkfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqkvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/intPorts"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqk_VFEd-4fo1YBnNwaQ" points="[14, 8, -1205, -728]$[1154, 696, -65, -40]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqlPVFEd-4fo1YBnNwaQ" id="(0.8627450980392157,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqlfVFEd-4fo1YBnNwaQ" id="(0.654320987654321,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqlvVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajimj_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiql_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqmPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqmfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqmvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqm_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqnPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/extPorts"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqnfVFEd-4fo1YBnNwaQ" points="[28, 18, -1180, -793]$[1158, 777, -50, -34]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqnvVFEd-4fo1YBnNwaQ" id="(0.7254901960784313,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqn_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqoPVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajims_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqofVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqovVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqo_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqpPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqpfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqpvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/serviceImplementations"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqp_VFEd-4fo1YBnNwaQ" points="[36, 41, -571, -650]$[570, 650, -37, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqqPVFEd-4fo1YBnNwaQ" id="(0.43137254901960786,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqqfVFEd-4fo1YBnNwaQ" id="(0.49673202614379086,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqqvVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajimm_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqq_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqrPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqrfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqrvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqr_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqsPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/strSAPs"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqsfVFEd-4fo1YBnNwaQ" points="[0, 0, -163, 68]$[163, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqsvVFEd-4fo1YBnNwaQ" id="(0.5882352941176471,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqs_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqtPVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajil6_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqtfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqtvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqt_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiquPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqufVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiquvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/attributes"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqu_VFEd-4fo1YBnNwaQ" points="[-7, 2, 510, -189]$[-479, 177, 38, -14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqvPVFEd-4fo1YBnNwaQ" id="(0.0392156862745098,0.627906976744186)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqvfVFEd-4fo1YBnNwaQ" id="(0.6695652173913044,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqvvVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajil-_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqv_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqwPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqwfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqwvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqw_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqxPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/operations"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqxfVFEd-4fo1YBnNwaQ" points="[-34, 7, 724, -162]$[-701, 156, 57, -13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqxvVFEd-4fo1YBnNwaQ" id="(0.3431372549019608,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiqx_VFEd-4fo1YBnNwaQ" id="(0.4956521739130435,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiqyPVFEd-4fo1YBnNwaQ" type="3002" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajinkfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiqyfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqyvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiqy_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiqzPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiqzfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiqzvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorClass/stateMachine"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiqz_VFEd-4fo1YBnNwaQ" points="[7, 16, -369, -870]$[359, 845, -17, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq0PVFEd-4fo1YBnNwaQ" id="(0.9313725490196079,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq0fVFEd-4fo1YBnNwaQ" id="(0.24509803921568626,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiq0vVFEd-4fo1YBnNwaQ" type="3003" source="_ajima_VFEd-4fo1YBnNwaQ" target="_ajilefVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiq0_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiq1PVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiq1fVFEd-4fo1YBnNwaQ" points="[0, 0, -185, 174]$[0, -87, -185, 87]$[133, -87, -52, 87]$[133, -174, -52, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq1vVFEd-4fo1YBnNwaQ" id="(0.16666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq1_VFEd-4fo1YBnNwaQ" id="(0.7463768115942029,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiq2PVFEd-4fo1YBnNwaQ" type="3002" source="_ajimd_VFEd-4fo1YBnNwaQ" target="_ajimCfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiq2fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiq2vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiq2_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiq3PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiq3fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiq3vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//InterfaceItem/protocol"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiq3_VFEd-4fo1YBnNwaQ" points="[0, 0, 722, 60]$[-722, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq4PVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq4fVFEd-4fo1YBnNwaQ" id="(0.6666666666666666,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiq4vVFEd-4fo1YBnNwaQ" type="3003" source="_ajimg_VFEd-4fo1YBnNwaQ" target="_ajimd_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiq4_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiq5PVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiq5fVFEd-4fo1YBnNwaQ" points="[8, -66, 211, 225]$[8, -182, 211, 109]$[-198, -182, 5, 109]$[-198, -242, 5, 49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq5vVFEd-4fo1YBnNwaQ" id="(0.1111111111111111,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq5_VFEd-4fo1YBnNwaQ" id="(0.7478260869565218,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiq6PVFEd-4fo1YBnNwaQ" type="3002" source="_ajimj_VFEd-4fo1YBnNwaQ" target="_ajimg_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiq6fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiq6vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiq6_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiq7PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiq7fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiq7vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ExternalPort/ifport"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiq7_VFEd-4fo1YBnNwaQ" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq8PVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq8fVFEd-4fo1YBnNwaQ" id="(0.3148148148148148,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiq8vVFEd-4fo1YBnNwaQ" type="3003" source="_ajimm_VFEd-4fo1YBnNwaQ" target="_ajimd_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiq8_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiq9PVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiq9fVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq9vVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq9_VFEd-4fo1YBnNwaQ" id="(0.4434782608695652,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiq-PVFEd-4fo1YBnNwaQ" type="3003" source="_ajimp_VFEd-4fo1YBnNwaQ" target="_ajimd_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiq-fVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiq-vVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiq-_VFEd-4fo1YBnNwaQ" points="[-28, -41, -238, 130]$[-28, -77, -238, 94]$[240, -77, 30, 94]$[240, -122, 30, 49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq_PVFEd-4fo1YBnNwaQ" id="(0.8235294117647058,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiq_fVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiq_vVFEd-4fo1YBnNwaQ" type="3002" source="_ajims_VFEd-4fo1YBnNwaQ" target="_ajimp_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajiq__VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirAPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirAfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirAvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirA_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirBPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ServiceImplementation/spp"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirBfVFEd-4fo1YBnNwaQ" points="[0, 0, 114, 85]$[-113, -61, 1, 24]$[-114, -85, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirBvVFEd-4fo1YBnNwaQ" id="(0.49673202614379086,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirB_VFEd-4fo1YBnNwaQ" id="(0.6666666666666666,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirCPVFEd-4fo1YBnNwaQ" type="3002" source="_ajimv_VFEd-4fo1YBnNwaQ" target="_ajim2fVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirCfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirCvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirC_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirDPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirDfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirDvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//LogicalSystem/subSystems"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirD_VFEd-4fo1YBnNwaQ" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirEPVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirEfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirEvVFEd-4fo1YBnNwaQ" type="3003" source="_ajimv_VFEd-4fo1YBnNwaQ" target="_ajilbfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirE_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirFPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirFfVFEd-4fo1YBnNwaQ" points="[27, 0, 144, 109]$[27, -50, 144, 59]$[-86, -50, 31, 59]$[-86, -109, 31, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirFvVFEd-4fo1YBnNwaQ" id="(0.25,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirF_VFEd-4fo1YBnNwaQ" id="(0.3300970873786408,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirGPVFEd-4fo1YBnNwaQ" type="3002" source="_ajim2fVFEd-4fo1YBnNwaQ" target="_ajim5fVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirGfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirGvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirG_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirHPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirHfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirHvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SubSystemRef/type"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirH_VFEd-4fo1YBnNwaQ" points="[0, 0, -284, 60]$[284, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirIPVFEd-4fo1YBnNwaQ" id="(0.6634615384615384,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirIfVFEd-4fo1YBnNwaQ" id="(0.24561403508771928,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirIvVFEd-4fo1YBnNwaQ" type="3003" source="_ajim2fVFEd-4fo1YBnNwaQ" target="_ajimy_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirI_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirJPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirJfVFEd-4fo1YBnNwaQ" points="[3, 0, -91, 246]$[3, -100, -91, 146]$[83, -100, -11, 146]$[83, -246, -11, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirJvVFEd-4fo1YBnNwaQ" id="(0.3269230769230769,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirJ_VFEd-4fo1YBnNwaQ" id="(0.2578125,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirKPVFEd-4fo1YBnNwaQ" type="3002" source="_ajim5fVFEd-4fo1YBnNwaQ" target="_ajimg_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirKfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirKvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirK_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirLPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirLfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirLvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SubSystemClass/relayPorts"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirL_VFEd-4fo1YBnNwaQ" points="[29, 20, -1005, -716]$[1027, 730, -7, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirMPVFEd-4fo1YBnNwaQ" id="(0.7456140350877193,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirMfVFEd-4fo1YBnNwaQ" id="(0.07407407407407407,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirMvVFEd-4fo1YBnNwaQ" type="3002" source="_ajim5fVFEd-4fo1YBnNwaQ" target="_ajim8fVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirM_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirNPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirNfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirNvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirN_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirOPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SubSystemClass/threads"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirOfVFEd-4fo1YBnNwaQ" points="[0, 0, 502, 60]$[-502, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirOvVFEd-4fo1YBnNwaQ" id="(0.24561403508771928,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirO_VFEd-4fo1YBnNwaQ" id="(0.4956521739130435,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirPPVFEd-4fo1YBnNwaQ" type="3003" source="_ajim5fVFEd-4fo1YBnNwaQ" target="_ajilefVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirPfVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirPvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirP_VFEd-4fo1YBnNwaQ" points="[-2, 0, 16, 174]$[-2, -174, 16, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirQPVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirQfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirQvVFEd-4fo1YBnNwaQ" type="3002" source="_ajim8fVFEd-4fo1YBnNwaQ" target="_ajim__VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirQ_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirRPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirRfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirRvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirR_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirSPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//LogicalThread/instances"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirSfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirSvVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirS_VFEd-4fo1YBnNwaQ" id="(0.41007194244604317,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirTPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinDfVFEd-4fo1YBnNwaQ" target="_ajinGfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirTfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirTvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirT_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirUPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirUfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirUvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Binding/endpoint1"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirU_VFEd-4fo1YBnNwaQ" points="[0, 0, 0, 68]$[0, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirVPVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirVfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirVvVFEd-4fo1YBnNwaQ" type="3002" source="_ajinDfVFEd-4fo1YBnNwaQ" target="_ajinGfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirV_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirWPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirWfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirWvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirW_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirXPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Binding/endpoint2"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirXfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 68]$[0, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirXvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirX_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirYPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinGfVFEd-4fo1YBnNwaQ" target="_ajimy_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirYfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirYvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirY_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirZPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirZfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirZvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//BindingEndPoint/actorRef"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirZ_VFEd-4fo1YBnNwaQ" points="[0, 0, 1428, 77]$[-1428, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiraPVFEd-4fo1YBnNwaQ" id="(0.3275862068965517,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirafVFEd-4fo1YBnNwaQ" id="(0.828125,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiravVFEd-4fo1YBnNwaQ" type="3002" source="_ajinGfVFEd-4fo1YBnNwaQ" target="_ajimg_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajira_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirbPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirbfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirbvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirb_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajircPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//BindingEndPoint/port"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajircfVFEd-4fo1YBnNwaQ" points="[0, 0, -2572, 60]$[2572, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajircvVFEd-4fo1YBnNwaQ" id="(0.6637931034482759,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirc_VFEd-4fo1YBnNwaQ" id="(0.037037037037037035,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirdPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinJfVFEd-4fo1YBnNwaQ" target="_ajinMfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirdfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirdvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajird_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirePVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirefVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirevVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//LayerConnection/from"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajire_VFEd-4fo1YBnNwaQ" points="[0, 1, -16, -210]$[13, 170, -3, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirfPVFEd-4fo1YBnNwaQ" id="(0.7203389830508474,0.9767441860465116)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirffVFEd-4fo1YBnNwaQ" id="(0.24509803921568626,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirfvVFEd-4fo1YBnNwaQ" type="3002" source="_ajinJfVFEd-4fo1YBnNwaQ" target="_ajinVfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirf_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirgPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirgfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirgvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirg_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirhPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//LayerConnection/to"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirhfVFEd-4fo1YBnNwaQ" points="[0, 0, -295, 68]$[295, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirhvVFEd-4fo1YBnNwaQ" id="(0.6610169491525424,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirh_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiriPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinPfVFEd-4fo1YBnNwaQ" target="_ajimy_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirifVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirivVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajiri_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirjPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirjfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirjvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RefSAPoint/ref"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirj_VFEd-4fo1YBnNwaQ" points="[0, 0, -235, 77]$[235, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirkPVFEd-4fo1YBnNwaQ" id="(0.7450980392156863,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirkfVFEd-4fo1YBnNwaQ" id="(0.125,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirkvVFEd-4fo1YBnNwaQ" type="3003" source="_ajinPfVFEd-4fo1YBnNwaQ" target="_ajinMfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirk_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirlPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirlfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 85]$[0, -85, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirlvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirl_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirmPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinSfVFEd-4fo1YBnNwaQ" target="_ajimp_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirmfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirmvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirm_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirnPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirnfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirnvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RelaySAPoint/relay"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirn_VFEd-4fo1YBnNwaQ" points="[-58, 41, 457, -320]$[-456, 320, 59, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiroPVFEd-4fo1YBnNwaQ" id="(0.6666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirofVFEd-4fo1YBnNwaQ" id="(0.16666666666666666,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirovVFEd-4fo1YBnNwaQ" type="3003" source="_ajinSfVFEd-4fo1YBnNwaQ" target="_ajinMfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiro_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirpPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirpfVFEd-4fo1YBnNwaQ" points="[0, 0, 363, 85]$[0, -30, 363, 55]$[-363, -30, 0, 55]$[-363, -85, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirpvVFEd-4fo1YBnNwaQ" id="(0.3333333333333333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirp_VFEd-4fo1YBnNwaQ" id="(0.7450980392156863,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirqPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinVfVFEd-4fo1YBnNwaQ" target="_ajimy_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirqfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirqvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirq_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirrPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirrfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirrvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SPPoint/ref"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirr_VFEd-4fo1YBnNwaQ" points="[0, 0, 221, 77]$[-221, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirsPVFEd-4fo1YBnNwaQ" id="(0.3333333333333333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirsfVFEd-4fo1YBnNwaQ" id="(0.6640625,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirsvVFEd-4fo1YBnNwaQ" type="3002" source="_ajinVfVFEd-4fo1YBnNwaQ" target="_ajimp_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirs_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirtPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirtfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirtvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirt_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiruPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SPPoint/service"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirufVFEd-4fo1YBnNwaQ" points="[-18, 41, 195, -435]$[-195, 435, 18, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiruvVFEd-4fo1YBnNwaQ" id="(0.6666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiru_VFEd-4fo1YBnNwaQ" id="(0.3333333333333333,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirvPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinYfVFEd-4fo1YBnNwaQ" target="_ajima_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajirvfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirvvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajirv_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajirwPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirwfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirwvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ActorRef/type"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirw_VFEd-4fo1YBnNwaQ" points="[-74, -30, 750, 301]$[-749, -302, 75, 29]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirxPVFEd-4fo1YBnNwaQ" id="(0.7450980392156863,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajirxfVFEd-4fo1YBnNwaQ" id="(0.2549019607843137,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirxvVFEd-4fo1YBnNwaQ" type="3003" source="_ajinYfVFEd-4fo1YBnNwaQ" target="_ajimy_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirx_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiryPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajiryfVFEd-4fo1YBnNwaQ" points="[0, 0, 42, 241]$[0, -95, 42, 146]$[-42, -95, 0, 146]$[-42, -241, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiryvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiry_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajirzPVFEd-4fo1YBnNwaQ" type="3003" source="_ajinbfVFEd-4fo1YBnNwaQ" target="_ajinefVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajirzfVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajirzvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajirz_VFEd-4fo1YBnNwaQ" points="[0, 0, -1406, 334]$[0, -211, -1406, 123]$[1341, -211, -65, 123]$[1341, -334, -65, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir0PVFEd-4fo1YBnNwaQ" id="(0.4957983193277311,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir0fVFEd-4fo1YBnNwaQ" id="(0.75,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajir0vVFEd-4fo1YBnNwaQ" type="3002" source="_ajinhfVFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajir0_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir1PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajir1fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir1vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajir1_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajir2PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//State/entryCode"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajir2fVFEd-4fo1YBnNwaQ" points="[0, 0, -1056, 256]$[989, -90, -67, 166]$[1056, -256, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir2vVFEd-4fo1YBnNwaQ" id="(0.16666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir2_VFEd-4fo1YBnNwaQ" id="(0.8435374149659864,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajir3PVFEd-4fo1YBnNwaQ" type="3002" source="_ajinhfVFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajir3fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir3vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajir3_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir4PVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajir4fVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajir4vVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//State/exitCode"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajir4_VFEd-4fo1YBnNwaQ" points="[0, 0, -1050, 256]$[1050, -256, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir5PVFEd-4fo1YBnNwaQ" id="(0.3333333333333333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir5fVFEd-4fo1YBnNwaQ" id="(0.9183673469387755,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajir5vVFEd-4fo1YBnNwaQ" type="3002" source="_ajinhfVFEd-4fo1YBnNwaQ" target="_ajinkfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajir5_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir6PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajir6fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir6vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajir6_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajir7PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//State/subgraph"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajir7fVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 68]$[0, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir7vVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir7_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajir8PVFEd-4fo1YBnNwaQ" type="3003" source="_ajinhfVFEd-4fo1YBnNwaQ" target="_ajinbfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajir8fVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajir8vVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajir8_VFEd-4fo1YBnNwaQ" points="[0, 0, -14, 184]$[0, -184, -14, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir9PVFEd-4fo1YBnNwaQ" id="(0.7450980392156863,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir9fVFEd-4fo1YBnNwaQ" id="(0.4957983193277311,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajir9vVFEd-4fo1YBnNwaQ" type="3002" source="_ajinkfVFEd-4fo1YBnNwaQ" target="_ajinhfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajir9_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir-PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajir-fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajir-vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajir-_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajir_PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//StateGraph/states"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajir_fVFEd-4fo1YBnNwaQ" points="[0, 0, 0, -68]$[0, 68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir_vVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajir__VFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisAPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinkfVFEd-4fo1YBnNwaQ" target="_ajinx_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisAfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisAvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisA_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisBPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisBfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisBvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//StateGraph/trPoints"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisB_VFEd-4fo1YBnNwaQ" points="[0, 0, -280, 77]$[280, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisCPVFEd-4fo1YBnNwaQ" id="(0.7450980392156863,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisCfVFEd-4fo1YBnNwaQ" id="(0.1565217391304348,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisCvVFEd-4fo1YBnNwaQ" type="3002" source="_ajinkfVFEd-4fo1YBnNwaQ" target="_ajin-_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisC_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisDPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisDfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisDvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisD_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisEPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//StateGraph/chPoints"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisEfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 77]$[0, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisEvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisE_VFEd-4fo1YBnNwaQ" id="(0.8260869565217391,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisFPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinkfVFEd-4fo1YBnNwaQ" target="_ajioCfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisFfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisFvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisF_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisGPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisGfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisGvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//StateGraph/transitions"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisG_VFEd-4fo1YBnNwaQ" points="[5, 41, -66, -562]$[65, 554, -6, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisHPVFEd-4fo1YBnNwaQ" id="(0.24509803921568626,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisHfVFEd-4fo1YBnNwaQ" id="(0.7478260869565218,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisHvVFEd-4fo1YBnNwaQ" type="3003" source="_ajinnfVFEd-4fo1YBnNwaQ" target="_ajinhfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisH_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisIPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisIfVFEd-4fo1YBnNwaQ" points="[0, 0, -178, 60]$[0, -30, -178, 30]$[178, -30, 0, 30]$[178, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisIvVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisI_VFEd-4fo1YBnNwaQ" id="(0.3333333333333333,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisJPVFEd-4fo1YBnNwaQ" type="3002" source="_ajinq_VFEd-4fo1YBnNwaQ" target="_ajinnfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisJfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisJvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisJ_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisKPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisKfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisKvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//RefinedState/base"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisK_VFEd-4fo1YBnNwaQ" points="[0, 0, 46, 60]$[-46, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisLPVFEd-4fo1YBnNwaQ" id="(0.2482758620689655,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisLfVFEd-4fo1YBnNwaQ" id="(0.7478260869565218,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisLvVFEd-4fo1YBnNwaQ" type="3003" source="_ajinq_VFEd-4fo1YBnNwaQ" target="_ajinhfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisL_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisMPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisMfVFEd-4fo1YBnNwaQ" points="[0, 0, -101, 171]$[0, -141, -101, 30]$[101, -141, 0, 30]$[101, -171, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisMvVFEd-4fo1YBnNwaQ" id="(0.496551724137931,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisM_VFEd-4fo1YBnNwaQ" id="(0.6666666666666666,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisNPVFEd-4fo1YBnNwaQ" type="3003" source="_ajinx_VFEd-4fo1YBnNwaQ" target="_ajinbfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisNfVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisNvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisN_VFEd-4fo1YBnNwaQ" points="[0, 0, 218, 68]$[0, -30, 218, 38]$[-218, -30, 0, 38]$[-218, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisOPVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisOfVFEd-4fo1YBnNwaQ" id="(0.7478991596638656,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisOvVFEd-4fo1YBnNwaQ" type="3003" source="_ajin1fVFEd-4fo1YBnNwaQ" target="_ajinx_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisO_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisPPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisPfVFEd-4fo1YBnNwaQ" points="[0, 0, -129, 121]$[0, -61, -129, 60]$[129, -61, 0, 60]$[129, -121, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisPvVFEd-4fo1YBnNwaQ" id="(0.49645390070921985,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisP_VFEd-4fo1YBnNwaQ" id="(0.6086956521739131,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisQPVFEd-4fo1YBnNwaQ" type="3003" source="_ajin4_VFEd-4fo1YBnNwaQ" target="_ajinx_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisQfVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisQvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisQ_VFEd-4fo1YBnNwaQ" points="[-16, 0, 1, 126]$[-16, -126, 1, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisRPVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisRfVFEd-4fo1YBnNwaQ" id="(0.7391304347826086,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisRvVFEd-4fo1YBnNwaQ" type="3003" source="_ajin7_VFEd-4fo1YBnNwaQ" target="_ajinx_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisR_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisSPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisSfVFEd-4fo1YBnNwaQ" points="[0, 0, 162, 131]$[0, -67, 162, 64]$[-162, -67, 0, 64]$[-162, -131, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisSvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisS_VFEd-4fo1YBnNwaQ" id="(0.8695652173913043,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisTPVFEd-4fo1YBnNwaQ" type="3003" source="_ajin-_VFEd-4fo1YBnNwaQ" target="_ajinbfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisTfVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisTvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisT_VFEd-4fo1YBnNwaQ" points="[0, 0, -104, 68]$[0, -30, -104, 38]$[104, -30, 0, 38]$[104, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisUPVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisUfVFEd-4fo1YBnNwaQ" id="(0.24369747899159663,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisUvVFEd-4fo1YBnNwaQ" type="3002" source="_ajioCfVFEd-4fo1YBnNwaQ" target="_ajioU_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisU_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisVPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisVfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisVvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisV_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisWPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Transition/to"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisWfVFEd-4fo1YBnNwaQ" points="[0, 0, -890, 68]$[890, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisWvVFEd-4fo1YBnNwaQ" id="(0.7478260869565218,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisW_VFEd-4fo1YBnNwaQ" id="(0.12403100775193798,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisXPVFEd-4fo1YBnNwaQ" type="3002" source="_ajioCfVFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisXfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisXvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisX_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisYPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisYfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisYvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Transition/action"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisY_VFEd-4fo1YBnNwaQ" points="[0, 0, 725, 60]$[-725, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisZPVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisZfVFEd-4fo1YBnNwaQ" id="(0.7687074829931972,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisZvVFEd-4fo1YBnNwaQ" type="3003" source="_ajioCfVFEd-4fo1YBnNwaQ" target="_ajinefVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisZ_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisaPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisafVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 371]$[0, -371, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisavVFEd-4fo1YBnNwaQ" id="(0.4956521739130435,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisa_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisbPVFEd-4fo1YBnNwaQ" type="3002" source="_ajioF_VFEd-4fo1YBnNwaQ" target="_ajioU_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisbfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisbvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisb_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiscPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiscfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiscvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//NonInitialTransition/from"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisc_VFEd-4fo1YBnNwaQ" points="[-27, 41, 161, -248]$[-161, 248, 27, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisdPVFEd-4fo1YBnNwaQ" id="(0.8955223880597015,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisdfVFEd-4fo1YBnNwaQ" id="(0.24806201550387597,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisdvVFEd-4fo1YBnNwaQ" type="3003" source="_ajioF_VFEd-4fo1YBnNwaQ" target="_ajioCfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisd_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisePVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisefVFEd-4fo1YBnNwaQ" points="[0, 0, 73, 77]$[0, -30, 73, 47]$[-73, -30, 0, 47]$[-73, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisevVFEd-4fo1YBnNwaQ" id="(0.44776119402985076,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajise_VFEd-4fo1YBnNwaQ" id="(0.4956521739130435,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisfPVFEd-4fo1YBnNwaQ" type="3003" source="_ajioI_VFEd-4fo1YBnNwaQ" target="_ajioCfVFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisffVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisfvVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisf_VFEd-4fo1YBnNwaQ" points="[0, 0, -279, 77]$[0, -30, -279, 47]$[279, -30, 0, 47]$[279, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisgPVFEd-4fo1YBnNwaQ" id="(0.4954128440366973,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisgfVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisgvVFEd-4fo1YBnNwaQ" type="3003" source="_ajioL_VFEd-4fo1YBnNwaQ" target="_ajioF_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisg_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajishPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajishfVFEd-4fo1YBnNwaQ" points="[0, 0, 0, 68]$[0, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajishvVFEd-4fo1YBnNwaQ" id="(0.4342105263157895,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajish_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisiPVFEd-4fo1YBnNwaQ" type="3002" source="_ajioO_VFEd-4fo1YBnNwaQ" target="_ajioj_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisifVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisivVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisi_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisjPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisjfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisjvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//TriggeredTransition/triggers"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisj_VFEd-4fo1YBnNwaQ" points="[0, 0, 924, 60]$[-924, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiskPVFEd-4fo1YBnNwaQ" id="(0.24817518248175183,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiskfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiskvVFEd-4fo1YBnNwaQ" type="3003" source="_ajioO_VFEd-4fo1YBnNwaQ" target="_ajioF_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisk_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajislPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajislfVFEd-4fo1YBnNwaQ" points="[-38, 0, 225, 77]$[-38, -46, 225, 31]$[-192, -46, 71, 31]$[-192, -77, 71, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajislvVFEd-4fo1YBnNwaQ" id="(0.49635036496350365,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisl_VFEd-4fo1YBnNwaQ" id="(0.3283582089552239,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajismPVFEd-4fo1YBnNwaQ" type="3002" source="_ajioR_VFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajismfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajismvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajism_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisnPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisnfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisnvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//CPBranchTransition/condition"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisn_VFEd-4fo1YBnNwaQ" points="[0, 0, 252, 309]$[-252, -309, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisoPVFEd-4fo1YBnNwaQ" id="(0.3308270676691729,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisofVFEd-4fo1YBnNwaQ" id="(0.6870748299319728,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisovVFEd-4fo1YBnNwaQ" type="3003" source="_ajioR_VFEd-4fo1YBnNwaQ" target="_ajioF_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiso_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajispPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajispfVFEd-4fo1YBnNwaQ" points="[0, 0, -157, 68]$[0, -30, -157, 38]$[157, -30, 0, 38]$[157, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajispvVFEd-4fo1YBnNwaQ" id="(0.6616541353383458,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisp_VFEd-4fo1YBnNwaQ" id="(0.16417910447761194,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisqPVFEd-4fo1YBnNwaQ" type="3002" source="_ajioX_VFEd-4fo1YBnNwaQ" target="_ajinnfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisqfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisqvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisq_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisrPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisrfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisrvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//StateTerminal/state"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisr_VFEd-4fo1YBnNwaQ" points="[0, 0, -250, 60]$[250, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajissPVFEd-4fo1YBnNwaQ" id="(0.6666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajissfVFEd-4fo1YBnNwaQ" id="(0.24347826086956523,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajissvVFEd-4fo1YBnNwaQ" type="3003" source="_ajioX_VFEd-4fo1YBnNwaQ" target="_ajioU_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiss_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajistPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajistfVFEd-4fo1YBnNwaQ" points="[20, 0, -235, 201]$[20, -156, -235, 45]$[234, -156, -21, 45]$[234, -201, -21, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajistvVFEd-4fo1YBnNwaQ" id="(0.3333333333333333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajist_VFEd-4fo1YBnNwaQ" id="(0.37209302325581395,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisuPVFEd-4fo1YBnNwaQ" type="3002" source="_ajioa_VFEd-4fo1YBnNwaQ" target="_ajinx_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisufVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisuvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisu_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisvPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisvfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisvvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//TrPointTerminal/trPoint"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisv_VFEd-4fo1YBnNwaQ" points="[0, 0, -107, 77]$[107, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiswPVFEd-4fo1YBnNwaQ" id="(0.6637168141592921,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajiswfVFEd-4fo1YBnNwaQ" id="(0.3217391304347826,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajiswvVFEd-4fo1YBnNwaQ" type="3003" source="_ajioa_VFEd-4fo1YBnNwaQ" target="_ajioU_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajisw_VFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajisxPVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisxfVFEd-4fo1YBnNwaQ" points="[24, 0, 229, 196]$[24, -158, 229, 38]$[-251, -158, -46, 38]$[-251, -196, -46, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisxvVFEd-4fo1YBnNwaQ" id="(0.3274336283185841,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajisx_VFEd-4fo1YBnNwaQ" id="(0.8294573643410853,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajisyPVFEd-4fo1YBnNwaQ" type="3002" source="_ajiod_VFEd-4fo1YBnNwaQ" target="_ajinx_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajisyfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajisyvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajisy_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajiszPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajiszfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajiszvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SubStateTrPointTerminal/trPoint"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajisz_VFEd-4fo1YBnNwaQ" points="[0, 0, 1003, 385]$[-1003, -385, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis0PVFEd-4fo1YBnNwaQ" id="(0.8292682926829268,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis0fVFEd-4fo1YBnNwaQ" id="(0.48695652173913045,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajis0vVFEd-4fo1YBnNwaQ" type="3002" source="_ajiod_VFEd-4fo1YBnNwaQ" target="_ajinnfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajis0_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajis1PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajis1fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajis1vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajis1_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajis2PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//SubStateTrPointTerminal/state"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajis2fVFEd-4fo1YBnNwaQ" points="[0, 0, -76, 60]$[76, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis2vVFEd-4fo1YBnNwaQ" id="(0.6646341463414634,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis2_VFEd-4fo1YBnNwaQ" id="(0.4956521739130435,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajis3PVFEd-4fo1YBnNwaQ" type="3003" source="_ajiod_VFEd-4fo1YBnNwaQ" target="_ajioU_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajis3fVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajis3vVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajis3_VFEd-4fo1YBnNwaQ" points="[0, 0, 0, 521]$[0, -521, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis4PVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis4fVFEd-4fo1YBnNwaQ" id="(0.49612403100775193,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajis4vVFEd-4fo1YBnNwaQ" type="3002" source="_ajiog_VFEd-4fo1YBnNwaQ" target="_ajin-_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajis4_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajis5PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajis5fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajis5vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajis5_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajis6PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//ChoicepointTerminal/cp"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajis6fVFEd-4fo1YBnNwaQ" points="[0, 0, -128, 77]$[128, -77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis6vVFEd-4fo1YBnNwaQ" id="(0.5390070921985816,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis6_VFEd-4fo1YBnNwaQ" id="(0.40869565217391307,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajis7PVFEd-4fo1YBnNwaQ" type="3003" source="_ajiog_VFEd-4fo1YBnNwaQ" target="_ajioU_VFEd-4fo1YBnNwaQ">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajis7fVFEd-4fo1YBnNwaQ" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajis7vVFEd-4fo1YBnNwaQ" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajis7_VFEd-4fo1YBnNwaQ" points="[0, 0, 37, 196]$[0, -158, 37, 38]$[-37, -158, 0, 38]$[-37, -196, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis8PVFEd-4fo1YBnNwaQ" id="(0.0851063829787234,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis8fVFEd-4fo1YBnNwaQ" id="(0.6589147286821705,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajis8vVFEd-4fo1YBnNwaQ" type="3002" source="_ajioj_VFEd-4fo1YBnNwaQ" target="_ajiom_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajis8_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajis9PVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajis9fVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajis9vVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajis9_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajis-PVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Trigger/msgFromIfPairs"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajis-fVFEd-4fo1YBnNwaQ" points="[0, 0, 256, 68]$[-256, -68, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis-vVFEd-4fo1YBnNwaQ" id="(0.24509803921568626,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajis-_VFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajis_PVFEd-4fo1YBnNwaQ" type="3002" source="_ajioj_VFEd-4fo1YBnNwaQ" target="_ajiop_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajis_fVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajis_vVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajis__VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajitAPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajitAfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajitAvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Trigger/guard"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajitA_VFEd-4fo1YBnNwaQ" points="[0, 0, -311, 139]$[311, -139, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitBPVFEd-4fo1YBnNwaQ" id="(0.49019607843137253,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitBfVFEd-4fo1YBnNwaQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajitBvVFEd-4fo1YBnNwaQ" type="3002" source="_ajiom_VFEd-4fo1YBnNwaQ" target="_ajimFfVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajitB_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajitCPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajitCfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajitCvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajitC_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajitDPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//MessageFromIf/message"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajitDfVFEd-4fo1YBnNwaQ" points="[0, 0, 86, 1646]$[138, -253, 224, 1393]$[-86, -1646, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitDvVFEd-4fo1YBnNwaQ" id="(0.26785714285714285,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitD_VFEd-4fo1YBnNwaQ" id="(0.8260869565217391,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajitEPVFEd-4fo1YBnNwaQ" type="3002" source="_ajiom_VFEd-4fo1YBnNwaQ" target="_ajimd_VFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajitEfVFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajitEvVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajitE_VFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajitFPVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajitFfVFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajitFvVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//MessageFromIf/from"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajitF_VFEd-4fo1YBnNwaQ" points="[0, 0, 450, 60]$[-450, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitGPVFEd-4fo1YBnNwaQ" id="(0.13392857142857142,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitGfVFEd-4fo1YBnNwaQ" id="(0.7217391304347827,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ajitGvVFEd-4fo1YBnNwaQ" type="3002" source="_ajiop_VFEd-4fo1YBnNwaQ" target="_ajinufVFEd-4fo1YBnNwaQ">
+ <children xmi:type="notation:Node" xmi:id="_ajitG_VFEd-4fo1YBnNwaQ" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajitHPVFEd-4fo1YBnNwaQ" x="-10" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ajitHfVFEd-4fo1YBnNwaQ" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ajitHvVFEd-4fo1YBnNwaQ" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ajitH_VFEd-4fo1YBnNwaQ" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ajitIPVFEd-4fo1YBnNwaQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="../../../src-gen/de/protos/Room.ecore#//Guard/guard"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajitIfVFEd-4fo1YBnNwaQ" points="[0, 0, 192, 60]$[-192, -60, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitIvVFEd-4fo1YBnNwaQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajitI_VFEd-4fo1YBnNwaQ" id="(0.6122448979591837,1.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.properties b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.properties
new file mode 100644
index 000000000..8b01fc0dd
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.properties
@@ -0,0 +1,3 @@
+grammarURI=classpath:/org/eclipse/etrice/core/Room.xtext
+file.extensions=room
+projectName=org.eclipse.etrice.core.room
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.xtext b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.xtext
new file mode 100644
index 000000000..c2126f7b3
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.xtext
@@ -0,0 +1,376 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+/**
+ * @author Henrik Rentz-Reichert and Thomas Schuetz
+ *
+ * XText Grammar for ROOM models
+ * this grammar is the base for the ROOM tool eTrice
+ *
+ */
+
+grammar org.eclipse.etrice.core.Room with org.eclipse.xtext.common.Terminals
+
+generate room "http://www.eclipse.org/etrice/Room"
+
+RoomModel :
+'RoomModel' name=FQN '{'
+ (imports+=Import)*
+ (
+ dataClasses+=DataClass |
+ protocolClasses+=ProtocolClass |
+ actorClasses+=ActorClass |
+ subSystemClasses+=SubSystemClass |
+ systems+=LogicalSystem
+ )+
+ '}'
+;
+
+RoomClass: DataClass | ProtocolClass | StructureClass;
+StructureClass: ActorContainerClass | LogicalSystem;
+ActorContainerClass: ActorClass | SubSystemClass;
+
+// **************************************************************
+// data class
+
+// cf. decision DSL2: fixed size data types
+// convert appropriately for Java and issue an error if size not available
+enum PrimitiveType:
+ void = 'void' |
+ int8 = 'int8' |
+ int16 = 'int16' |
+ int32 = 'int32' |
+ uint8 = 'uint8' |
+ uint16 = 'uint16' |
+ uint32 = 'uint32' |
+ float32 = 'float32' |
+ float64 = 'float64' |
+ boolean = 'boolean' |
+ string = 'string' |
+ char = 'char';
+
+
+TypedID:
+ name=ID ':' type=Type;
+FreeTypedID:
+ name=ID ':' type=FreeType;
+
+Type: prim=PrimitiveType | type=[DataClass|FQN];
+FreeType: prim=PrimitiveType | type=ID;
+
+// TODOHRR: define detail level language?
+DataClass:
+ 'DataClass' name=ID ('extends' base=[DataClass|FQN])? '{'
+ (imports+=Import)*
+ attributes+=Attribute+
+ operations+=Operation*
+ '}';
+
+Attribute:
+ 'Attribute' name=ID ('[' size=INT ']')? ':' type=Type;
+
+// TODOHRR: pass arguments and return value by value/reference
+Operation:
+ 'Operation' name=ID '(' (arguments+=FreeTypedID (',' arguments+=FreeTypedID)*)? ')' (':' returntype=FreeType)?
+ detailCode=DetailCode
+ ;
+
+// **************************************************************
+// protocol class
+
+ProtocolClass:
+ 'ProtocolClass' name=ID ('extends' base=[ProtocolClass|FQN])? '{'
+ ('usercode1' userCode1=DetailCode)?
+ ('usercode2' userCode2=DetailCode)?
+ 'incoming' '{' incomingMessages+=Message* '}'
+ 'outgoing' '{' outgoingMessages+=Message* '}'
+ ('regular' 'PortClass' regular=PortClass)?
+ ('conjugate' 'PortClass' conjugate=PortClass)?
+ (semantics=ProtocolSemantics)?
+ '}';
+
+Message:
+ 'Message' name=ID '(' (arguments+=TypedID (',' arguments+=TypedID)*)? ')';
+
+PortClass:
+ '{'
+ ('usercode' userCode=DetailCode)?
+ (attributes+=Attribute |
+ operations+=Operation |
+ msgHandlers+=MessageHandler)+
+ '}';
+
+MessageHandler:
+ 'handle' msg=[Message|ID]
+ detailCode=DetailCode
+ ;
+
+ProtocolSemantics:
+ 'semantics' '{'
+ rules+=SemanticsRule+
+ '}';
+
+SemanticsRule: SemanticsInRule | SemanticsOutRule;
+
+SemanticsInRule: 'in' msg=[Message|ID] '->' '{'
+ followUps+=SemanticsRule*
+ '}';
+
+SemanticsOutRule: 'out' msg=[Message|ID] '->' '{'
+ followUps+=SemanticsRule*
+ '}';
+
+// **************************************************************
+// actor class
+
+// some notes on ports
+//
+// in ROOM ports can be contained in the structure and/or the interface
+// p in s ==> internal end port
+// p in i ==> relay port
+// p in i and p in s ==> external end port
+// since double containment is not supported we decided to define external ports as reference to interface ports
+ActorClass:
+ (abstract?='abstract')? 'ActorClass' name=ID ('extends' base=[ActorClass|FQN])? '{'
+ ('Interface' '{'
+ ifPorts+=Port*
+ ifSPPs+=SPPRef*
+ '}')?
+ ('Structure' '{'
+ ('usercode1' userCode1=DetailCode)?
+ ('usercode2' userCode2=DetailCode)?
+ (intPorts+=Port |
+ extPorts+=ExternalPort)*
+ serviceImplementations+=ServiceImplementation*
+ strSAPs+=SAPRef*
+ attributes+=Attribute*
+ actorRefs+=ActorRef*
+ bindings+=Binding*
+ connections+=LayerConnection*
+ '}')?
+ ('Behavior' '{'
+ operations+=Operation*
+ (stateMachine=StateMachine)?
+ '}')?
+ '}';
+
+InterfaceItem: Port | SAPRef | SPPRef;
+
+Port:
+ (conjugated?='conjugated')? 'Port' name=ID ('[' multiplicity=INT ']')? ':' protocol=[ProtocolClass|FQN] ;
+ExternalPort:
+ 'external' 'Port' ifport=[Port|ID] ;
+
+SAPRef:
+ // we omitted the SAP type (Timing/Frame/Exception)
+ 'SAP' name=ID ':' protocol=[ProtocolClass|FQN] ;
+
+SPPRef:
+ 'SPP' name=ID ':' protocol=[ProtocolClass|FQN] ;
+ServiceImplementation:
+ 'ServiceImplementation' 'of' spp=[SPPRef|ID];
+
+LogicalSystem:
+ 'LogicalSystem' name=ID '{'
+ subSystems+=SubSystemRef+
+ bindings+=Binding*
+ connections+=LayerConnection*
+ '}';
+
+ActorContainerRef: SubSystemRef | ActorRef;
+
+SubSystemRef:
+ 'SubSystemRef' name=ID ':' type=[SubSystemClass|FQN];
+
+SubSystemClass:
+ 'SubSystemClass' name=ID '{'
+ relayPorts+=Port*
+ ifSPPs+=SPPRef*
+ actorRefs+=ActorRef+
+ bindings+=Binding*
+ connections+=LayerConnection*
+ threads+=LogicalThread*
+ '}';
+
+LogicalThread:
+ 'LogicalThread' name=ID '{'
+ instances+=ActorInstancePath (',' instances+=ActorInstancePath)*
+ '}';
+
+ActorInstancePath:
+ segments+=ID ('.' segments+=ID)*;
+
+// TODOHRR: bindings for replicated ports
+// (1) declare several bindings
+// (2) use a notation with 1 to n bindings
+Binding:
+ 'Binding' endpoint1=BindingEndPoint 'and' endpoint2=BindingEndPoint ;
+
+BindingEndPoint:
+ (actorRef=[ActorContainerRef|ID]'.')? port=[Port|ID];
+
+LayerConnection:
+ 'LayerConnection' from=SAPoint 'satisfied_by' to=SPPoint
+;
+
+SAPoint: RefSAPoint | RelaySAPoint;
+
+RefSAPoint:
+ // satisfies a sub actor
+ 'ref' ref=[ActorContainerRef|ID];
+RelaySAPoint:
+ // relays from own interface
+ 'relay_sap' relay=[SPPRef|ID];
+
+SPPoint:
+ ref=[ActorContainerRef|ID] '.' service=[SPPRef|ID]
+;
+
+// TODOHRR: support replicated actors
+ActorRef:
+ 'ActorRef' name=ID ':' type=[ActorClass|FQN];
+
+
+// **************************************************************
+// state machine
+
+StateGraphNode: State | ChoicePoint | TrPoint;
+StateGraphItem: StateGraphNode | Transition;
+
+State: BaseState | RefinedState;
+
+StateGraph:
+ '{'
+ (
+ states+=State |
+ trPoints+=TrPoint |
+ chPoints+=ChoicePoint |
+ transitions+=Transition
+ )+
+ '}';
+
+StateMachine returns StateGraph:
+ 'StateMachine' '{'
+ (
+ states+=State |
+ trPoints+=TrPoint |
+ chPoints+=ChoicePoint |
+ transitions+=Transition
+ )+
+ '}';
+
+// entry and exit code have multiplicity many: in BaseState to be able to add derived class codes here,
+// in RefinedState to still have both features in the common base class State
+BaseState:
+ 'State' name=ID '{'
+ ('entry' entryCode=DetailCode)?
+ ('exit' exitCode=DetailCode)?
+ ('subgraph' subgraph=StateGraph)?
+ '}';
+
+RefinedState:
+ 'RefinedState' base=[BaseState|FQN] '{'
+ ('entry' entryCode=DetailCode)?
+ ('exit' exitCode=DetailCode)?
+ ('subgraph' subgraph=StateGraph)?
+ '}';
+
+// TODOHRR: provide a means to call super class code (cf. ROOM p. 310f)
+// super() keyword or flag like in Trice
+DetailCode:
+ '{'
+ commands+=STRING+
+ '}';
+
+TrPoint: TransitionPoint | EntryPoint | ExitPoint;
+
+TransitionPoint:
+ (handler?='handler')? 'TransitionPoint' name=ID;
+
+EntryPoint:
+ 'EntryPoint' name=ID;
+
+ExitPoint:
+ 'ExitPoint' name=ID;
+
+ChoicePoint:
+ 'ChoicePoint' name=ID;
+
+Transition: InitialTransition | NonInitialTransition;
+NonInitialTransition: TriggeredTransition | ContinuationTransition | CPBranchTransition;
+
+InitialTransition:
+ 'Transition' (name=ID)? ':' 'initial' '->' to=TransitionTerminal '{'
+ ('action' action=DetailCode)?
+ '}';
+
+ContinuationTransition:
+ 'Transition' (name=ID)? ':' from=TransitionTerminal '->' to=TransitionTerminal '{'
+ ('action' action=DetailCode)?
+ '}';
+
+TriggeredTransition:
+ 'Transition' (name=ID)? ':' from=TransitionTerminal '->' to=TransitionTerminal '{'
+ 'triggers' '{'
+ triggers+=Trigger ('or' triggers+=Trigger)*
+ '}'
+ ('action' action=DetailCode)?
+ '}';
+
+CPBranchTransition:
+ 'Transition' (name=ID)? ':' from=TransitionTerminal '->' to=TransitionTerminal '{'
+ 'cond' condition=DetailCode
+ ('action' action=DetailCode)?
+ '}';
+
+TransitionTerminal: StateTerminal | TrPointTerminal | SubStateTrPointTerminal | ChoicepointTerminal;
+
+StateTerminal:
+ state=[BaseState|ID];
+TrPointTerminal:
+ 'my' trPoint=[TrPoint|ID];
+SubStateTrPointTerminal:
+ trPoint=[TrPoint|ID] 'of' state=[BaseState|ID];
+ChoicepointTerminal:
+ 'cp' cp=[ChoicePoint|ID];
+
+//TransitionSource: TransitionTerminal|ChoicePointCaseRef|ChoicePointDefaultRef;
+//TransitionSource: TransitionTerminal|ChoicePointRef;
+//TransitionDest: TransitionTerminal|ChoicePointRef;
+
+//ChoicePointCaseRef: 'cp' cp=[ChoicePoint|ID] 'case' case=[ChoicePointCase|ID];
+//ChoicePointDefaultRef: 'cp' cp=[ChoicePoint|ID] 'default';
+//ChoicePointRef: 'cp' cp=[ChoicePoint|ID];
+
+Trigger:
+ '<' msgFromIfPairs+=MessageFromIf ('|' msgFromIfPairs+=MessageFromIf)*
+ (guard=Guard)? '>'
+;
+
+MessageFromIf:
+ message=[Message|ID] ':' from=[InterfaceItem|ID]
+;
+
+Guard:
+ 'guard' guard=DetailCode;
+
+// **************************************************************
+// general
+
+Import :
+ 'import' importedNamespace=ImportedFQN;
+
+ImportedFQN:
+ FQN ('.' '*')?;
+
+FQN:
+ ID ('.' ID)*;
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomPostprocessor.ext b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomPostprocessor.ext
new file mode 100644
index 000000000..91afc7056
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomPostprocessor.ext
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+
+import ecore;
+import xtext;
+
+process(xtext::GeneratedMetamodel this) :
+ process(ePackage)
+;
+
+// the multiplicity is an optional attribute with a default of 1
+process(ecore::EPackage this) :
+ this.eClassifiers.typeSelect(ecore::EClass).process()
+;
+
+process(EClass this) :
+ switch (name) {
+ case "Port": (eAllAttributes.select(e|e.name=="multiplicity").first().setDefaultValueLiteral("1"))
+ case "RefinedState": (addOperation("getName", getEcoreDataType("EString")))
+ default: null
+ }
+;
+
+EDataType getEcoreDataType(String name) :
+ org::eclipse::emf::ecore::EcorePackage::eINSTANCE.getEClassifier(name)
+;
+
+addOperation(EClass this, String name, EClassifier type) :
+ let op = newOperation(name, type) :
+ newDelegatingBodyAnnotation(op)
+;
+
+create EOperation newOperation(EClass owner, String name, EClassifier type) :
+ setName(name) -> setEType(type) -> owner.eOperations.add(this)
+;
+
+create EAnnotation newDelegatingBodyAnnotation(EOperation op) :
+ let d = new EStringToStringMapEntry :
+ setSource("http://www.eclipse.org/emf/2002/GenModel") ->
+ d.setKey("body") ->
+ switch (op.name) {
+ case "getName": (d.setValue("return getBase()==null? \"\":getBase().getName();"))
+ default: null
+ } ->
+ details.add(d) ->
+ op.eAnnotations.add(this)
+;
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomRuntimeModule.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomRuntimeModule.java
new file mode 100644
index 000000000..d12cc0851
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomRuntimeModule.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core;
+
+import org.eclipse.etrice.core.naming.RoomFragmentProvider;
+import org.eclipse.etrice.core.naming.RoomQualifiedNameProvider;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.resource.IFragmentProvider;
+
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class RoomRuntimeModule extends org.eclipse.etrice.core.AbstractRoomRuntimeModule {
+
+ @Override
+ public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+ return RoomQualifiedNameProvider.class;
+ }
+
+ @Override
+ public Class<? extends IFragmentProvider> bindIFragmentProvider() {
+ return RoomFragmentProvider.class;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomStandaloneSetup.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomStandaloneSetup.java
new file mode 100644
index 000000000..4e5490356
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/RoomStandaloneSetup.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+
+
+package org.eclipse.etrice.core;
+
+import org.eclipse.etrice.core.RoomStandaloneSetupGenerated;
+
+/**
+ * Initialization support for running Xtext languages
+ * without equinox extension registry
+ */
+public class RoomStandaloneSetup extends RoomStandaloneSetupGenerated{
+
+ public static void doSetup() {
+ new RoomStandaloneSetup().createInjectorAndDoEMFRegistration();
+ }
+}
+
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/formatting/RoomFormatter.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/formatting/RoomFormatter.java
new file mode 100644
index 000000000..bfbb4edc5
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/formatting/RoomFormatter.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.formatting;
+
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+
+/**
+ * This class contains custom formatting description.
+ *
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ *
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+public class RoomFormatter extends AbstractDeclarativeFormatter {
+
+ @Override
+ protected void configureFormatting(FormattingConfig c) {
+ //org.eclipse.etrice.core.services.RoomGrammarAccess f = (org.eclipse.etrice.core.services.RoomGrammarAccess) getGrammarAccess();
+
+ //...
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomFragmentProvider.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomFragmentProvider.java
new file mode 100644
index 000000000..3bba2c283
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomFragmentProvider.java
@@ -0,0 +1,487 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.naming;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPoint;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SPPoint;
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+import org.eclipse.etrice.core.room.util.RoomSwitch;
+import org.eclipse.xtext.resource.IFragmentProvider;
+
+
+public class RoomFragmentProvider implements IFragmentProvider {
+
+ private class PathProvider extends RoomSwitch<String> {
+
+ @Override
+ public String caseRoomClass(RoomClass rc) {
+ return rc.getName();
+ }
+
+ @Override
+ public String casePort(Port port) {
+ return doSwitch(port.eContainer())+SEP+port.getName();
+ }
+
+ @Override
+ public String caseSPPRef(SPPRef spp) {
+ return doSwitch(spp.eContainer())+SEP+spp.getName();
+ }
+
+ @Override
+ public String caseActorContainerRef(ActorContainerRef acr) {
+ return doSwitch(acr.eContainer())+SEP+acr.getName();
+ }
+
+ @Override
+ public String caseBinding(Binding bi) {
+ return doSwitch(bi.eContainer())+SEP
+ +caseBindingEndPoint(bi.getEndpoint1())+BIND_SEP
+ +caseBindingEndPoint(bi.getEndpoint2());
+ }
+
+ @Override
+ public String caseBindingEndPoint(BindingEndPoint ep) {
+ String loc = ep.getActorRef()==null? LOCAL:ep.getActorRef().getName();
+ return ep.getPort().getName()+EP_SEP+loc;
+ }
+
+ @Override
+ public String caseLayerConnection(LayerConnection bi) {
+ return doSwitch(bi.eContainer())+SEP
+ +caseSAPoint(bi.getFrom())+CONN_SEP
+ +caseSPPoint(bi.getTo());
+ }
+
+ @Override
+ public String caseSAPoint(SAPoint sapt) {
+ if (sapt instanceof RefSAPoint)
+ return ((RefSAPoint) sapt).getRef().getName();
+ else if (sapt instanceof RelaySAPoint)
+ return ((RelaySAPoint) sapt).getRelay().getName();
+
+ assert(false): "unexpectd sub type";
+ return null;
+ }
+
+ @Override
+ public String caseSPPoint(SPPoint sppt) {
+ return sppt.getRef().getName()+EP_SEP+sppt.getService().getName();
+ }
+ }
+
+ private static final char SEP = '$';
+ private static final char BIND_SEP = '-';
+ private static final char CONN_SEP = '-';
+ private static final char EP_SEP = '!';
+ private static final String LOCAL = ".";
+ private static final char TYPE_SEP = ':';
+
+ private PathProvider pathProvider = new PathProvider();
+
+ @Override
+ public String getFragment(EObject obj, Fallback fallback) {
+ String path = pathProvider.doSwitch(obj);
+ if (path!=null)
+ return obj.eClass().getName()+TYPE_SEP+path;
+
+ return fallback.getFragment(obj);
+ }
+
+ @Override
+ public EObject getEObject(Resource resource, String fragment,
+ Fallback fallback) {
+
+ RoomModel model = (RoomModel) resource.getContents().get(0);
+ EObject result = getEObject(model, fragment);
+ if (result!=null)
+ return result;
+
+ return fallback.getEObject(fragment);
+ }
+
+ public static boolean isPort(EObject obj) {
+ URI uri = EcoreUtil.getURI(obj);
+ return uri!=null && uri.fragment()!=null && uri.fragment().startsWith(RoomPackage.eINSTANCE.getPort().getName());
+ }
+
+ public static boolean isSPP(EObject obj) {
+ URI uri = EcoreUtil.getURI(obj);
+ return uri!=null && uri.fragment()!=null && uri.fragment().startsWith(RoomPackage.eINSTANCE.getSPPRef().getName());
+ }
+
+ public static boolean isBinding(EObject obj) {
+ URI uri = EcoreUtil.getURI(obj);
+ return uri!=null && uri.fragment()!=null && uri.fragment().startsWith(RoomPackage.eINSTANCE.getBinding().getName());
+ }
+
+ public static boolean isLayerConnection(EObject obj) {
+ URI uri = EcoreUtil.getURI(obj);
+ return uri!=null && uri.fragment()!=null && uri.fragment().startsWith(RoomPackage.eINSTANCE.getLayerConnection().getName());
+ }
+
+ public static boolean isRef(EObject obj) {
+ URI uri = EcoreUtil.getURI(obj);
+ if (uri!=null && uri.fragment()!=null) {
+ if (uri.fragment().startsWith(RoomPackage.eINSTANCE.getActorContainerRef().getName()))
+ return true;
+ if (uri.fragment().startsWith(RoomPackage.eINSTANCE.getActorRef().getName()))
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isStructureClass(EObject obj) {
+ URI uri = EcoreUtil.getURI(obj);
+ if (uri!=null && uri.fragment()!=null) {
+ if (uri.fragment().startsWith(RoomPackage.eINSTANCE.getActorClass().getName()))
+ return true;
+ if (uri.fragment().startsWith(RoomPackage.eINSTANCE.getSubSystemClass().getName()))
+ return true;
+ if (uri.fragment().startsWith(RoomPackage.eINSTANCE.getLogicalSystem().getName()))
+ return true;
+ }
+ return false;
+ }
+
+ private EObject getEObject(RoomModel model, String fragment) {
+ int begin = 0;
+ int end = fragment.indexOf(TYPE_SEP);
+ if (end<0)
+ return null;
+ String type = fragment.substring(begin, end);
+
+ begin = end+1;
+ end = fragment.indexOf(SEP, begin);
+ if (end<0)
+ end = fragment.length();
+ String className = fragment.substring(begin, end);
+
+ RoomClass rc = getRoomClass(model, className);
+ if (type.equals(RoomPackage.eINSTANCE.getDataClass().getName())) {
+ return rc;
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getProtocolClass().getName())) {
+ return rc;
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getActorClass().getName())) {
+ return rc;
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getSubSystemClass().getName())) {
+ return rc;
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getLogicalSystem().getName())) {
+ return rc;
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getPort().getName())) {
+ begin = end+1;
+ String portName = fragment.substring(begin, fragment.length());
+ return getPort(rc, portName);
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getSPPRef().getName())) {
+ begin = end+1;
+ String portName = fragment.substring(begin, fragment.length());
+ return getSPP(rc, portName);
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getSubSystemRef().getName())
+ || type.equals(RoomPackage.eINSTANCE.getActorRef().getName())) {
+ begin = end+1;
+ String arcName = fragment.substring(begin, fragment.length());
+ return getActorContainerRef(rc, arcName);
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getBinding().getName())) {
+ begin = end+1;
+ String bindName = fragment.substring(begin, fragment.length());
+ return getBinding(rc, bindName);
+ }
+ else if (type.equals(RoomPackage.eINSTANCE.getLayerConnection().getName())) {
+ begin = end+1;
+ String lcName = fragment.substring(begin, fragment.length());
+ return getLayerConnection(rc, lcName);
+ }
+
+ return null;
+ }
+
+ private EObject getBinding(RoomClass rc, String name) {
+ int pos = name.indexOf(BIND_SEP);
+ if (pos<0)
+ return null;
+
+ if (rc instanceof StructureClass) {
+ String ep1name = name.substring(0, pos);
+ String ep2name = name.substring(pos+1, name.length());
+ StructureClass sc = (StructureClass) rc;
+ BindingEndPoint ep1 = getEndpoint(sc, ep1name);
+ BindingEndPoint ep2 = getEndpoint(sc, ep2name);
+ for (Binding bi : sc.getBindings()) {
+ if (isEP(bi.getEndpoint1(),ep1) && isEP(bi.getEndpoint2(),ep2))
+ return bi;
+ if (isEP(bi.getEndpoint1(),ep2) && isEP(bi.getEndpoint2(),ep1))
+ return bi;
+ }
+ }
+ return null;
+ }
+
+ private boolean isEP(BindingEndPoint a, BindingEndPoint b) {
+ if (a.getPort().getName().equals(b.getPort().getName())) {
+ if (a.getActorRef()==null && b.getActorRef()==null)
+ return true;
+ if (a.getActorRef()!=null && b.getActorRef()!=null)
+ if (a.getActorRef().getName().equals(b.getActorRef().getName()))
+ return true;
+ }
+ return false;
+ }
+
+ private BindingEndPoint getEndpoint(StructureClass sc, String name) {
+ int pos = name.indexOf(EP_SEP);
+ if (pos<0)
+ return null;
+ String portName = name.substring(0, pos);
+ String refName = name.substring(pos+1, name.length());
+ ActorContainerRef ar = null;
+ if (!refName.equals(LOCAL))
+ ar = getActorContainerRef(sc, refName);
+ if (ar!=null) {
+ if (ar instanceof ActorRef)
+ sc = ((ActorRef) ar).getType();
+ else if (ar instanceof SubSystemRef)
+ sc = ((SubSystemRef) ar).getType();
+ }
+ Port port = getPort(sc, portName);
+ BindingEndPoint ep = RoomFactory.eINSTANCE.createBindingEndPoint();
+ ep.setPort(port);
+ ep.setActorRef(ar);
+ return ep;
+ }
+
+ private EObject getLayerConnection(RoomClass rc, String name) {
+ int pos = name.indexOf(CONN_SEP);
+ if (pos<0)
+ return null;
+
+ if (rc instanceof StructureClass) {
+ String saptname = name.substring(0, pos);
+ String spptname = name.substring(pos+1, name.length());
+ StructureClass sc = (StructureClass) rc;
+ SAPoint sapt = getSAPoint(sc, saptname);
+ SPPoint sppt = getSPPoint(sc, spptname);
+ for (LayerConnection bi : sc.getConnections()) {
+ if (isSAPoint(bi.getFrom(),sapt) && isSPPoint(bi.getTo(),sppt))
+ return bi;
+ }
+ }
+ return null;
+ }
+
+ private SPPoint getSPPoint(StructureClass sc, String name) {
+ int pos = name.indexOf(EP_SEP);
+ if (pos<0)
+ return null;
+ String refName = name.substring(0, pos);
+ String sppName = name.substring(pos+1, name.length());
+
+ if (sc instanceof ActorContainerClass) {
+ for (ActorRef ar : ((ActorContainerClass) sc).getActorRefs()) {
+ if (ar.getName().equals(refName)) {
+ for (SPPRef spp : ar.getType().getIfSPPs())
+ if (spp.getName().equals(sppName)) {
+ SPPoint sppt = RoomFactory.eINSTANCE.createSPPoint();
+ sppt.setRef(ar);
+ sppt.setService(spp);
+ return sppt;
+ }
+ }
+ }
+ }
+ else if (sc instanceof LogicalSystem) {
+ for (SubSystemRef ssr : ((LogicalSystem) sc).getSubSystems()) {
+ if (ssr.getName().equals(refName)) {
+ for (SPPRef spp: ssr.getType().getIfSPPs())
+ if (spp.getName().equals(sppName)) {
+ SPPoint sppt = RoomFactory.eINSTANCE.createSPPoint();
+ sppt.setRef(ssr);
+ sppt.setService(spp);
+ return sppt;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private SAPoint getSAPoint(StructureClass sc, String name) {
+ SAPoint sapt = getRelaySAPoint(sc, name);
+ if (sapt!=null)
+ return sapt;
+ return getRefSAPoint(sc, name);
+ }
+
+ private SAPoint getRefSAPoint(StructureClass sc, String name) {
+ if (sc instanceof ActorContainerClass) {
+ for (ActorRef ar : ((ActorContainerClass)sc).getActorRefs()) {
+ if (ar.getName().equals(name)) {
+ RefSAPoint sapt = RoomFactory.eINSTANCE.createRefSAPoint();
+ sapt.setRef(ar);
+ return sapt;
+ }
+ }
+ }
+ if (sc instanceof LogicalSystem) {
+ for (SubSystemRef ssr : ((LogicalSystem) sc).getSubSystems()) {
+ if (ssr.getName().equals(name)) {
+ RefSAPoint sapt = RoomFactory.eINSTANCE.createRefSAPoint();
+ sapt.setRef(ssr);
+ return sapt;
+ }
+ }
+ }
+ return null;
+ }
+
+ private SAPoint getRelaySAPoint(StructureClass sc, String name) {
+ if (sc instanceof ActorContainerClass) {
+ for (SPPRef spp : ((ActorContainerClass) sc).getIfSPPs()) {
+ if (spp.getName().equals(name)) {
+ RelaySAPoint sapt = RoomFactory.eINSTANCE.createRelaySAPoint();
+ sapt.setRelay(spp);
+ return sapt;
+ }
+ }
+ }
+ return null;
+ }
+
+ private boolean isSAPoint(SAPoint a, SAPoint b) {
+ if (a instanceof RefSAPoint && b instanceof RefSAPoint) {
+ return ((RefSAPoint)a).getRef().getName().equals(((RefSAPoint)b).getRef().getName());
+ }
+ else if (a instanceof RelaySAPoint && b instanceof RelaySAPoint) {
+ return ((RelaySAPoint)a).getRelay().getName().equals(((RelaySAPoint)b).getRelay().getName());
+ }
+ return false;
+ }
+
+ private boolean isSPPoint(SPPoint a, SPPoint b) {
+ if (!a.getRef().getName().equals(b.getRef().getName()))
+ return false;
+
+ if (!a.getService().getName().equals(b.getService().getName()))
+ return false;
+
+ return true;
+ }
+
+ private ActorContainerRef getActorContainerRef(RoomClass rc, String name) {
+ if (rc instanceof ActorContainerClass) {
+ for (ActorRef ar : ((ActorContainerClass) rc).getActorRefs()) {
+ if (ar.getName().equals(name))
+ return ar;
+ }
+ }
+ else if (rc instanceof LogicalSystem) {
+ for (SubSystemRef ssr : ((LogicalSystem) rc).getSubSystems()) {
+ if (ssr.getName().equals(name))
+ return ssr;
+ }
+ }
+ return null;
+ }
+
+ protected Port getPort(RoomClass rc, String name) {
+ if (rc instanceof ActorClass) {
+ for (Port p : ((ActorClass) rc).getIfPorts()) {
+ if (p.getName().equals(name))
+ return p;
+ }
+ for (Port p : ((ActorClass) rc).getIntPorts()) {
+ if (p.getName().equals(name))
+ return p;
+ }
+ if (((ActorClass) rc).getBase()!=null)
+ return getPort(((ActorClass) rc).getBase(), name);
+ }
+ else if (rc instanceof SubSystemClass) {
+ for (Port p : ((SubSystemClass) rc).getRelayPorts()) {
+ if (p.getName().equals(name))
+ return p;
+ }
+ }
+ return null;
+ }
+
+ protected SPPRef getSPP(RoomClass rc, String name) {
+ if (rc instanceof ActorContainerClass) {
+ for (SPPRef spp : ((ActorContainerClass) rc).getIfSPPs()) {
+ if (spp.getName().equals(name))
+ return spp;
+ }
+ if (rc instanceof ActorClass)
+ if (((ActorClass)rc).getBase()!=null)
+ return getSPP(((ActorClass)rc).getBase(), name);
+ }
+ return null;
+ }
+
+ private RoomClass getRoomClass(RoomModel model, String className) {
+ for (DataClass dc : model.getDataClasses()) {
+ if (dc.getName().equals(className))
+ return dc;
+ }
+ for (ProtocolClass pc : model.getProtocolClasses()) {
+ if (pc.getName().equals(className))
+ return pc;
+ }
+ for (ActorClass ac : model.getActorClasses()) {
+ if (ac.getName().equals(className))
+ return ac;
+ }
+ for (SubSystemClass ssc : model.getSubSystemClasses()) {
+ if (ssc.getName().equals(className))
+ return ssc;
+ }
+ for (LogicalSystem ls : model.getSystems()) {
+ if (ls.getName().equals(className))
+ return ls;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomNameProvider.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomNameProvider.java
new file mode 100644
index 000000000..e9579ae26
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomNameProvider.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+
+package org.eclipse.etrice.core.naming;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.CPBranchTransition;
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.ChoicepointTerminal;
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.NonInitialTransition;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateGraphItem;
+import org.eclipse.etrice.core.room.StateTerminal;
+import org.eclipse.etrice.core.room.SubStateTrPointTerminal;
+import org.eclipse.etrice.core.room.TrPoint;
+import org.eclipse.etrice.core.room.TrPointTerminal;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TransitionTerminal;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.core.room.util.RoomSwitch;
+
+
+public class RoomNameProvider {
+
+ private static final String TOP_STATE_NAME = "TOP";
+ private static final String PATH_SEP = "_";
+
+ private static RoomSwitch<String> nameProvider = new RoomSwitch<String>() {
+ public String caseState(State object) { return RoomNameProvider.getStateName(object); }
+ public String caseChoicePoint(ChoicePoint object) { return object.getName(); };
+ public String caseTrPoint(TrPoint object) { return object.getName(); };
+ public String caseTransition(Transition object) { return RoomNameProvider.getTransitionName(object); };
+ public String caseActorRef(org.eclipse.etrice.core.room.ActorRef object) { return object.getName(); };
+ public String casePort(org.eclipse.etrice.core.room.Port object) { return "Port '"+object.getName()+"'"; };
+ public String caseSAPRef(org.eclipse.etrice.core.room.SAPRef object) { return "SAP '"+object.getName()+"'"; };
+ public String caseSPPRef(org.eclipse.etrice.core.room.SPPRef object) { return "SPP '"+object.getName()+"'"; };
+ };
+
+ public static String getName(EObject item) {
+ return nameProvider.doSwitch(item);
+ }
+
+ public static String getFullPath(StateGraphItem item) {
+ return getParentPath(item)+getName(item);
+ }
+
+ public static String getFullPath(StateGraph sg) {
+ if (sg.eContainer() instanceof State)
+ return getFullPath((State)sg.eContainer());
+ else
+ return TOP_STATE_NAME;
+ }
+
+ public static RoomClass getModelClass(EObject obj) {
+ while (obj!=null) {
+ if (obj instanceof RoomClass) {
+ return (RoomClass) obj;
+ }
+ obj = obj.eContainer();
+ }
+ return null;
+ }
+
+ public static String getClassLocation(RoomClass cls) {
+ if (cls==null)
+ return null;
+
+ if (cls.eContainer() instanceof RoomModel) {
+ return ((RoomModel)cls.eContainer()).getName()+"."+cls.getName();
+ }
+ return cls.getName();
+ }
+
+ public static String getLocation(EObject source) {
+ String location = null;
+ String clsLocation = getClassLocation(getModelClass(source));
+
+ while (source!=null) {
+ if (source instanceof StateGraph) {
+ location = RoomNameProvider.getFullPath((StateGraph)source);
+ break;
+ }
+ else if (source instanceof StateGraphItem) {
+ location = RoomNameProvider.getFullPath((StateGraphItem)source);
+ break;
+ }
+ else {
+ location = RoomNameProvider.getName(source);
+ if (location!=null)
+ break;
+ }
+ source = source.eContainer();
+ }
+
+ if (location==null)
+ location = "";
+
+ if (clsLocation!=null)
+ location += " ["+clsLocation+"]";
+
+ return location;
+ }
+
+ public static String getTransitionName(Transition t) {
+ if (t instanceof InitialTransition) {
+ return "TRANS_INITIAL_TO__"+getTerminalName(t.getTo());
+ }
+ else {
+ String fromTo = "TRANS_"+getTerminalName(((NonInitialTransition) t).getFrom())+"_TO_"+getTerminalName(t.getTo());
+ if (t instanceof TriggeredTransition) {
+ return fromTo + "_BY_" + getTriggerName((TriggeredTransition) t);
+ }
+ else if (t instanceof ContinuationTransition) {
+ return fromTo;
+ }
+ else if (t instanceof CPBranchTransition) {
+ return fromTo+"_COND_"+t.getName();
+ }
+ }
+
+ assert(false): "Unexpected transition class "+t.eClass().getName();
+ return null;
+ }
+
+ private static boolean isTopLevel(StateGraphItem item) {
+ return item==null? true : !(item.eContainer().eContainer() instanceof State);
+ }
+
+ public static State getParentState(StateGraphItem item) {
+ if (isTopLevel(item))
+ return null;
+ else
+ return (State) item.eContainer().eContainer();
+ }
+
+ public static String getStateName(State s) {
+ if (s==null) {
+ return TOP_STATE_NAME;
+ }
+ else if (s instanceof BaseState) {
+ return ((BaseState) s).getName();
+ }
+ else if (s instanceof RefinedState) {
+ return ((RefinedState) s).getBase().getName();
+ }
+
+ assert(false): "Unexpected State class "+s.eClass().getName();
+ return null;
+ }
+
+ public static String getStatePathName(State s) {
+ return getParentPath(s)+getStateName(s);
+ }
+
+ public static String getParentPath(StateGraphItem item) {
+ State parent = getParentState(item);
+ if (parent==null)
+ return "";
+ else
+ return getStatePathName(parent)+PATH_SEP;
+ }
+
+ public static String getTriggerName(TriggeredTransition tr) {
+ String result = "";
+ for (Trigger tri : tr.getTriggers()) {
+ for (MessageFromIf mif : tri.getMsgFromIfPairs()) {
+ result += mif.getMessage().getName()+mif.getFrom().getName();
+ }
+ }
+ return result;
+ }
+
+ public static String getTerminalName(TransitionTerminal tt) {
+ if (tt instanceof StateTerminal) {
+ return getStateName(((StateTerminal) tt).getState());
+ }
+ else if (tt instanceof TrPointTerminal) {
+ return ((TrPointTerminal) tt).getTrPoint().getName();
+ }
+ else if (tt instanceof SubStateTrPointTerminal) {
+ return getStatePathName(((SubStateTrPointTerminal) tt).getState())+PATH_SEP+((SubStateTrPointTerminal) tt).getTrPoint().getName();
+ }
+ else if (tt instanceof ChoicepointTerminal) {
+ return ((ChoicepointTerminal) tt).getCp().getName();
+ }
+
+ assert(false): "Unexpected TransitionTerminal class "+tt.eClass().getName();
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomQualifiedNameProvider.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomQualifiedNameProvider.java
new file mode 100644
index 000000000..982ae1f7a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/naming/RoomQualifiedNameProvider.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+
+package org.eclipse.etrice.core.naming;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
+
+
+public class RoomQualifiedNameProvider extends
+ DefaultDeclarativeQualifiedNameProvider {
+
+ public String qualifiedName(RefinedState rs) {
+ String fqn = "";
+ BaseState base = rs.getBase();
+ if (base!=null)
+ {
+ fqn = base.getName();
+ EObject parent = base.eContainer();
+ while (parent instanceof BaseState) {
+ fqn = ((BaseState)parent).getName()+"."+fqn;
+ parent = parent.eContainer();
+ }
+ }
+ return fqn;
+ }
+
+ public String qualifiedName(Message m) {
+ ProtocolClass pc = (ProtocolClass) m.eContainer();
+ String list;
+ if (pc.getIncomingMessages().contains(m))
+ list = "in";
+ else
+ list = "out";
+
+ return getQualifiedName(pc)+getDelimiter()+list+getDelimiter()+m.getName();
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/ActorRefFilter.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/ActorRefFilter.java
new file mode 100644
index 000000000..4635e3c69
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/ActorRefFilter.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.scoping;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.xtext.resource.IEObjectDescription;
+
+import com.google.common.base.Predicate;
+
+
+public class ActorRefFilter implements Predicate<IEObjectDescription> {
+
+ private ActorClass ac;
+
+ public ActorRefFilter(ActorClass ac) {
+ this.ac = ac;
+ }
+
+ @Override
+ public boolean apply(IEObjectDescription input) {
+ if (input==null)
+ return false;
+
+ if (ac==null)
+ return true;
+
+ EObject obj = input.getEObjectOrProxy();
+ if (obj instanceof ActorClass) {
+ ActorClass ref = (ActorClass) obj;
+ if (ref.getName()==null)
+ return true;
+
+ return !ValidationUtil.isReferencing(ref, ac);
+ }
+
+ return true;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/FilteringScope.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/FilteringScope.java
new file mode 100644
index 000000000..c9b7109c7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/FilteringScope.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.scoping;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+
+public class FilteringScope implements IScope {
+
+ private IScope delegate;
+ private Predicate<IEObjectDescription> filter;
+
+ public FilteringScope(IScope delegate, Predicate<IEObjectDescription> filter) {
+ this.delegate = delegate;
+ this.filter = filter;
+ }
+
+ public IScope getOuterScope() {
+ return new FilteringScope(delegate.getOuterScope(), filter);
+ }
+
+ public Iterable<IEObjectDescription> getContents() {
+ return filter(delegate.getContents());
+ }
+
+ public Iterable<IEObjectDescription> getAllContents() {
+ return filter(delegate.getAllContents());
+ }
+
+ public IEObjectDescription getContentByName(String name) {
+ return filter(delegate.getContentByName(name));
+ }
+
+ public IEObjectDescription getContentByEObject(EObject object) {
+ return filter(delegate.getContentByEObject(object));
+ }
+
+ public Iterable<IEObjectDescription> getAllContentsByEObject(EObject object) {
+ return filter(delegate.getAllContentsByEObject(object));
+ }
+
+ protected Iterable<IEObjectDescription> filter(
+ Iterable<IEObjectDescription> unfiltered) {
+ return Iterables.filter(unfiltered, filter);
+ }
+
+ protected IEObjectDescription filter(IEObjectDescription contentByEObject) {
+ if (!filter.apply(contentByEObject))
+ return null;
+ return contentByEObject;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/RoomScopeProvider.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/RoomScopeProvider.java
new file mode 100644
index 000000000..048f418f4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/scoping/RoomScopeProvider.java
@@ -0,0 +1,803 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.scoping;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.ChoicepointTerminal;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SPPoint;
+import org.eclipse.etrice.core.room.SemanticsInRule;
+import org.eclipse.etrice.core.room.SemanticsOutRule;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateTerminal;
+import org.eclipse.etrice.core.room.SubStateTrPointTerminal;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+import org.eclipse.etrice.core.room.TrPoint;
+import org.eclipse.etrice.core.room.TrPointTerminal;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+import org.eclipse.xtext.scoping.impl.SimpleScope;
+
+
+/**
+ * This class contains custom scoping description.
+ *
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it
+ *
+ */
+public class RoomScopeProvider extends AbstractDeclarativeScopeProvider {
+
+ public static final String STATE_PATH_DELIMITER = ".";
+
+ /**
+ * first container of type {@link StateGraph} ({@link State}, {@link StateMachine})
+ * @param obj
+ * @return StateGraph Container
+ */
+ private StateGraph getStateGraph(EObject obj) {
+ EObject ctx = obj.eContainer();
+ while (!(ctx instanceof StateGraph) && ctx.eContainer()!=null)
+ ctx = ctx.eContainer();
+ if (ctx instanceof StateGraph)
+ return (StateGraph) ctx;
+
+ return null;
+ }
+
+ /**
+ * first container of type {@link ActorClass}
+ * @param obj
+ * @return ActorClass container
+ */
+ private ActorClass getActorClass(EObject obj) {
+ EObject ctx = obj.eContainer();
+ while (!(ctx instanceof ActorClass) && ctx.eContainer()!=null)
+ ctx = ctx.eContainer();
+ if (ctx instanceof ActorClass)
+ return (ActorClass) ctx;
+
+ return null;
+ }
+
+ /**
+ * first container of type {@link ActorClass}
+ * @param obj
+ * @return ActorClass container
+ */
+ private ActorContainerClass getActorContainerClass(EObject obj) {
+ EObject ctx = obj.eContainer();
+ while (!(ctx instanceof ActorContainerClass) && ctx.eContainer()!=null)
+ ctx = ctx.eContainer();
+ if (ctx instanceof ActorContainerClass)
+ return (ActorContainerClass) ctx;
+
+ return null;
+ }
+
+ /**
+ * first container of type {@link ProtocolClass}
+ * @param obj
+ * @return ActorClass container
+ */
+ private ProtocolClass getProtocolClass(EObject obj) {
+ EObject ctx = obj.eContainer();
+ while (!(ctx instanceof ProtocolClass) && ctx.eContainer()!=null)
+ ctx = ctx.eContainer();
+ if (ctx instanceof ProtocolClass)
+ return (ProtocolClass) ctx;
+
+ return null;
+ }
+
+ /**
+ * check whether port is referenced by external port
+ * @param p - port to be checked
+ * @param ports - list of external ports
+ * @return true if contained
+ */
+ private boolean isContained(Port p, EList<ExternalPort> ports) {
+ for (ExternalPort port : ports) {
+ if (port.getIfport()==p)
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * recursively collect all {@link BaseState}s of an actor class in a list
+ * @param ac
+ * @param states
+ */
+ private void collectAllStates(ActorClass ac,
+ LinkedList<BaseState> states) {
+ while (ac!=null) {
+ collectStates(ac.getStateMachine(), states);
+ ac = ac.getBase();
+ }
+ }
+
+ private void collectStates(StateGraph sg,
+ LinkedList<BaseState> states) {
+
+ if (sg==null)
+ return;
+
+ for (State s : sg.getStates()) {
+ if (s instanceof BaseState)
+ states.add((BaseState) s);
+ }
+ for (State s : sg.getStates()) {
+ collectStates(s.getSubgraph(), states);
+ }
+ }
+
+ /**
+ * compute the path of a {@link BaseState}
+ * @param bs
+ * @return the path
+ */
+ private String getStatePath(BaseState bs) {
+ EObject parent = bs.eContainer().eContainer();
+ if (parent instanceof BaseState)
+ return getStatePath((BaseState) parent)+STATE_PATH_DELIMITER+bs.getName();
+ else if (parent instanceof RefinedState) {
+ BaseState base = ((RefinedState) parent).getBase();
+ if (base!=null)
+ return getStatePath(base)+STATE_PATH_DELIMITER+bs.getName();
+ }
+ return bs.getName();
+ }
+
+ /**
+ * return a list of base classes of an {@link ActorClass}, parent classes first.
+ * The list includes the class itself
+ * @param ac
+ * @return
+ */
+ private LinkedList<ActorClass> getBaseClasses(ActorClass ac) {
+ LinkedList<ActorClass> classes = new LinkedList<ActorClass>();
+ if (ac!=null) {
+ classes.addFirst(ac);
+ while (ac.getBase()!=null) {
+ ac = ac.getBase();
+ classes.addFirst(ac);
+ }
+ }
+ return classes;
+ }
+
+ /**
+ * return a list of base classes of an {@link ProtocolClass}, parent classes first.
+ * The list includes the class itself
+ * @param pc
+ * @return
+ */
+ private LinkedList<ProtocolClass> getBaseClasses(ProtocolClass pc) {
+ LinkedList<ProtocolClass> classes = new LinkedList<ProtocolClass>();
+ classes.addFirst(pc);
+ while (pc.getBase()!=null) {
+ pc = pc.getBase();
+ classes.addFirst(pc);
+ }
+ return classes;
+ }
+
+ /**
+ * return the {@link BaseState} of a {@link State}
+ * @param s
+ * @return the state itself if a BaseState or the BaseState for a {@link RefinedState}
+ */
+ private BaseState getBaseState(State s) {
+ if (s instanceof BaseState)
+ return (BaseState) s;
+ else if (s instanceof RefinedState)
+ return ((RefinedState) s).getBase();
+ else
+ return null;
+ }
+
+ private IScope getStateScopes(EObject obj) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ // first state in container hierarchy
+ StateGraph parent = getStateGraph(obj);
+
+ // collect states of my parent
+ if (parent!=null) {
+ for (State s : parent.getStates()) {
+ BaseState bs = getBaseState(s);
+ scopes.add(EObjectDescription.create(bs.getName(), bs));
+ }
+
+ // if my parent is a refined state we also add its base state contents
+ if (parent.eContainer() instanceof RefinedState) {
+ parent = ((RefinedState) parent.eContainer()).getBase().getSubgraph();
+ if (parent!=null)
+ for (State s : parent.getStates()) {
+ BaseState bs = getBaseState(s);
+ scopes.add(EObjectDescription.create(bs.getName(), bs));
+ }
+ }
+ else if (parent.eContainer() instanceof ActorClass) {
+ ActorClass ac = (ActorClass) parent.eContainer();
+ if (ac.getBase()!=null) {
+ for (State s : ac.getBase().getStateMachine().getStates()) {
+ BaseState bs = getBaseState(s);
+ scopes.add(EObjectDescription.create(bs.getName(), bs));
+ }
+ }
+ }
+ }
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of State scopes for a {@link StateTerminal}
+ * @param st - the transition endpoint or terminal
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_StateTerminal_state(StateTerminal st, EReference ref) {
+ return getStateScopes(st);
+ }
+
+ /**
+ * returns a flat list of TransitionPoint scopes for a {@link TrPointTerminal}
+ * @param ep - the transition endpoint or terminal
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_TrPointTerminal_trPoint(TrPointTerminal ep, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ StateGraph parent = getStateGraph(ep);
+ StateGraph targetStateGraph = parent;
+
+ getTrPointScopes(scopes, targetStateGraph);
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of TransitionPoint scopes for a {@link SubStateTrPointTerminal}
+ * @param ep - the transition endpoint or terminal
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_SubStateTrPointTerminal_trPoint(SubStateTrPointTerminal ep, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ StateGraph parent = getStateGraph(ep);
+ StateGraph targetStateGraph = parent;
+ if (ep.getState()!=null) {
+ targetStateGraph = ep.getState().getSubgraph(); // always a BaseState
+
+ // if one of our siblings is a RefinedState of our target we take that as target
+ for (State sibling : parent.getStates()) {
+ if (sibling instanceof RefinedState) {
+ if (((RefinedState)sibling).getBase()==ep.getState())
+ targetStateGraph = sibling.getSubgraph();
+ }
+ }
+ }
+
+ getTrPointScopes(scopes, targetStateGraph);
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ private void getTrPointScopes(final List<IEObjectDescription> scopes,
+ StateGraph sg) {
+
+ // collect transition points of this state
+ for (TrPoint tp : sg.getTrPoints()) {
+ scopes.add(EObjectDescription.create(tp.getName(), tp));
+ }
+
+ // if this state is a refined state we also add its base state transition points
+ if (sg.eContainer() instanceof RefinedState) {
+ sg = ((RefinedState) sg.eContainer()).getBase().getSubgraph();
+ if (sg!=null)
+ for (TrPoint tp : sg.getTrPoints()) {
+ scopes.add(EObjectDescription.create(tp.getName(), tp));
+ }
+ }
+ }
+
+ /**
+ * returns a flat list of State scopes for a {@link SubStateTrPointTerminal}
+ * @param st - the transition endpoint or terminal
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_SubStateTrPointTerminal_state(SubStateTrPointTerminal st, EReference ref) {
+ return getStateScopes(st);
+ }
+
+ /**
+ * returns a flat list of Choicepoint scopes for a {@link SubStateTrPointTerminal}
+ * @param ct - the transition endpoint or terminal
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_ChoicepointTerminal_cp(ChoicepointTerminal ct, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ // first state in container hierarchy
+ StateGraph parent = getStateGraph(ct);
+
+ // collect choicepoints of my parent
+ if (parent!=null)
+ for (ChoicePoint cp : parent.getChPoints()) {
+ scopes.add(EObjectDescription.create(cp.getName(), cp));
+ }
+
+ // if my parent is a refined state we also add its base state contents
+ if (parent.eContainer() instanceof RefinedState) {
+ parent = ((RefinedState) parent.eContainer()).getBase().getSubgraph();
+ if (parent!=null)
+ for (ChoicePoint cp : parent.getChPoints()) {
+ scopes.add(EObjectDescription.create(cp.getName(), cp));
+ }
+ }
+ else if (parent.eContainer() instanceof ActorClass) {
+ ActorClass ac = (ActorClass) parent.eContainer();
+ if (ac.getBase()!=null) {
+ for (ChoicePoint cp : ac.getBase().getStateMachine().getChPoints()) {
+ scopes.add(EObjectDescription.create(cp.getName(), cp));
+ }
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of Message scopes for a {@link MessageFromIf}
+ * @param mfi - the message from interface
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_MessageFromIf_message(MessageFromIf mfi, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ InterfaceItem item = mfi.getFrom();
+ if (item!=null) {
+ ProtocolClass protocol = item.getProtocol();
+ boolean conjugated = false;
+ if (item instanceof Port)
+ conjugated = ((Port)item).isConjugated();
+ else if (item instanceof SAPRef)
+ conjugated = true;
+ for (Message msg : conjugated?protocol.getOutgoingMessages():protocol.getIncomingMessages()) {
+ scopes.add(EObjectDescription.create(msg.getName(), msg));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of Port scopes for a {@link MessageFromIf}
+ * @param mfi - the message from interface
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_MessageFromIf_port(MessageFromIf mfi, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorClass ac = getActorClass(mfi);
+ for (Port p : ac.getIntPorts()) {
+ scopes.add(EObjectDescription.create(p.getName(), p));
+ }
+ for (ExternalPort p : ac.getExtPorts()) {
+ scopes.add(EObjectDescription.create(p.getIfport().getName(), p.getIfport()));
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of InterfaceItem scopes for a {@link MessageFromIf}
+ * @param mfi - the message from interface
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_MessageFromIf_from(MessageFromIf mfi, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorClass ac = getActorClass(mfi);
+ LinkedList<ActorClass> classes = getBaseClasses(ac);
+ LinkedList<InterfaceItem> items = new LinkedList<InterfaceItem>();
+
+ // for all base classes
+ for (ActorClass a : classes) {
+ // add internal ports
+ items.addAll(a.getIntPorts());
+
+ // add service implementations and saps
+ for (ServiceImplementation ispp : a.getServiceImplementations()) {
+ items.add(ispp.getSpp());
+ }
+ items.addAll(a.getStrSAPs());
+
+ // add external end ports
+ for (ExternalPort p : a.getExtPorts()) {
+ items.add(p.getIfport());
+ }
+ }
+
+ for (InterfaceItem item : items) {
+ scopes.add(EObjectDescription.create(item.getName(), item));
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of ActorRef scopes for a {@link BindingEndPoint}
+ * @param ep - the endpoint
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_BindingEndPoint_actorRef(BindingEndPoint ep, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorContainerClass sc = getActorContainerClass(ep);
+ if (sc instanceof ActorClass) {
+ LinkedList<ActorClass> classes = getBaseClasses((ActorClass)sc);
+ for (ActorClass a : classes) {
+ for (ActorRef ar : a.getActorRefs()) {
+ scopes.add(EObjectDescription.create(ar.getName(), ar));
+ }
+ }
+ }
+ else {
+ for (ActorRef ar : sc.getActorRefs()) {
+ scopes.add(EObjectDescription.create(ar.getName(), ar));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of Port scopes for a {@link BindingEndPoint}
+ * @param ep - the endpoint
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_BindingEndPoint_port(BindingEndPoint ep, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorContainerClass acc = getActorContainerClass(ep);
+
+ if (ep.getActorRef() == null){
+ if (acc instanceof ActorClass) {
+ ActorClass ac = (ActorClass) acc;
+ // for all super classes (including this class)
+ LinkedList<ActorClass> classes = getBaseClasses(ac);
+ for (ActorClass a : classes) {
+ // collect internal and relay ports, i.e.
+ // structure ports not in interface (internal)
+ for (Port p : a.getIntPorts()) {
+ scopes.add(EObjectDescription.create(p.getName(), p));
+ }
+ // interface ports not in structure (relay)
+ for (Port p : a.getIfPorts()) {
+ if (!isContained(p, a.getExtPorts()))
+ scopes.add(EObjectDescription.create(p.getName(), p));
+ }
+ }
+ }
+ else {
+ // SubSystemClass has no internal end ports
+ }
+ }
+ else {
+ // all ports in the sub actor's interface
+ if (ep.getActorRef() instanceof ActorRef) {
+ ActorClass ac = ((ActorRef)ep.getActorRef()).getType();
+ LinkedList<ActorClass> classes = getBaseClasses(ac);
+ for (ActorClass a : classes) {
+ for (Port p : a.getIfPorts()) {
+ scopes.add(EObjectDescription.create(p.getName(), p));
+ }
+ }
+ }
+ else {
+ SubSystemClass ssc = ((SubSystemRef)ep.getActorRef()).getType();
+ for (Port p : ssc.getRelayPorts()) {
+ scopes.add(EObjectDescription.create(p.getName(), p));
+ }
+ }
+ }
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of BaseState scopes for a {@link RefinedState}
+ * @param rs - the refined state
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_RefinedState_base(RefinedState rs, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorClass ac = getActorClass(rs);
+ LinkedList<BaseState> states = new LinkedList<BaseState>();
+ collectAllStates(ac.getBase(), states);
+ for (BaseState bs : states) {
+ scopes.add(EObjectDescription.create(getStatePath(bs), bs));
+ }
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of Message scopes for a {@link SemanticsInRule}
+ * @param sr - the semantics rule for incoming messages
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_SemanticsInRule_msg(SemanticsInRule sr, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ProtocolClass pc = getProtocolClass(sr);
+ LinkedList<ProtocolClass> classes = getBaseClasses(pc);
+ for (ProtocolClass bpc : classes) {
+ for (Message m : bpc.getIncomingMessages()) {
+ scopes.add(EObjectDescription.create(m.getName(), m));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of Message scopes for a {@link SemanticsInRule}
+ * @param sr - the semantics rule for incoming messages
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_SemanticsOutRule_msg(SemanticsOutRule sr, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ProtocolClass pc = getProtocolClass(sr);
+ LinkedList<ProtocolClass> classes = getBaseClasses(pc);
+ for (ProtocolClass bpc : classes) {
+ for (Message m : bpc.getOutgoingMessages()) {
+ scopes.add(EObjectDescription.create(m.getName(), m));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of ActorRef scopes for a {@link SubActorSAPoint}
+ * @param pt
+ * @param ref
+ * @return a list of scopes
+ */
+ public IScope scope_RefSAPoint_ref(RefSAPoint pt, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorContainerClass acc = getActorContainerClass(pt);
+ if (acc instanceof ActorClass) {
+ LinkedList<ActorClass> classes = getBaseClasses((ActorClass) acc);
+ for (ActorClass a : classes) {
+ for (ActorRef ar : a.getActorRefs()) {
+ scopes.add(EObjectDescription.create(ar.getName(), ar));
+ }
+ }
+ }
+ else {
+ for (ActorRef ar : acc.getActorRefs()) {
+ scopes.add(EObjectDescription.create(ar.getName(), ar));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of SPPRef scopes for a {@link RelaySAPoint}
+ * @param pt
+ * @param ref
+ * @return a list of scopes
+ */
+ public IScope scope_RelaySAPoint_relay(RelaySAPoint pt, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorClass ac = getActorClass(pt);
+ LinkedList<ActorClass> classes = getBaseClasses(ac);
+ for (ActorClass a : classes) {
+ for (SPPRef spp : a.getIfSPPs()) {
+ scopes.add(EObjectDescription.create(spp.getName(), spp));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of ActorRef scopes for a {@link SPPoint}
+ * @param pt
+ * @param ref
+ * @return a list of scopes
+ */
+ public IScope scope_SPPoint_actorRef(SPPoint pt, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorContainerClass acc = getActorContainerClass(pt);
+ if (acc instanceof ActorClass) {
+ LinkedList<ActorClass> classes = getBaseClasses((ActorClass)acc);
+ for (ActorClass a : classes) {
+ for (ActorRef ar : a.getActorRefs()) {
+ scopes.add(EObjectDescription.create(ar.getName(), ar));
+ }
+ }
+ }
+ else {
+ for (ActorRef ar : acc.getActorRefs()) {
+ scopes.add(EObjectDescription.create(ar.getName(), ar));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /**
+ * returns a flat list of SPPRef scopes for a {@link SPPoint}
+ * @param pt
+ * @param ref
+ * @return a list of scopes
+ */
+ public IScope scope_SPPoint_service(SPPoint pt, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ if (pt.getRef()!=null) {
+ if (pt.getRef() instanceof ActorRef) {
+ ActorClass ac = ((ActorRef)pt.getRef()).getType();
+ LinkedList<ActorClass> classes = getBaseClasses(ac);
+ for (ActorClass a : classes) {
+ for (SPPRef spp : a.getIfSPPs()) {
+ scopes.add(EObjectDescription.create(spp.getName(), spp));
+ }
+ }
+ }
+ else if (pt.getRef() instanceof SubSystemRef) {
+ SubSystemClass ssc = ((SubSystemRef)pt.getRef()).getType();
+ for (SPPRef spp : ssc.getIfSPPs()) {
+ scopes.add(EObjectDescription.create(spp.getName(), spp));
+ }
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ public IScope scope_MessageHandler_msg(MessageHandler handler, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ProtocolClass pc = getProtocolClass(handler);
+ if (pc!=null) {
+ for (Message m : pc.getIncomingMessages()) {
+ scopes.add(EObjectDescription.create(m.getName(), m));
+ }
+ for (Message m : pc.getOutgoingMessages()) {
+ scopes.add(EObjectDescription.create(m.getName(), m));
+ }
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+
+ /*
+ * we prefer loose scoping here and rely on validation for meaningful error messages
+ *
+ * returns a flat list of ActorClass scopes for a {@link ActorRef}
+ * @param ar - the actor reference
+ * @param ref - not used
+ * @return a list of scopes
+ */
+// public IScope scope_ActorRef_type(ActorRef ar, EReference ref) {
+// ActorClass ac = getActorClass(ar);
+// IScope scope = delegateGetScope(ar, ref);
+// return new FilteringScope(scope, new ActorRefFilter(ac));
+// }
+
+ /**
+ * returns a flat list of Port scopes for a {@link ExternalPort}
+ * @param ar - the external port
+ * @param ref - not used
+ * @return a list of scopes
+ */
+ public IScope scope_ExternalPort_ifport(ExternalPort ep, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ ActorClass ac = getActorClass(ep);
+ for (Port ip : ac.getIfPorts()) {
+ scopes.add(EObjectDescription.create(ip.getName(), ip));
+ }
+
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }
+ /**
+ * returns a flat list of Port scopes for a {@link ExternalPort}
+ * @param ar - the external port
+ * @param ref - not used
+ * @return a list of scopes
+ */
+// public IScope scope_ActorInstance_segments(ActorInstance ai, EReference ref) {
+// final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+//
+// if (ai.getSegments().isEmpty()) {
+// // context is my ActorContainerClass
+// ActorContainerClass acc = getActorContainerClass(ai);
+// for (ActorRef ar : acc.getActorRefs()) {
+// scopes.add(EObjectDescription.create(ar.getName(), ar));
+// }
+// }
+// else {
+// // context is actor class of last segment
+// ActorClass ac = ai.getSegments().get(ai.getSegments().size()-1).getType();
+// for (ActorRef ar : ac.getActorRefs()) {
+// scopes.add(EObjectDescription.create(ar.getName(), ar));
+// }
+// }
+//
+// return new SimpleScope(IScope.NULLSCOPE, scopes);
+// }
+
+ /*
+ public IScope scope_ChoicePointCaseRef_case(ChoicePointCaseRef cr, EReference ref) {
+ final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>();
+
+ if (cr.getCp()!=null) {
+ for (ChoicePointCase cas : cr.getCp().getCases()) {
+ scopes.add(EObjectDescription.create(cas.getName(), cas));
+ }
+ }
+ return new SimpleScope(IScope.NULLSCOPE, scopes);
+ }*/
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/RoomJavaValidator.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/RoomJavaValidator.java
new file mode 100644
index 000000000..fe17d8454
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/RoomJavaValidator.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+
+package org.eclipse.etrice.core.validation;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorInstancePath;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.validation.AbstractRoomJavaValidator;
+import org.eclipse.xtext.validation.Check;
+
+
+
+public class RoomJavaValidator extends AbstractRoomJavaValidator {
+
+ @Check
+ public void checkTypeNameStartsWithCapital(RoomClass type) {
+ if (!Character.isUpperCase(type.getName().charAt(0))) {
+ warning("Name should start with a capital", RoomPackage.ROOM_CLASS__NAME);
+ }
+ }
+
+ @Check
+ public void checkActorRefIsNotCircular(ActorRef ar) {
+ if (ar.eContainer() instanceof ActorClass) {
+ ActorClass ac = (ActorClass) ar.eContainer();
+
+ if (ValidationUtil.isReferencing(ar.getType(), ac)) {
+ error("Actor reference is circular", RoomPackage.ACTOR_REF__TYPE);
+ }
+ }
+ }
+
+ @Check
+ public void checkBaseClassesNotCircular(DataClass dc) {
+ if (dc==null)
+ return;
+
+ DataClass base = dc.getBase();
+ if (base!=null && ValidationUtil.isBaseOf(dc, base))
+ error("Base classes are circular", RoomPackage.ACTOR_CLASS__BASE);
+ }
+
+ @Check
+ public void checkBaseClassesNotCircular(ProtocolClass pc) {
+ if (pc==null)
+ return;
+
+ ProtocolClass base = pc.getBase();
+ if (base!=null && ValidationUtil.isBaseOf(pc, base))
+ error("Base classes are circular", RoomPackage.ACTOR_CLASS__BASE);
+ }
+
+ @Check
+ public void checkBaseClassesNotCircular(ActorClass ac) {
+ if (ac==null)
+ return;
+
+ ActorClass base = ac.getBase();
+ if (base!=null && ValidationUtil.isBaseOf(ac, base))
+ error("Base classes are circular", RoomPackage.ACTOR_CLASS__BASE);
+ }
+
+ private SubSystemClass getSubSystemClass(EObject obj) {
+ EObject ctx = obj.eContainer();
+ while (!(ctx instanceof SubSystemClass) && ctx.eContainer()!=null)
+ ctx = ctx.eContainer();
+ if (ctx instanceof SubSystemClass)
+ return (SubSystemClass) ctx;
+
+ return null;
+ }
+
+ @Check
+ public void checkInstancePath(ActorInstancePath ai) {
+ ActorContainerClass acc = getSubSystemClass(ai);
+ for (String seg : ai.getSegments()) {
+ boolean found = false;
+ for (ActorRef ar : acc.getActorRefs()) {
+ if (ar.getName().equals(seg)) {
+ acc = ar.getType();
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ error("wrong actor instance path (segment number "+ai.getSegments().indexOf(seg)+")", RoomPackage.ACTOR_INSTANCE_PATH__SEGMENTS);
+ }
+ }
+
+ @Check
+ public void checkPortCompatibility(Binding bind) {
+ if (!ValidationUtil.isValid(bind))
+ error(ValidationUtil.getErrorMessage(), RoomPackage.BINDING);
+ }
+
+ @Check
+ public void checkServiceCompatibility(LayerConnection conn) {
+ if (!ValidationUtil.isValid(conn))
+ error(ValidationUtil.getErrorMessage(), RoomPackage.LAYER_CONNECTION);
+ }
+}
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidationUtil.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidationUtil.java
new file mode 100644
index 000000000..52d45ca42
--- /dev/null
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidationUtil.java
@@ -0,0 +1,436 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.validation;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.StructureClass;
+
+public class ValidationUtil {
+
+ /**
+ * check whether dc1 is super type of dc2
+ * @param dc1
+ * @param dc2
+ * @return <code>true</code> if dc1 or one of its base types is identical to dc2
+ */
+ public static boolean isKindOf(DataClass dc1, DataClass dc2) {
+ if (dc2==null)
+ return false;
+
+ while (dc1!=null) {
+ if (dc2==dc1)
+ return true;
+ dc1 = dc1.getBase();
+ }
+ return false;
+ }
+
+ /**
+ * check whether dc1 is base class of dc2
+ * @param dc1
+ * @param dc2
+ * @return <code>true</code> if dc1 is base class of dc2
+ */
+ public static boolean isBaseOf(DataClass dc1, DataClass dc2) {
+ return isKindOf(dc2.getBase(), dc1);
+ }
+
+ /**
+ * check whether pc1 is super type of pc2
+ * @param pc1
+ * @param pc2
+ * @return <code>true</code> if pc1 or one of its base types is identical to pc2
+ */
+ public static boolean isKindOf(ProtocolClass pc1, ProtocolClass pc2) {
+ if (pc2==null)
+ return false;
+
+ while (pc1!=null) {
+ if (pc2==pc1)
+ return true;
+ pc1 = pc1.getBase();
+ }
+ return false;
+ }
+
+ /**
+ * check whether pc1 is base class of pc2
+ * @param pc1
+ * @param pc2
+ * @return <code>true</code> if pc1 is base class of pc2
+ */
+ public static boolean isBaseOf(ProtocolClass pc1, ProtocolClass pc2) {
+ return isKindOf(pc2.getBase(), pc1);
+ }
+
+ /**
+ * check whether ac1 is super type of ac2
+ * @param ac1
+ * @param ac2
+ * @return <code>true</code> if ac1 or one of its base types is identical to ac2
+ */
+ public static boolean isKindOf(ActorClass ac1, ActorClass ac2) {
+ if (ac2==null)
+ return false;
+
+ while (ac1!=null) {
+ if (ac2==ac1)
+ return true;
+ ac1 = ac1.getBase();
+ }
+ return false;
+ }
+
+ /**
+ * check whether ac1 is base class of ac2
+ * @param ac1
+ * @param ac2
+ * @return <code>true</code> if ac1 is base class of ac2
+ */
+ public static boolean isBaseOf(ActorClass ac1, ActorClass ac2) {
+ return isKindOf(ac2.getBase(), ac1);
+ }
+
+ /**
+ * check if ref recursively is referencing ac
+ * @param ref
+ * @param ac
+ * @return <code>true</code> if ref recursively is referencing ac
+ */
+ public static boolean isReferencing(ActorClass ref, ActorClass ac) {
+ if (isKindOf(ref,ac))
+ return true;
+
+ for (ActorRef ar : ref.getActorRefs()) {
+ if (isKindOf(ar.getType(), ac))
+ return true;
+ else if (isReferencing(ar.getType(), ac))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * returns true if this is a relay port
+ *
+ * @param port
+ * @return true if relay port
+ */
+ public static boolean isRelay(Port port) {
+ ActorContainerClass acc = (ActorContainerClass) port.eContainer();
+ if (acc instanceof ActorClass) {
+ if (((ActorClass)acc).getIfPorts().contains(port)) {
+ for (ExternalPort xp : ((ActorClass)acc).getExtPorts()) {
+ if (xp.getIfport()==port)
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+ else
+ return true;
+ }
+
+ /**
+ * returns true if this port is connectable inside its parent, i.e. an internal end port or a relay port
+ *
+ * @param port
+ * @return true if connectable
+ */
+ public static boolean isConnectable(Port port, ActorContainerRef ref, StructureClass acc) {
+ return isConnectable(port, ref, acc, null);
+ }
+
+ public static boolean isConnectable(Port port, ActorContainerRef ref, StructureClass acc, Binding exclude) {
+ if (port.getMultiplicity()==1 && isConnected(port, ref, acc, exclude))
+ return error("port with multiplicity 1 is already connected");
+
+ if (acc instanceof ActorClass) {
+ for (ExternalPort xp : ((ActorClass)acc).getExtPorts()) {
+ if (xp.getIfport()==port)
+ return error("external end ports must not be connected");
+ }
+ return true;
+ }
+ else
+ return true;
+ }
+
+ public static boolean isValid(Binding bind) {
+ return isConnectable(bind.getEndpoint1().getPort(), bind.getEndpoint1().getActorRef(), bind.getEndpoint2().getPort(), bind.getEndpoint2().getActorRef(), (StructureClass)bind.eContainer(), bind);
+ }
+
+ public static boolean isConnectable(BindingEndPoint ep1, BindingEndPoint ep2, StructureClass sc) {
+ return isConnectable(ep1.getPort(), ep1.getActorRef(), ep2.getPort(), ep2.getActorRef(), sc);
+ }
+
+ public static String errorMessage = "";
+ public static String getErrorMessage() {
+ return errorMessage;
+ }
+
+ private static boolean error(String msg) {
+ errorMessage = msg;
+ return false;
+ }
+
+ public static boolean isConnectable(Port p1, ActorContainerRef ref1, Port p2, ActorContainerRef ref2, StructureClass sc) {
+ return isConnectable(p1, ref1, p2, ref2, sc, null);
+ }
+
+ public static boolean isConnectable(Port p1, ActorContainerRef ref1, Port p2, ActorContainerRef ref2, StructureClass sc, Binding exclude) {
+ if (p1==p2)
+ return error("no self connection allowed, ports are indentical");
+
+ if (p1.getProtocol()!=p2.getProtocol())
+ return error("protocols don't match");
+
+ if (ref1==null && ref2==null)
+ return error("cannot connect two local ports");
+
+ if (ref1!=null && ref2!=null) {
+ if (ref1==ref2)
+ return error("ports of one ref must not be connected");
+
+ // both ports are on references
+ if (p1.isConjugated()==p2.isConjugated())
+ return error("connected sub component ports must be conjugated to each other");
+
+ if (!isConnectable(p1, ref1, sc, exclude))
+ return false;
+ if (!isConnectable(p2, ref2, sc, exclude))
+ return false;
+ }
+ else {
+ // one port is an internal end port or a relay port
+ Port local = ref1==null? p1:p2;
+ Port sub = ref1!=null? p1:p2;
+ ActorContainerRef ref = ref1!=null? ref1:ref2;
+ ActorContainerClass acc = (ActorContainerClass) ref.eContainer();
+
+ if (isRelay(local)) {
+ if (local.isConjugated()!=sub.isConjugated())
+ return error("connected relay port must have same direction");
+
+ // both must be replicated or both must be not
+ if (local.getMultiplicity()>1 && sub.getMultiplicity()==1)
+ return error("connected relay port must match replication type of peer");
+ if (local.getMultiplicity()==1 && sub.getMultiplicity()>1)
+ return error("connected relay port must match replication type of peer");
+
+ if (!isConnectable(local, null, acc, exclude))
+ return false;
+ if (!isConnectable(sub, ref, acc, exclude))
+ return false;
+ }
+ else {
+ // local port must be an internal end port
+
+ if (local.isConjugated()==sub.isConjugated())
+ return error("internal end port must have opposite direction");
+
+ if (local.getMultiplicity()>1 && sub.getMultiplicity()>1)
+ return error("not both ports can be replicated");
+ }
+ }
+
+ return true;
+ }
+
+ public static boolean isConnected(Port port, ActorContainerRef ref, StructureClass sc) {
+ return isConnected(port, ref, sc, null);
+ }
+
+ public static boolean isConnected(Port port, ActorContainerRef ref, StructureClass sc, Binding exclude) {
+ for (Binding bind : sc.getBindings()) {
+ if (bind!=exclude) {
+ if (isEndpoint(bind.getEndpoint1(), port, ref))
+ return true;
+ if (isEndpoint(bind.getEndpoint2(), port, ref))
+ return true;
+ }
+ }
+
+ if (sc instanceof ActorClass) {
+ if (((ActorClass)sc).getBase()!=null)
+ return isConnected(port, ref, ((ActorClass)sc).getBase(), exclude);
+ }
+ return false;
+ }
+
+ private static boolean isEndpoint(BindingEndPoint ep, Port port, ActorContainerRef ref) {
+ return ep.getActorRef()==ref && ep.getPort()==port;
+ }
+
+ public static boolean isRelay(SPPRef spp) {
+ ActorContainerClass acc = (ActorContainerClass) spp.eContainer();
+ if (acc instanceof ActorClass) {
+ ActorClass ac = (ActorClass) acc;
+ for (ServiceImplementation svc : ac.getServiceImplementations()) {
+ if (svc.getSpp()==spp)
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean isValid(LayerConnection lc) {
+ if (lc.getFrom() instanceof RelaySAPoint)
+ return isConnectable(((RelaySAPoint)lc.getFrom()).getRelay(), null, lc.getTo().getService(), lc.getTo().getRef(), (StructureClass)lc.eContainer(), lc);
+ else if (lc.getFrom() instanceof RefSAPoint)
+ return isConnectable(null, ((RefSAPoint)lc.getFrom()).getRef(), lc.getTo().getService(), lc.getTo().getRef(), (StructureClass)lc.eContainer(), lc);
+ else {
+ assert(false): "unexpected sub type";
+ return false;
+ }
+ }
+
+ public static boolean isConnectable(SPPRef src, ActorContainerRef srcRef,
+ SPPRef tgt, ActorContainerRef tgtRef, StructureClass ac) {
+ return isConnectable(src, srcRef, tgt, tgtRef, ac, null);
+ }
+
+ public static boolean isConnectable(SPPRef src, ActorContainerRef srcRef,
+ SPPRef dst, ActorContainerRef dstRef, StructureClass sc, LayerConnection exclude) {
+
+ if (sc==null) {
+ return false;
+ }
+
+ if ((src==null && srcRef==null) || (src!=null && srcRef!=null))
+ return error("source can be an own SPP _or_ a ref");
+
+ if (dst==null || dstRef==null)
+ return error("destination must be an SPP on a ref");
+
+ if (src!=null && isConnectedSrc(src, sc, exclude))
+ return error("source SPP is already connected");
+
+ // the destination may be connected several times, so don't check this
+ // if (isConnectedDst(dst, dstRef, sc, exclude))
+ // return error("destination SPP is already connected");
+
+ return true;
+ }
+
+ public static boolean isConnectableSrc(SPPRef src, ActorContainerRef ref,
+ StructureClass sc) {
+ return isConnectableSrc(src, ref, sc, null);
+ }
+
+ public static boolean isConnectableSrc(SPPRef src, ActorContainerRef ref,
+ StructureClass sc, LayerConnection exclude) {
+
+ if (sc==null) {
+ return false;
+ }
+
+ if ((src==null && ref==null) || (src!=null && ref!=null))
+ return false;
+
+ // in case of ref!=null no further checks possible
+ // the connection is attached to an ActorContainerRef
+ // which can be multiply connected
+
+ if (src!=null) {
+ if (isConnectedSrc(src, sc, exclude))
+ return false;
+ }
+
+ return true;
+ }
+
+ public static boolean isConnectedSrc(SPPRef src, StructureClass sc) {
+ return isConnectedSrc(src, sc, null);
+ }
+
+ public static boolean isConnectedSrc(SPPRef src, StructureClass sc, LayerConnection exclude) {
+ for (LayerConnection lc : sc.getConnections()) {
+ if (lc!=exclude)
+ if (lc.getFrom() instanceof RelaySAPoint)
+ if (((RelaySAPoint)lc.getFrom()).getRelay()==src)
+ return true;
+ }
+
+ if (sc instanceof ActorClass) {
+ ActorClass ac = (ActorClass)sc;
+
+ // check for attached services
+ for (ServiceImplementation svc : ac.getServiceImplementations()) {
+ if (svc.getSpp()==src)
+ return true;
+ }
+
+ // recurse into base classes
+ if (ac.getBase()!=null)
+ return isConnectedSrc(src, ac.getBase(), exclude);
+ }
+ return false;
+ }
+
+ public static boolean isConnectableDst(SPPRef src, ActorContainerRef ref,
+ StructureClass sc) {
+ return isConnectableDst(src, ref, sc, null);
+ }
+
+ public static boolean isConnectableDst(SPPRef dst, ActorContainerRef ref,
+ StructureClass sc, LayerConnection exclude) {
+
+ if (sc==null) {
+ return false;
+ }
+
+ if (dst==null || ref==null)
+ return false;
+
+ if (dst!=null) {
+ if (isConnectedDst(dst, ref, sc, exclude))
+ return false;
+ }
+
+ return true;
+ }
+
+ public static boolean isConnectedDst(SPPRef src, ActorContainerRef acr, StructureClass sc) {
+ return isConnectedDst(src, acr, sc, null);
+ }
+
+ public static boolean isConnectedDst(SPPRef src, ActorContainerRef acr, StructureClass sc, LayerConnection exclude) {
+ for (LayerConnection lc : sc.getConnections()) {
+ if (lc!=exclude)
+ if (lc.getTo().getService()==src && lc.getTo().getRef()==acr)
+ return true;
+ }
+
+ if (sc instanceof ActorClass) {
+ if (((ActorClass)sc).getBase()!=null)
+ return isConnectedDst(src, acr, ((ActorClass)sc).getBase(), exclude);
+ }
+ return false;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/.gitignore b/plugins/org.eclipse.etrice.generator.java/.gitignore
new file mode 100644
index 000000000..ba077a403
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..23ea67ad4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Dec 06 13:36:04 CET 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.xtend.shared.ui.prefs b/plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.xtend.shared.ui.prefs
new file mode 100644
index 000000000..756b7f257
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/.settings/org.eclipse.xtend.shared.ui.prefs
@@ -0,0 +1,3 @@
+#Sat Jul 17 15:02:10 CEST 2010
+eclipse.preferences.version=1
+metamodelContributor=org.eclipse.xtend.typesystem.emf.ui.EmfMetamodelContributor,org.eclipse.xtend.shared.ui.core.metamodel.jdt.oaw.OawClassicMetamodelContributor,org.eclipse.xtend.typesystem.uml2.ui.Uml2MetamodelContributor,org.eclipse.xtend.typesystem.xsd.ui.XSDMetamodelContributor,org.eclipse.xtend.shared.ui.core.metamodel.jdt.javabean.JavaBeanMetamodelContributor
diff --git a/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..2f18570af
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: eTrice Java Generator
+Bundle-Vendor: eTrice (Incubation)
+Bundle-Version: 0.1.0
+Bundle-SymbolicName: org.eclipse.etrice.generator.java; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0";visibility:=reexport,
+ org.eclipse.etrice.generator;bundle-version="0.1.0",
+ org.eclipse.xpand;bundle-version="1.0.1";visibility:=reexport,
+ org.eclipse.xtend;bundle-version="1.0.1";visibility:=reexport,
+ org.eclipse.xtext;bundle-version="1.0.1";visibility:=reexport,
+ org.eclipse.emf.mwe2.launch;bundle-version="1.0.1";resolution:=optional,
+ org.eclipse.emf.mwe.utils;bundle-version="1.0.0";visibility:=reexport,
+ org.eclipse.xtend.typesystem.emf;bundle-version="1.0.1";visibility:=reexport,
+ org.eclipse.xtend.util.stdlib;bundle-version="1.0.1",
+ org.eclipse.jdt.core;bundle-version="3.6.0",
+ org.eclipse.core.resources;bundle-version="3.6.0",
+ org.eclipse.core.runtime;bundle-version="3.6.0"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/plugins/org.eclipse.etrice.generator.java/about.html b/plugins/org.eclipse.etrice.generator.java/about.html
new file mode 100644
index 000000000..f47dbddbb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.generator.java/build.properties b/plugins/org.eclipse.etrice.generator.java/build.properties
new file mode 100644
index 000000000..81aa74d8a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+ .
+jre.compilation.profile = JavaSE-1.6
diff --git a/plugins/org.eclipse.etrice.generator.java/src/extensions/Extensions.ext b/plugins/org.eclipse.etrice.generator.java/src/extensions/Extensions.ext
new file mode 100644
index 000000000..8cd498468
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/extensions/Extensions.ext
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+/*
+ collection of convenience functions for code generation
+*/
+
+import room;
+import etricegen;
+
+extension org::eclipse::xtend::util::stdlib::naming;
+
+///////////////////////////////////////////////////////////////////////////////
+// general
+
+// package and path for room classes
+String getPackage(RoomClass rc): ((RoomModel)rc.eRootContainer).name;
+String getPackage(ExpandedActorClass rc): ((RoomModel)rc.actorClass.eRootContainer).name;
+String getPath(RoomClass rc): getPathFromPackage(getPackage(rc));
+
+// make a valid identifier from a path string
+String getPathName(String path): path.replaceAll("/","_");
+
+private String getPathFromPackage(String packageName):
+ packageName.replaceAll("\\.", "/") + "/";
+
+///////////////////////////////////////////////////////////////////////////////
+// types
+
+// type names for Type class (distinguish Primitive and DataClass)
+String toJavaType(PrimitiveType prim):
+switch(prim.toString()) {
+ case 'uint8': 'undefined_type'
+ case 'uint16': 'undefined_type'
+ case 'uint32': 'undefined_type'
+ case 'int8': 'undefined_type'
+ case 'int16': 'short'
+ case 'int32': 'int'
+ case 'float32': 'float'
+ case 'float64': 'double'
+ default: prim.toString()};
+String toJavaObjectType(PrimitiveType prim):
+switch(prim.toString()) {
+ case 'uint8': 'undefined_type'
+ case 'uint16': 'undefined_type'
+ case 'uint32': 'undefined_type'
+ case 'int8': 'undefined_type'
+ case 'int16': 'Short'
+ case 'int32': 'Integer'
+ case 'float32': 'Float'
+ case 'float64': 'Double'
+ default: prim.toString()};
+String typeName(Type type): type.type!=null? type.type.name : type.prim.toJavaType();
+String freeTypeName(FreeType type): type.type!=null? type.type : type.prim.toJavaType();
+String typeObjectName(Type type): type.type!=null? type.type.name : type.prim.toJavaObjectType();
+
+// default values for data
+String defaultValue(PrimitiveType prim):
+switch(prim.toString()) {
+ case 'uint8': '0'
+ case 'uint16': '0'
+ case 'uint32': '0'
+ case 'int8': '0'
+ case 'int16': '0'
+ case 'int32': '0'
+ case 'float32': '0.0'
+ case 'float64': '0.0'
+ default: prim.toString()};
+String defaultValue(TypedID a): a.type.type!=null? "new "+a.type.type.name+"()" : a.type.prim.defaultValue();
+
+///////////////////////////////////////////////////////////////////////////////
+// protocol and messages
+
+// message lists with super class messages, super classes first
+cached List[Message] getAllIncomingMessages(ProtocolClass pc): pc.base!=null? pc.base.getAllIncomingMessages().union(pc.incomingMessages) : pc.incomingMessages;
+cached List[Message] getAllOutgoingMessages(ProtocolClass pc): pc.base!=null? pc.base.getAllOutgoingMessages().union(pc.outgoingMessages) : pc.outgoingMessages;
+List[Message] getIncoming(ProtocolClass pc, boolean conj): conj? pc.getAllOutgoingMessages():pc.getAllIncomingMessages();
+List[Message] getOutgoing(ProtocolClass pc, boolean conj): conj? pc.getAllIncomingMessages():pc.getAllOutgoingMessages();
+
+PortClass getPortClass(ProtocolClass pc, boolean conj): conj? pc.conjugate:pc.regular;
+
+boolean handlesSend(ProtocolClass pc, boolean conj): pc.getPortClass(conj)==null? false:!pc.getPortClass(conj).msgHandlers.select(e|pc.getOutgoing(conj).contains(e.msg)).isEmpty;
+boolean handlesReceive(ProtocolClass pc, boolean conj): pc.getPortClass(conj)==null? false:!pc.getPortClass(conj).msgHandlers.select(e|pc.getIncoming(conj).contains(e.msg)).isEmpty;
+List[MessageHandler] getReceiveHandlers(ProtocolClass pc, boolean conj): pc.getPortClass(conj)==null? {}:pc.getPortClass(conj).msgHandlers.select(e|pc.getIncoming(conj).contains(e.msg));
+List[MessageHandler] getSendHandlers(ProtocolClass pc, boolean conj): pc.getPortClass(conj)==null? {}:pc.getPortClass(conj).msgHandlers.select(e|pc.getOutgoing(conj).contains(e.msg));
+
+MessageHandler getSendHandler(Message m, boolean conj): ((ProtocolClass)m.eContainer).getSendHandlers(conj).selectFirst(e|e.msg==m);
+
+boolean isIncoming(Message m): ((ProtocolClass)m.eContainer).getAllIncomingMessages().contains(m);
+String getCodeName(Message m): m.isIncoming()? "IN_"+m.name:"OUT_"+m.name;
+
+///////////////////////////////////////////////////////////////////////////////
+// actor structure
+
+// getting port class names from ProtocolClass, Port and ExternalPort
+String getPortClassName(ProtocolClass p, boolean conj): p.name+((conj)? "ConjPort" : "Port");
+String getPortClassName(Port p): p.multiplicity>1? getPortClassName(p.protocol, p.conjugated)+"Repl" : getPortClassName(p.protocol, p.conjugated);
+String getPortClassName(ExternalPort p): getPortClassName(p.ifport.protocol, p.ifport.conjugated);
+String getPortClassName(SAPRef sap): sap.protocol.getPortClassName(true);
+String getPortClassName(ServiceImplementation svc): svc.spp.protocol.getPortClassName(false)+"Repl";
+
+// collect internal and external end ports into one list
+// HOWTO: ac.extPorts.collect(e|e.ifport) can be abbreviated to ac.extPorts.ifport
+List[Port] getEndPorts(ActorClass ac): ac.intPorts.union(ac.extPorts.ifport);
+
+// collect also super class features (super classes first)
+//private List[Port] getAllEndPorts(ActorClass ac): ac.base!=null? ac.base.getAllEndPorts().union(ac.getEndPorts()) : ac.getEndPorts();
+//private List[Attribute] getAllAttributes(ActorClass ac): ac.base!=null? ac.base.getAllAttributes().union(ac.attributes) : ac.attributes;
+//private List[Operation] getAllOperations(ActorClass ac): ac.base!=null? ac.base.getAllOperations().union(ac.operations) : ac.operations;
+
+
+// HOWTO: polymorphic dispatching (alias method overloading) in xtend
+// state names from State sub-classes
+//private String getStateName(State state): null; // polymorphic placeholder (abstract rule)
+//private String getStateName(BaseState state): state.name;
+//private String getStateName(RefinedState state): state.base.name;
+
+// Init Transition
+Transition getInitTransition(StateGraph sg): sg.transitions.typeSelect(InitialTransition).first();
+private getTerminalFromToTransition(Transition trans): trans.to;
+getStateFromTerminal(TransitionTerminal tt): null;
+BaseState getStateFromTerminal(StateTerminal tt): tt.state;
+//getStateFromTerminal(TrPointTerminal tt): tt.trPoint;
+//getStateFromTerminal(SubStateTrPointTerminal tt): tt.state;
+//getStateFromTerminal(ChoicepointTerminal tt): tt.cp;
+BaseState getInitState(StateGraph sg) : sg.getInitTransition().getTerminalFromToTransition().getStateFromTerminal();
+
+// state lists
+boolean isLeaf(State s): s.subgraph==null;
+List[State] getLeafStateList(StateGraph sg): sg.states.collect(e|e.getLeafStateList()).flatten();
+List[State] getLeafStateList(State s): s.isLeaf()? s : s.subgraph.getLeafStateList();
+
+List[State] getStateList(StateGraph sg): sg.states.collect(e|e.getStateList()).flatten();
+List[State] getStateList(State s): s.isLeaf()? s : s.subgraph.getStateList().add(s).flatten();
+int getNumberOfInheritedStates(ActorClass ac): ac.base==null? 0:(ac.base.stateMachine.getStateList().size+ac.base.getNumberOfInheritedStates());
+List[State] getAllStates(ActorClass ac): ac.base==null? ac.stateMachine.getStateList() : ac.base.getAllStates().union(ac.stateMachine.getStateList());
+
+List[State] getBaseStateList(StateGraph sg): sg.getStateList().select(e|BaseState.isInstance(e));
+int getNumberOfInheritedBaseStates(ActorClass ac): ac.base==null? 0:(ac.base.stateMachine.getBaseStateList().size+ac.base.getNumberOfInheritedBaseStates());
+List[State] getAllBaseStates(ActorClass ac): ac.base==null? ac.stateMachine.getBaseStateList() : ac.base.getAllBaseStates().union(ac.stateMachine.getBaseStateList());
+
+
+// detail code
+boolean hasEntryCode(State s): s.entryCode.commands.size>0;
+boolean hasExitCode(State s): s.exitCode.commands.size>0;
+cached String getEntryCode(ExpandedActorClass ac, State s):
+ RefinedState.isInstance(s)? "super."+s.getEntryCodeOperationName()+"();\n"+ac.getCode(s.entryCode) : ac.getCode(s.entryCode);
+cached String getExitCode(ExpandedActorClass ac, State s):
+ RefinedState.isInstance(s)? ac.getCode(s.exitCode)+"super."+s.getEntryCodeOperationName()+"();\n" : ac.getCode(s.exitCode);
+boolean hasActionCode(Transition t): t.action.commands.size>0;
+boolean hasGuard(Trigger tr): tr.guard!=null && tr.guard.guard!=null && tr.guard.guard.commands.size>0;
+boolean hasGuard(ExpandedActorClass ac, ActiveTrigger at): at.transitions.triggers.exists(e|ac.isMatching(e, at.trigger) && e.hasGuard());
+cached String getActionCode(ExpandedActorClass ac, Transition t): ac.getCode(t.action);
+cached String getEntryCodeOperationName(State s): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getEntryCodeOperationName(org.eclipse.etrice.core.room.State);
+cached String getExitCodeOperationName(State s): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getExitCodeOperationName(org.eclipse.etrice.core.room.State);
+cached String getActionCodeOperationName(Transition t): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getActionCodeOperationName(org.eclipse.etrice.core.room.Transition);
+cached String getChainId(TransitionChain t): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getChainId(org.eclipse.etrice.generator.etricegen.TransitionChain);
+
+// State Name and StateID
+cached String getStatePathName(State s): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getStatePathName(org.eclipse.etrice.core.room.State);
+cached String getStateId(State s): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getStateId(org.eclipse.etrice.core.room.State);
+cached String getParentStateId(State s): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getParentStateId(org.eclipse.etrice.core.room.State);
+
+String getContextId(TransitionChain tc): tc.getStateContext().getStateId();
+String getExecuteChainCode(ExpandedActorClass ac, TransitionChain tc): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getExecuteChain(org.eclipse.etrice.generator.etricegen.ExpandedActorClass, org.eclipse.etrice.generator.etricegen.TransitionChain);
+
+// getTransitionList
+List[Transition] getTransitionList(State s): s.isLeaf()? {} : s.subgraph.transitions;
+List[Transition] getTransitionList(StateGraph sg): sg.transitions.union(sg.states.getTransitionList());
+
+// transition data
+private boolean hasData(TriggeredTransition tt): !tt.triggers.msgFromIfPairs.message.select(e|!e.arguments.isEmpty).isEmpty;
+private String getDataTypeCast(TriggeredTransition tt): tt.triggers.msgFromIfPairs.message.select(e|!e.arguments.isEmpty).first().arguments.first().type.typeObjectName();
+private String getDataType(TriggeredTransition tt): tt.triggers.msgFromIfPairs.message.select(e|!e.arguments.isEmpty).first().arguments.first().type.typeName();
+String getArgumentList(ExpandedActorClass xpac, Transition t): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getArgumentList(org.eclipse.etrice.generator.etricegen.ExpandedActorClass, org.eclipse.etrice.core.room.Transition);
+String getTypedDataDefinition(Message m): JAVA org.eclipse.etrice.generator.java.JavaGenerator.getTypedData(org.eclipse.etrice.core.room.Message);
+
+// stop Operation
+boolean overridesStop(ActorClass ac): !ac.operations.select(e|e.name=="stop"&&e.arguments.isEmpty&&e.returntype==null).isEmpty
+ || (ac.base!=null && ac.base.overridesStop());
+
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaGenerator.java b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaGenerator.java
new file mode 100644
index 000000000..18cce9eb8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaGenerator.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.java;
+
+import java.util.List;
+
+import org.eclipse.etrice.core.naming.RoomNameProvider;
+
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraphNode;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+
+public class JavaGenerator {
+
+ // public static interface used by Xtend
+
+ public static String getActionCodeOperationName(Transition t) {
+ return "action_"+RoomNameProvider.getFullPath(t);
+ }
+
+ public static String getEntryCodeOperationName(State s) {
+ return "entry_"+getStatePathName(s);
+ }
+
+ public static String getExitCodeOperationName(State s) {
+ return "exit_"+getStatePathName(s);
+ }
+
+ public static String getChainId(TransitionChain tc) {
+ return "CHAIN_"+RoomNameProvider.getFullPath(tc.getTransition());
+ }
+
+ public static boolean isTopLevel(StateGraphNode s) {
+ return !(s.eContainer().eContainer() instanceof State);
+ }
+
+ public static State getParentState(StateGraphNode s) {
+ if (isTopLevel(s))
+ return null;
+ else
+ return (State) s.eContainer().eContainer();
+ }
+
+ public static String getStatePathName(State s) {
+ return RoomNameProvider.getFullPath(s);
+ }
+
+ public static String getStateId(State s) {
+ if (s==null)
+ return "STATE_"+RoomNameProvider.getStateName(s);
+ else
+ return "STATE_"+RoomNameProvider.getFullPath(s);
+ }
+
+ public static String getParentStateId(State s) {
+ return getStateId(getParentState(s));
+ }
+
+ public static String getExecuteChain(ExpandedActorClass ac, TransitionChain tc) {
+ JavaTransitionChainVisitor tcv = new JavaTransitionChainVisitor(ac, tc);
+ return tc.genExecuteChain(tcv);
+ }
+
+ public static String getArgumentList(ExpandedActorClass xpac, Transition t) {
+ if (t instanceof InitialTransition)
+ // actually is InitialTransition
+ return "";
+
+ TransitionChain chain = xpac.getChain(t);
+ Trigger trigger = ((TriggeredTransition)chain.getTransition()).getTriggers().get(0);
+ MessageFromIf mif = trigger.getMsgFromIfPairs().get(0);
+
+ return getTypedArgumentList(mif.getMessage());
+ }
+
+ public static String getArgumentList(Message m) {
+ return getArglistAndTypedData(m.getArguments())[0];
+ }
+
+ public static String getTypedData(Message m) {
+ return getArglistAndTypedData(m.getArguments())[1];
+ }
+
+ public static String getTypedArgumentList(Message m) {
+ return getArglistAndTypedData(m.getArguments())[2];
+ }
+
+ public static String[] getArglistAndTypedData(List<TypedID> args) {
+ String typedData = "";
+ String dataArg = "";
+ String typedArgList = "";
+
+ int i = 0;
+ for (TypedID tid : args) {
+ String t;
+ String ct;
+ Type type = tid.getType();
+ if (type.getPrim()!=null) {
+ switch (type.getPrim()) {
+ case BOOLEAN: t = "boolean"; ct = "Boolean"; break;
+ case CHAR: t = "char"; ct = "Char"; break;
+ case FLOAT32: t = "float"; ct = "Float"; break;
+ case FLOAT64: t = "double"; ct = "Double"; break;
+ case INT32: t = "int"; ct = "Integer"; break;
+ default: t = "invalid Java data type"; ct = ""; assert(false): "Java doesn't support type "+type.getPrim().name()+"!";
+ }
+ }
+ else {
+ t = type.getType().getName();
+ ct = t;
+ }
+ typedData += t+" "+tid.getName() + " = ("+ct+") generic_data["+i+"];\n";
+ dataArg += ", "+tid.getName();
+ typedArgList += ", "+t+" "+tid.getName();
+ }
+
+ return new String[]{dataArg, typedData, typedArgList};
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaTransitionChainVisitor.java b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaTransitionChainVisitor.java
new file mode 100644
index 000000000..c79f18503
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/JavaTransitionChainVisitor.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.java;
+
+import java.util.List;
+
+
+import org.eclipse.etrice.core.room.CPBranchTransition;
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.ITransitionChainVisitor;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+
+public class JavaTransitionChainVisitor implements ITransitionChainVisitor {
+
+ private boolean firstIf = true;
+ private ExpandedActorClass ac;
+ private String typedData = "";
+ private String dataArg = "";
+
+ JavaTransitionChainVisitor(ExpandedActorClass ac, TransitionChain tc) {
+ this.ac = ac;
+
+ if (tc.getTransition() instanceof TriggeredTransition) {
+ // we rely on the previous checking during the generator model creation
+ List<TypedID> args = ((TriggeredTransition)tc.getTransition()).getTriggers().get(0).getMsgFromIfPairs().get(0).getMessage().getArguments();
+
+ String[] result = JavaGenerator.getArglistAndTypedData(args);
+ dataArg = result[0];
+ typedData = result[1];
+ }
+ }
+
+ // ITransitionChainVisitor interface
+
+ public String genActionOperationCall(Transition tr) {
+ if (tr.getAction()!=null && !tr.getAction().getCommands().isEmpty()) {
+ if (tr instanceof InitialTransition)
+ return JavaGenerator.getActionCodeOperationName(tr)+"();\n";
+ else
+ return JavaGenerator.getActionCodeOperationName(tr)+"(ifitem"+dataArg+");\n";
+ }
+ return "";
+ }
+
+ public String genEntryOperationCall(State state) {
+ return JavaGenerator.getEntryCodeOperationName(state)+"();\n";
+ }
+
+ public String genExitOperationCall(State state) {
+ return JavaGenerator.getExitCodeOperationName(state)+"();\n";
+ }
+
+ public String genElseIfBranch(CPBranchTransition tr) {
+ String result = "";
+
+ if (!firstIf )
+ result = "}\nelse ";
+ else
+ firstIf = false;
+
+ result += "if ("+ac.getCode(tr.getCondition())+") {\n";
+
+ return result;
+ }
+
+ public String genElseBranch(ContinuationTransition tr) {
+ String result = "}\nelse {\n";
+ return result;
+ }
+
+ public String genEndIf() {
+ firstIf = true;
+
+ return "}\n";
+ }
+
+ public String genReturnState(State state) {
+ return "return " + JavaGenerator.getStateId(state) + ";";
+ }
+
+ public String genTypedData() {
+ return typedData;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/ActorClass.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/ActorClass.xpt
new file mode 100644
index 000000000..5a5248cc6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/ActorClass.xpt
@@ -0,0 +1,140 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+«IMPORT etricegen»;
+
+«EXTENSION extensions::Extensions»
+«EXTENSION org::eclipse::xtend::util::stdlib::io»
+
+
+«DEFINE actorClass FOR Root»
+
+«FOREACH this.xpActorClasses AS xpac»
+«LET xpac.actorClass AS ac»
+
+«("generating "+getPath(ac)+ac.name+".java").info()»
+
+«FILE getPath(ac)+ac.name+".java"»
+package «getPackage(ac)»;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+
+«LET this.getReferencedModels(ac) AS models»
+«FOREACH models AS model»import «model.name».*;
+«ENDFOREACH»
+«ENDLET»
+
+«LET this.getReferencedProtocols(ac) AS protocols»
+«FOREACH protocols AS pc»import «getPackage(pc)».«pc.name».*;
+«ENDFOREACH»
+«ENDLET»
+
+«EXPAND ProcedureHelpers::UserCode FOR ac.userCode1»
+
+
+public «IF ac.abstract»abstract «ENDIF»class «ac.name» extends «IF ac.base!=null»«ac.base.name»«ELSE»ActorClassBase«ENDIF» {
+
+ «EXPAND ProcedureHelpers::UserCode FOR ac.userCode2»
+
+ //--------------------- ports
+ «FOREACH ac.getEndPorts() AS ep»protected «ep.getPortClassName()» «ep.name» = null;
+ «ENDFOREACH»
+ //--------------------- saps
+ «FOREACH ac.strSAPs AS sap»protected «sap.getPortClassName()» «sap.name» = null;
+ «ENDFOREACH»
+ //--------------------- services
+ «FOREACH ac.serviceImplementations AS svc»protected «svc.getPortClassName()» «svc.spp.name» = null;
+ «ENDFOREACH»
+
+ //--------------------- interface item IDs
+ «FOREACH ac.getEndPorts() AS ep»protected static final int IFITEM_«ep.name» = «xpac.getInterfaceItemLocalId(ep)»;
+ «ENDFOREACH»
+ «FOREACH ac.strSAPs AS sap»protected static final int IFITEM_«sap.name» = «xpac.getInterfaceItemLocalId(sap)»;
+ «ENDFOREACH»
+ «FOREACH ac.serviceImplementations AS svc»protected static final int IFITEM_«svc.spp.name» = «xpac.getInterfaceItemLocalId(svc.spp)»;
+ «ENDFOREACH»
+
+ «EXPAND ProcedureHelpers::Attributes FOR ac.attributes»
+ «EXPAND ProcedureHelpers::AttributeSettersGetters FOR ac.attributes»
+ «EXPAND ProcedureHelpers::Operations FOR ac.operations»
+
+ //--------------------- construction
+ public «ac.name»(IRTObject parent, String name, IMessageReceiver msgsvc, Address[][] port_addr, Address[][] peer_addr){
+ «IF ac.base==null»
+ super(parent, name, msgsvc);
+ «ELSE»
+ super(parent, name, msgsvc, port_addr, peer_addr);
+ «ENDIF»
+ setClassName("«ac.name»");
+
+ // own ports«FOREACH ac.getEndPorts() AS ep»
+ «ep.name» = new «ep.getPortClassName()»(this, "«ep.name»", IFITEM_«ep.name», «IF ep.multiplicity==1»0, «ENDIF»port_addr[IFITEM_«ep.name»]«IF ep.multiplicity==1»[0]«ENDIF», peer_addr[IFITEM_«ep.name»]«IF ep.multiplicity==1»[0]«ENDIF», msgsvc);
+ «ENDFOREACH»
+ // own saps«FOREACH ac.strSAPs AS sap»
+ «sap.name» = new «sap.getPortClassName()»(this, "«sap.name»", IFITEM_«sap.name», 0, port_addr[IFITEM_«sap.name»][0], peer_addr[IFITEM_«sap.name»][0], msgsvc);
+ «ENDFOREACH»
+ // own service implementations«FOREACH ac.serviceImplementations AS svc»
+ «svc.spp.name» = new «svc.getPortClassName()»(this, "«svc.spp.name»", IFITEM_«svc.spp.name», port_addr[IFITEM_«svc.spp.name»], peer_addr[IFITEM_«svc.spp.name»], msgsvc);
+ «ENDFOREACH»
+ }
+
+
+ //--------------------- lifecycle functions
+ public void init(){
+ //System.out.println(toString()+"::init()");
+ }
+
+ public void start(){
+ //System.out.println(toString()+"::start()");
+
+ //TODO: execution of initial transition should also be triggered by message
+ «IF xpac.hasStateMachine()»
+ executeInitTransition();
+ «ENDIF»
+ }
+
+ «IF !ac.overridesStop()»
+ public void stop(){
+ //System.out.println(toString()+"::stop()");
+ }
+ «ENDIF»
+
+ public void destroy(){
+ //System.out.println(toString()+"::destroy()");
+ }
+
+ «IF ac.stateMachine != null»
+ «EXPAND StateMachine::stateMachine FOR xpac»
+ «ELSEIF !xpac.hasStateMachine()»
+ //--------------------- no state machine
+ @Override
+ public void receiveEvent(InterfaceItemBase ifitem, int evt, Object... data) {
+ }
+
+ «ENDIF»
+};
+«ENDFILE»
+«ENDLET»
+«ENDFOREACH»
+«ENDDEFINE»
+
+«DEFINE msgArgs FOR Message»
+«FOREACH this.arguments AS a SEPARATOR ", "»«a.defaultValue()»«ENDFOREACH»
+«ENDDEFINE»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/DataClass.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/DataClass.xpt
new file mode 100644
index 000000000..e58bc0063
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/DataClass.xpt
@@ -0,0 +1,48 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+«IMPORT etricegen»;
+
+«EXTENSION extensions::Extensions»
+«EXTENSION org::eclipse::xtend::util::stdlib::io»
+
+«DEFINE dataClass FOR Root»
+
+«FOREACH this.usedDataClasses AS dc»
+
+«("generating "+getPath(dc)+dc.name+".java").info()»
+
+«FILE getPath(dc)+dc.name+".java"»
+package «getPackage(dc)»;
+
+«LET this.getReferencedModels(dc) AS models»
+«FOREACH models AS model»import «model.name».*;
+«ENDFOREACH»
+«ENDLET»
+
+«IF dc.imports.size>0»
+// user imports
+«FOREACH dc.imports AS imp»import «imp.importedNamespace».*;
+«ENDFOREACH»«ENDIF»
+
+public class «dc.name»«IF dc.base!=null» extends «dc.base.name»«ENDIF» {
+ «EXPAND ProcedureHelpers::Attributes FOR dc.attributes»
+ «EXPAND ProcedureHelpers::AttributeSettersGetters FOR dc.attributes»
+ «EXPAND ProcedureHelpers::Operations FOR dc.operations»
+};
+«ENDFILE»
+«ENDFOREACH»
+«ENDDEFINE»
+
+
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/Main.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/Main.xpt
new file mode 100644
index 000000000..185e57081
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/Main.xpt
@@ -0,0 +1,23 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+«IMPORT etricegen»
+
+«DEFINE main FOR Root-»
+ «EXPAND DataClass::dataClass FOR this»
+ «EXPAND ProtocolClass::protocolClass FOR this»
+ «EXPAND ActorClass::actorClass FOR this»
+ «EXPAND SubSystemClass::subSystemClass FOR this»
+ «EXPAND SubSystemRunner::subSystemRunner FOR this»
+«ENDDEFINE»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/ProcedureHelpers.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/ProcedureHelpers.xpt
new file mode 100644
index 000000000..afbd0dbf0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/ProcedureHelpers.xpt
@@ -0,0 +1,55 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+
+«EXTENSION extensions::Extensions»
+
+«DEFINE ActorClassPortIF FOR ActorClass»
+ «IF this.extPorts.size > 0»implements«ENDIF»
+ «FOREACH this.extPorts AS ep»public «ep.ifport.protocol.name»«IF ep.ifport.conjugated==true»Conj«ENDIF»Port «ep.ifport.name» = null;
+ «ENDFOREACH»
+
+«ENDDEFINE»
+
+«DEFINE UserCode FOR DetailCode »
+ «IF this!=null»
+ //--------------------- begin user code
+ «FOREACH this.commands AS command» «command»
+ «ENDFOREACH»//--------------------- end user code
+ «ENDIF»
+«ENDDEFINE»
+
+«DEFINE Attributes FOR List[Attribute] »
+ //--------------------- attributes
+ «FOREACH this AS attribute»private «attribute.type.typeName()» «attribute.name»;
+ «ENDFOREACH»
+«ENDDEFINE»
+
+«DEFINE AttributeSettersGetters FOR List[Attribute] »
+ //--------------------- attribute setters and getters
+ «FOREACH this AS attribute»public void set«attribute.name.toFirstUpper()» («attribute.type.typeName()» «attribute.name») {
+ this.«attribute.name» = «attribute.name»;
+ }
+ public «attribute.type.typeName()» get«attribute.name.toFirstUpper()» () {
+ return «attribute.name»;
+ }«ENDFOREACH»
+«ENDDEFINE»
+
+«DEFINE Operations FOR List[Operation] »
+ //--------------------- operations
+ «FOREACH this AS operation»public «IF operation.returntype==null»void«ELSE»«operation.returntype.freeTypeName()»«ENDIF» «operation.name» («FOREACH operation.arguments AS argument SEPARATOR ", "»«argument.type.freeTypeName()» «argument.name»«ENDFOREACH»){
+ «FOREACH operation.detailCode.commands AS command» «command»
+ «ENDFOREACH»
+ }«ENDFOREACH»
+«ENDDEFINE»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/ProtocolClass.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/ProtocolClass.xpt
new file mode 100644
index 000000000..610573a98
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/ProtocolClass.xpt
@@ -0,0 +1,222 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+«IMPORT etricegen»;
+
+«EXTENSION extensions::Extensions»
+«EXTENSION org::eclipse::xtend::util::stdlib::io»
+
+«DEFINE protocolClass FOR Root»
+
+«FOREACH this.usedProtocolClasses AS pc»
+
+«("generating "+getPath(pc)+pc.name+".java").info()»
+
+«FILE getPath(pc)+pc.name+".java"»
+package «getPackage(pc)»;
+
+import java.util.ArrayList;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.Message;
+import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.*;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+
+«EXPAND ProcedureHelpers::UserCode FOR pc.userCode1»
+
+«LET this.getReferencedModels(pc) AS models»
+«FOREACH models AS model»import «model.name».*;
+«ENDFOREACH»
+«ENDLET»
+
+public class «pc.name» {
+ // message IDs
+ // TODO: separate class for message IDs: class MSG{public static volatile int MSG_MIN = 0; ...} -> better structure
+ // error if msgID <= MSG_MIN
+ public static final int MSG_MIN = 0;
+ //IDs for outgoing messages
+ «FOREACH pc.getAllOutgoingMessages() AS message ITERATOR iter»public static final int OUT_«message.name» = «iter.counter1»;
+ «ENDFOREACH»
+ //IDs for incoming messages
+ «FOREACH pc.getAllIncomingMessages() AS message ITERATOR iter»public static final int IN_«message.name» = «iter.counter1+pc.getAllOutgoingMessages().size»;
+ «ENDFOREACH»
+ //error if msgID >= MSG_MAX
+ public static final int MSG_MAX = «pc.getAllOutgoingMessages().size + pc.getAllIncomingMessages().size+1»;
+
+ «EXPAND ProcedureHelpers::UserCode FOR pc.userCode2»
+
+ private static String messageStrings[] = {"MIN", «FOREACH pc.getAllOutgoingMessages() AS m»"«m.name»",«ENDFOREACH» «FOREACH pc.getAllIncomingMessages() AS m»"«m.name»",«ENDFOREACH»"MAX"};
+
+ public String getMessageString(int msg_id) {
+ if (msg_id<0 || msg_id>MSG_MAX+1){
+ // id out of range
+ return "Message ID out of range";
+ }
+ else{
+ return messageStrings[msg_id];
+ }
+ }
+
+ «EXPAND portClass(false) FOR pc»
+ «EXPAND portClass(true) FOR pc»
+}
+«ENDFILE»
+«ENDFOREACH»
+«ENDDEFINE»
+
+«DEFINE portClass(Boolean conj) FOR ProtocolClass»
+
+«LET getPortClassName(this, conj) AS name»
+«LET this.getPortClass(conj) AS pclass»
+
+// port class
+static public class «name» extends PortBase {
+ «IF pclass!=null»«EXPAND ProcedureHelpers::UserCode FOR pclass.userCode»
+ «ENDIF»
+
+ // constructors
+ public «name»(IEventReceiver actor, String name, int localId, Address addr, Address peerAddress, IMessageReceiver msgService) {
+ super(actor, name, localId, 0, addr, peerAddress, msgService);
+ DebuggingService.getInstance().addPortInstance(this);
+ }
+ public «name»(IEventReceiver actor, String name, int localId, int idx, Address addr, Address peerAddress, IMessageReceiver msgService) {
+ super(actor, name, localId, idx, addr, peerAddress, msgService);
+ DebuggingService.getInstance().addPortInstance(this);
+ }
+
+ @Override
+ public void receive(Message m) {
+ if (!(m instanceof EventMessage))
+ return;
+ EventMessage msg = (EventMessage) m;
+ if (msg.getEvtId() <= 0 || msg.getEvtId() >= MSG_MAX)
+ System.out.println("unknown");
+ else {
+ if (messageStrings[msg.getEvtId()] != "timerTick"){
+ // TODOTS: model switch for activation
+ DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);
+ }
+ «IF this.handlesReceive(conj)»
+ switch (msg.getEvtId()) {
+ «FOREACH this.getReceiveHandlers(conj) AS hdlr»
+ case «hdlr.msg.getCodeName()»:
+ {
+ «FOREACH hdlr.detailCode.commands AS command» «command»
+ «ENDFOREACH»
+ }
+ break;
+ «ENDFOREACH»
+ default:
+ «ENDIF»
+ if (msg instanceof EventWithDataMessage)
+ getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());
+ else
+ getActor().receiveEvent(this, msg.getEvtId());
+ «IF this.handlesReceive(conj)»
+ }«ENDIF»
+ }
+ }
+
+ «EXPAND ProcedureHelpers::Attributes FOR pclass.attributes»
+ «EXPAND ProcedureHelpers::Operations FOR pclass.operations»
+
+ // sent messages
+ «FOREACH this.getOutgoing(conj) AS m»«EXPAND sendMessage(conj) FOR m»«ENDFOREACH»
+}
+
+// replicated port class
+static public class «name»Repl {
+ private ArrayList<«name»> ports;
+ private int replication;
+
+ public «name»Repl(IEventReceiver actor, String name, int localId, Address[] addr,
+ Address[] peerAddress, IMessageReceiver msgService) {
+ replication = addr.length;
+ ports = new ArrayList<«this.name».«name»>(replication);
+ for (int i=0; i<replication; ++i) {
+ ports.add(new «name»(
+ actor, name+i, localId, i, addr[i], peerAddress[i], msgService));
+ }
+ }
+
+ public int getReplication() {
+ return replication;
+ }
+
+ public «name» get(int i) {
+ return ports.get(i);
+ }
+
+ «IF conj»
+ // incoming messages
+ «FOREACH this.getAllIncomingMessages() AS m»
+ «EXPAND messageSignature FOR m»{
+ for (int i=0; i<replication; ++i) {
+ ports.get(i).«EXPAND messageCall FOR m»;
+ }
+ }
+ «ENDFOREACH»
+ «ELSE»
+ // outgoing messages
+ «FOREACH this.getAllOutgoingMessages() AS m»
+ «EXPAND messageSignature FOR m»{
+ for (int i=0; i<replication; ++i) {
+ ports.get(i).«EXPAND messageCall FOR m»;
+ }
+ }
+ «ENDFOREACH»
+ «ENDIF»
+}
+
+// interface for port class
+public interface I«name»{
+ «IF conj»
+ // outgoing messages
+ «FOREACH this.getAllOutgoingMessages() AS m» «EXPAND messageSignature FOR m»;
+ «ENDFOREACH»
+ «ELSE»
+ // incoming messages
+ «FOREACH this.getAllIncomingMessages() AS m» «EXPAND messageSignature FOR m»;
+ «ENDFOREACH»
+ «ENDIF»
+}
+
+«ENDLET»
+«ENDLET»
+«ENDDEFINE»
+
+«DEFINE messageSignature FOR Message»public void «this.name» («FOREACH this.arguments AS a SEPARATOR "," »«a.type.typeName()» «a.name»«ENDFOREACH»)«ENDDEFINE»
+«DEFINE messageCall FOR Message»«this.name»(«FOREACH this.arguments AS a SEPARATOR ","» «a.name»«ENDFOREACH»)«ENDDEFINE»
+«DEFINE sendMessage(boolean conj) FOR Message»
+«LET conj?"IN":"OUT" AS dir»
+«LET this.getSendHandler(conj) AS hdlr»
+ «EXPAND messageSignature FOR this»{
+ «IF hdlr!=null»
+ «FOREACH hdlr.detailCode.commands AS command» «command»
+ «ENDFOREACH»
+ «ELSE»
+ if (messageStrings[ «dir»_«this.name»] != "timerTick"){
+ // TODOTS: model switch for activation
+ DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[«dir»_«this.name»]);
+ }
+ if (getPeerAddress()!=null)
+ «IF this.arguments.isEmpty»getMsgReceiver().receive(new EventMessage(getPeerAddress(), «dir»_«this.name»));
+ «ELSE» getMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), «dir»_«this.name», new Object[]{«FOREACH this.arguments AS a SEPARATOR ","» «a.name»«ENDFOREACH»}));
+ «ENDIF»
+ «ENDIF»
+ }
+«ENDLET»
+«ENDLET»
+«ENDDEFINE»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/StateMachine.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/StateMachine.xpt
new file mode 100644
index 000000000..07b600a40
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/StateMachine.xpt
@@ -0,0 +1,228 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+«IMPORT etricegen»;
+
+«EXTENSION extensions::Extensions»
+«EXTENSION org::eclipse::xtend::util::stdlib::io»
+
+
+«DEFINE stateMachine FOR ExpandedActorClass»
+«LET this.actorClass AS ac»
+//******************************************
+// START of generated code for FSM
+//******************************************
+
+// State IDs for FSM
+«LET ac.getNumberOfInheritedBaseStates() AS offset»
+«FOREACH ac.stateMachine.getBaseStateList() AS state ITERATOR iter»protected static final int «state.getStateId()» = «iter.counter1+1+offset»;
+«ENDFOREACH»«ENDLET»
+protected static final String stateStrings[] = {"<no state>","<top>",«FOREACH ac.getAllBaseStates() AS state ITERATOR iter SEPARATOR ","»"«state.getStatePathName()»"
+«ENDFOREACH»};
+
+// history
+// TODOHRR: history defined in ActorClassBase, init in constructor
+// history = new int[5];
+// for (int i = 0; i < history.length; i++) {
+// history[i] = NO_STATE;
+// }
+protected int history[] = {NO_STATE,NO_STATE«FOREACH ac.getAllBaseStates() AS state»,NO_STATE«ENDFOREACH»};
+
+«LET this.getOwnTransitionChains() AS chains»
+«LET this.getTransitionChains().size-chains.size AS offset»
+// transition chains
+«FOREACH chains AS tc ITERATOR i»protected static final int «tc.getChainId()» = «i.counter1+offset»;
+«ENDFOREACH»«ENDLET»«ENDLET»
+
+«LET this.getOwnTriggers() AS triggers»
+// triggers for FSM
+«FOREACH triggers AS mif»protected static final int «this.getTriggerCodeName(mif)» = IFITEM_«mif.from.name» + EVT_SHIFT*«this.getMessageID(mif)»;
+«ENDFOREACH»«ENDLET»
+
+// receiveEvent contains the main implementation of the FSM
+@Override
+public void receiveEvent(InterfaceItemBase ifitem, int evt, Object... generic_data) {
+ int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;
+ int chain = NOT_CAUGHT;
+ int catching_state = NO_STATE;
+ boolean is_handler = false;
+
+ switch (state) {
+ «FOREACH this.stateMachine.getLeafStateList() AS state»
+ case «state.getStateId()»:
+ «LET this.getActiveTriggers(state) AS atlist»
+ «IF !atlist.isEmpty»
+ switch(trigger) {
+ «FOREACH atlist AS at»
+ case «this.getTriggerCodeName(at.trigger)»:
+ «LET this.hasGuard(at) AS needData»
+ «IF needData»{ «at.msg.getTypedDataDefinition()»«ENDIF»
+ «FOREACH at.transitions AS tt SEPARATOR " else "»
+ «LET this.getChain(tt) AS chain»
+ «EXPAND guard(at.trigger, this) FOR chain.transition»
+ {
+ chain = «chain.getChainId()»;
+ catching_state = «chain.getContextId()»;
+ «IF chain.isHandler()»is_handler = true;«ENDIF»
+ }
+ «ENDLET»
+ «ENDFOREACH»
+ «IF needData»}«ENDIF»
+ «ENDLET»
+ break;
+ «ENDFOREACH»
+ }
+ «ENDIF»«ENDLET»
+ break;
+ «ENDFOREACH»
+ }
+ if (chain != NOT_CAUGHT) {
+ exitTo(state, catching_state, is_handler);
+ int next = executeTransitionChain(chain, ifitem, generic_data);
+ next = enterHistory(next, is_handler);
+ setState(next);
+ }
+}
+
+private void setState(int new_state) {
+ DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);
+ if (stateStrings[new_state]!="Idle") {
+ // TODOTS: model switch for activation
+ System.out.println(getInstancePath() + " -> " + stateStrings[new_state]);
+ }
+ this.state = new_state;
+}
+
+protected void executeInitTransition() {
+ «LET this.stateMachine.getInitTransition() AS initt»
+ int chain = «this.getChain(initt).getChainId()»;
+ int next = executeTransitionChain(chain, null, null);
+ next = enterHistory(next, false);
+ setState(next);
+ «ENDLET»
+}
+
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current - the current state
+ * @param to - the final parent state
+ * @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)
+ */
+private void exitTo(int current, int to, boolean handler) {
+ while (current!=to) {
+ switch (current) {
+ «FOREACH this.stateMachine.getBaseStateList() AS state»
+ case «state.getStateId()»:
+ «IF state.hasExitCode()»if (!handler) «state.getExitCodeOperationName()»();«ENDIF»
+ history[«state.getParentStateId()»] = «state.getStateId()»;
+ current = «state.getParentStateId()»;
+ break;
+ «ENDFOREACH»
+ }
+ }
+}
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain - the chain ID
+ * @param generic_data - the generic data pointer
+ * @return the ID of the final state
+ */
+private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object[] generic_data) {
+ switch (chain) {
+ «LET this.getTransitionChains() AS chains»
+ «FOREACH chains AS tc»
+ case «tc.getChainId()»:
+ {
+ «this.getExecuteChainCode(tc)»
+ }
+ «ENDFOREACH»«ENDLET»
+ }
+ return NO_STATE;
+}
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state - the state which is entered
+ * @param handler - entry code is executed if not handler
+ * @return - the ID of the final leaf state
+ */
+private int enterHistory(int state, boolean handler) {
+ while (true) {
+ switch (state) {
+ «FOREACH this.stateMachine.getBaseStateList() AS state»
+ case «state.getStateId()»:
+ «IF state.hasEntryCode()»if (!handler) «state.getEntryCodeOperationName()»();«ENDIF»
+ «IF state.isLeaf()»
+ return state;
+ «ELSE»
+ if (history[state]==NO_STATE) {
+ «LET state.subgraph.getInitTransition() AS initt»
+ «IF initt!=null»
+ int chain = «this.getChain(initt).getChainId()»;
+ int next = executeTransitionChain(chain, null, null);
+ state = enterHistory(next, false);
+ «ENDIF»
+ «ENDLET»
+ state = «state.subgraph.getInitState().getStateId()»;
+ }
+ else {
+ state = history[state];
+ }
+ break;
+ «ENDIF»
+ «ENDFOREACH»
+ }
+ }
+}
+
+//*** Entry and Exit Codes
+«FOREACH this.stateMachine.getStateList() AS state»
+ «IF this.isOwnObject(state)»
+ «IF state.hasEntryCode()»
+ protected void «state.getEntryCodeOperationName()»() {
+ «this.getEntryCode(state)»}
+ «ENDIF»
+ «IF state.hasExitCode()»
+ protected void «state.getExitCodeOperationName()»() {
+ «this.getExitCode(state)»}
+ «ENDIF»
+ «ENDIF»
+«ENDFOREACH»
+
+//*** Action Codes
+«FOREACH this.stateMachine.getTransitionList() AS tr»
+ «IF this.isOwnObject(tr) && tr.hasActionCode()»
+ protected void «tr.getActionCodeOperationName()»(«IF NonInitialTransition.isInstance(tr)»InterfaceItemBase ifitem«this.getArgumentList(tr)»«ENDIF») {
+ «this.getActionCode(tr)»}
+ «ENDIF»
+«ENDFOREACH»
+
+//******************************************
+// END of generated code for FSM
+//******************************************
+«ENDLET»
+«ENDDEFINE»
+
+«DEFINE guard(String trigger, ExpandedActorClass ac) FOR TriggeredTransition»
+ «LET this.triggers.selectFirst(e|ac.isMatching(e, trigger)) AS tr»
+ «IF tr.hasGuard()»
+ if («ac.getCode(tr.guard.guard)»)
+ «ENDIF»
+ «ENDLET»
+«ENDDEFINE»
+
+«DEFINE guard(String trigger, ExpandedActorClass ac) FOR Transition»
+/* error */
+«ENDDEFINE»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemClass.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemClass.xpt
new file mode 100644
index 000000000..2e8153f32
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemClass.xpt
@@ -0,0 +1,83 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+«IMPORT etricegen»;
+
+«EXTENSION extensions::Extensions»
+«EXTENSION org::eclipse::xtend::util::stdlib::io»
+
+«DEFINE subSystemClass FOR Root»
+
+«FOREACH this.subSystems AS comp»
+
+«LET comp.subSystemClass AS cc»
+
+«("generating "+getPath(cc)+cc.name+"_controller.java").info()»
+«FILE getPath(cc)+cc.name+".java"»
+package «getPackage(cc)»;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+
+«LET this.getReferencedModels(cc) AS models»
+«FOREACH models AS model»import «model.name».*;«ENDFOREACH»
+«ENDLET»
+
+
+public class «comp.name» extends SubSystemClassBase {
+
+ public «comp.name»(IRTObject parent, String name) {
+ super(parent, name);
+ }
+
+ @Override
+ public void instantiateActors(){
+ // all addresses
+ «FOREACH comp.allContainedInstances AS ai»
+ // interface items of «ai.path»«FOREACH ai.orderedIfItemInstances AS pi»
+ «IF ServiceImplInstance.isInstance(pi) || pi.peers.size>1»«FOREACH pi.peers AS peer ITERATOR i»Address addr«pi.path.getPathName()»_«i.counter0» = new Address(0,0,«pi.objId»+«i.counter0»);
+ «ENDFOREACH»
+ «ELSE»Address addr«pi.path.getPathName()» = new Address(0,0,«pi.objId»);
+ «ENDIF»
+ «ENDFOREACH»
+ «ENDFOREACH»
+
+ // instantiate all actor instances
+ instances = new ActorClassBase[«comp.allContainedInstances.size»];
+ «FOREACH comp.allContainedInstances AS ai»instances[«comp.allContainedInstances.indexOf(ai)»] = new «ai.actorClass.name»(
+ «IF SubSystemInstance.isInstance(ai.eContainer)»this«ELSE»instances[«comp.allContainedInstances.indexOf(ai.eContainer)»]«ENDIF»,
+ "«ai.name»",
+ getMsgService(),
+ // own interface item addresses
+ new Address[][] {«FOREACH ai.orderedIfItemInstances AS pi SEPARATOR ","»{«IF ServiceImplInstance.isInstance(pi) || pi.peers.size>1»«FOREACH pi.peers AS peer ITERATOR i SEPARATOR ","»addr«pi.path.getPathName()»_«i.counter0»«ENDFOREACH»
+ «ELSE»addr«pi.path.getPathName()»
+ «ENDIF»}
+ «ENDFOREACH»},
+ // peer interface item addresses
+ new Address[][] {«FOREACH ai.orderedIfItemInstances AS pi SEPARATOR ","»{«IF !ServiceImplInstance.isInstance(pi) && pi.peers.isEmpty»null«ELSE»«FOREACH pi.peers AS pp SEPARATOR ","»«IF ServiceImplInstance.isInstance(pp) || pp.peers.size>1»addr«pp.path.getPathName()»_«pp.peers.indexOf(pi)»
+ «ELSE»addr«pp.path.getPathName()»
+ «ENDIF»
+ «ENDFOREACH»«ENDIF»}
+ «ENDFOREACH»}
+ );
+ «ENDFOREACH»
+ }
+};
+«ENDFILE»
+
+«ENDLET»
+«ENDFOREACH»
+«ENDDEFINE»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemRunner.xpt b/plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemRunner.xpt
new file mode 100644
index 000000000..e570c223e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/templates/SubSystemRunner.xpt
@@ -0,0 +1,70 @@
+«REM»
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+«ENDREM»
+«IMPORT room»;
+«IMPORT etricegen»;
+
+«EXTENSION extensions::Extensions»
+«EXTENSION org::eclipse::xtend::util::stdlib::io»
+
+«DEFINE subSystemRunner FOR Root»
+
+«FOREACH this.subSystems AS ssc»
+
+«LET ssc.subSystemClass AS cc»
+
+«("generating "+getPath(cc)+cc.name+"Runner.java").info()»
+«FILE getPath(cc)+cc.name+"Runner.java"»
+
+/**
+ * @author generated by eTrice
+ *
+ * this class contains the main function running component «ssc.name»
+ * it instantiates «ssc.name» and starts and ends the lifecycle
+ */
+
+package «getPackage(cc)»;
+
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemRunnerBase;
+
+class «ssc.name+"Runner"» extends SubSystemRunnerBase {
+
+ static «ssc.name» main_component = new «ssc.name»(null, "«ssc.name»");
+
+ /**
+ * main function
+ * creates component and starts and stops the lifecycle
+ */
+ public static void main(String[] args) {
+
+ System.out.println("*** T H E B E G I N ***");
+
+ main_component.init(); // lifecycle init
+ main_component.start(); // lifecycle start
+
+ // application runs until quit
+ waitForQuit();
+
+ // end the lifecycle
+ main_component.stop(); // lifecycle stop
+ main_component.destroy(); // lifecycle destroy
+
+ System.out.println("*** T H E E N D ***");
+ }
+};
+
+«ENDFILE»
+
+«ENDLET»
+«ENDFOREACH»
+«ENDDEFINE»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/workflow/RoomGenerator.mwe2 b/plugins/org.eclipse.etrice.generator.java/src/workflow/RoomGenerator.mwe2
new file mode 100644
index 000000000..2f5957f50
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/workflow/RoomGenerator.mwe2
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+module workflow.RoomGenerator
+
+import org.eclipse.emf.mwe.utils.*
+
+var sourceDir = ""
+var targetDir = ""
+var fileEncoding = "Cp1252"
+
+Workflow {
+
+ component = org.eclipse.xtext.mwe.Reader {
+ // lookup all resources on the classpath
+ // useJavaClassPath = true
+
+ // or define search scope explicitly
+ path = sourceDir
+ useJavaClassPath=true
+
+ // this class will be generated by the xtext generator
+ register = org.eclipse.etrice.core.RoomStandaloneSetup {}
+ load = {
+ slot = "model"
+
+ // HOWTO: feed top level object into generator
+ // Sven Efftinge in news://news.eclipse.org:119/hlh0ju$if8$1@build.eclipse.org:
+ // "The new reader is based on EObjectDescriptions, which are by default only available and created for elements, which have a name."
+ // ==> Therefore we introduced a name for the model in Room.xtext
+ type = "RoomModel"
+ }
+ }
+
+ // HOWTO: call a custom workflow component
+ component = org.eclipse.etrice.generator.workflow.InstanceModelCreator {
+ inSlot = "model"
+ outSlot = "instance_model"
+ debug = true // debug flag for verbose output
+ save = true // save intermediate model for debugging purposes
+ uri = "src-gen/tmp.rim" // name of intermediate model file
+ }
+
+ component = org.eclipse.xpand2.Generator {
+ metaModel = org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel {}
+ expand = "templates::Main::main FOREACH instance_model"
+ outlet = {
+ path = targetDir
+ postprocessor = org.eclipse.xpand2.output.JavaBeautifier {}
+ }
+ fileEncoding = fileEncoding
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator/.gitignore b/plugins/org.eclipse.etrice.generator/.gitignore
new file mode 100644
index 000000000..ba077a403
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..0a9d54ef4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF
@@ -0,0 +1,41 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: eTrice Generator Model
+Bundle-SymbolicName: org.eclipse.etrice.generator;singleton:=true
+Bundle-Version: 0.1.0
+Bundle-ClassPath: .
+Bundle-Vendor: eTrice (Incubation)
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6,
+ J2SE-1.5
+Export-Package: org.eclipse.etrice.generator.builder;uses:="org.eclipse.emf.ecore,org.eclipse.etrice.generator.etricegen",
+ org.eclipse.etrice.generator.etricegen;uses:="org.eclipse.emf.ecore,org.eclipse.emf.common.util,org.eclipse.etrice.core.room",
+ org.eclipse.etrice.generator.etricegen.impl;
+ uses:="org.eclipse.emf.ecore,
+ org.eclipse.emf.common.util,
+ org.eclipse.etrice.core.room.impl,
+ org.eclipse.etrice.core.room,
+ org.eclipse.etrice.generator.etricegen,
+ org.eclipse.emf.ecore.impl,
+ org.eclipse.emf.common.notify",
+ org.eclipse.etrice.generator.etricegen.util;
+ uses:="org.eclipse.emf.ecore.xmi.impl,
+ org.eclipse.emf.ecore.resource,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.common.util,
+ org.eclipse.emf.common.notify.impl,
+ org.eclipse.etrice.core.room,
+ org.eclipse.etrice.generator.etricegen,
+ org.eclipse.emf.ecore.resource.impl,
+ org.eclipse.emf.common.notify",
+ org.eclipse.etrice.generator.workflow;
+ uses:="org.eclipse.emf.ecore,
+ org.eclipse.etrice.generator.etricegen,
+ org.eclipse.emf.mwe2.runtime.workflow,
+ org.eclipse.etrice.generator.builder"
+Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0",
+ org.eclipse.core.runtime;bundle-version="3.6.0",
+ org.eclipse.emf.ecore;bundle-version="2.6.0";visibility:=reexport,
+ org.eclipse.emf.mwe2.runtime;bundle-version="1.0.1",
+ org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
+ org.eclipse.xtend.util.stdlib;bundle-version="1.0.1"
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.etrice.generator/about.html b/plugins/org.eclipse.etrice.generator/about.html
new file mode 100644
index 000000000..f47dbddbb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.generator/build.properties b/plugins/org.eclipse.etrice.generator/build.properties
new file mode 100644
index 000000000..b10b95c1e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/build.properties
@@ -0,0 +1,14 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml
+jars.compile.order = .
+source.. = src/,\
+ model/
+output.. = bin/
diff --git a/plugins/org.eclipse.etrice.generator/model/etricegen.ecore b/plugins/org.eclipse.etrice.generator/model/etricegen.ecore
new file mode 100644
index 000000000..a88ff7be9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/model/etricegen.ecore
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="etricegen"
+ nsURI="http://www.eclipse.org/etrice/generator" nsPrefix="etricegen">
+ <eClassifiers xsi:type="ecore:EClass" name="Root">
+ <eOperations name="getReferencedModels" upperBound="-1" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//RoomModel">
+ <eParameters name="cls" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//RoomClass"/>
+ </eOperations>
+ <eOperations name="getReferencedProtocols" upperBound="-1" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ProtocolClass">
+ <eParameters name="cls" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ActorClass"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subSystems" upperBound="-1"
+ eType="#//SubSystemInstance" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="models" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//RoomModel"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xpActorClasses" upperBound="-1"
+ eType="#//ExpandedActorClass" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usedDataClasses" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//DataClass"
+ volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usedProtocolClasses" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ProtocolClass"
+ volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usedActorClasses" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ActorClass"
+ volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usedRoomModels" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//RoomModel"
+ volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Counter">
+ <eOperations name="getAndIncrementCount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return getAndIncrementCount(1);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAndIncrementCount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="int count = getCounter();&#xD;&#xA;setCounter(count+n);&#xD;&#xA;return count;"/>
+ </eAnnotations>
+ <eParameters name="n" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="counter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="0"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanceBase" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="objId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructureInstance" eSuperTypes="#//InstanceBase">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instances" upperBound="-1"
+ eType="#//ActorInstance" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ports" upperBound="-1"
+ eType="#//PortInstance" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="saps" upperBound="-1" eType="#//SAPInstance"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="spps" upperBound="-1" eType="#//SPPInstance"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="services" upperBound="-1"
+ eType="#//ServiceImplInstance" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"
+ eType="#//BindingInstance" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connections" upperBound="-1"
+ eType="#//ConnectionInstance" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="allContainedInstances"
+ upperBound="-1" eType="#//ActorInstance" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderedIfItemInstances"
+ upperBound="-1" eType="#//InterfaceItemInstance" changeable="false" transient="true"
+ derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SubSystemInstance" eSuperTypes="#//StructureInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subSystemClass" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//SubSystemClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="objCounter" eType="#//Counter"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActorInstance" eSuperTypes="#//StructureInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actorClass" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ActorClass"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterfaceItemInstance" eSuperTypes="#//InstanceBase">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="peers" upperBound="-1"
+ eType="#//InterfaceItemInstance"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PortInstance" eSuperTypes="#//InterfaceItemInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="port" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Port"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//PortKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"
+ eType="#//BindingInstance" eOpposite="#//BindingInstance/ports"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PortKind">
+ <eLiterals name="external" literal="external"/>
+ <eLiterals name="internal" value="1" literal="internal"/>
+ <eLiterals name="relay" value="2" literal="relay"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BindingInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ports" upperBound="2" eType="#//PortInstance"
+ eOpposite="#//PortInstance/bindings"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SAPInstance" eSuperTypes="#//InterfaceItemInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sap" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//SAPRef"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SPPInstance" eSuperTypes="#//InstanceBase">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="spp" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//SPPRef"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" upperBound="-1"
+ eType="#//ConnectionInstance" eOpposite="#//ConnectionInstance/toSPP"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" eType="#//ConnectionInstance"
+ eOpposite="#//ConnectionInstance/fromSPP"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ServiceImplInstance" eSuperTypes="#//InterfaceItemInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="svcImpl" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ServiceImplementation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectionInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fromAI" eType="#//ActorInstance"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fromSPP" eType="#//SPPInstance"
+ eOpposite="#//SPPInstance/outgoing"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="toSPP" eType="#//SPPInstance"
+ eOpposite="#//SPPInstance/incoming"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connection" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//LayerConnection"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActiveTrigger">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="msg" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Message"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ifitem" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//InterfaceItem"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="trigger" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transitions" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//TriggeredTransition"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TransitionChain">
+ <eOperations name="getStateContext" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//State"/>
+ <eOperations name="isHandler" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="genExecuteChain" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="tcv" eType="#//ITransitionChainVisitor"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transition" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Transition"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ITransitionChainVisitor" instanceTypeName="ITransitionChainVisitor"
+ abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IDiagnostician" instanceTypeName="IDiagnostician"
+ abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ExpandedActorClass" eSuperTypes="../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ActorClass">
+ <eOperations name="prepare">
+ <eParameters name="validator" eType="#//IDiagnostician"/>
+ </eOperations>
+ <eOperations name="release"/>
+ <eOperations name="addOwnObject">
+ <eParameters name="obj" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//StateGraphItem"/>
+ </eOperations>
+ <eOperations name="isOwnObject" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="obj" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//StateGraphItem"/>
+ </eOperations>
+ <eOperations name="getInterfaceItemLocalId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eParameters name="ifitem" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//InterfaceItem"/>
+ </eOperations>
+ <eOperations name="hasStateMachine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getCode" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="code" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//DetailCode"/>
+ </eOperations>
+ <eOperations name="getTriggerCodeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="mif" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//MessageFromIf"/>
+ </eOperations>
+ <eOperations name="getTriggerCodeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="mif" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getOutgoingTransitions" upperBound="-1" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Transition">
+ <eParameters name="node" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//StateGraphNode"/>
+ </eOperations>
+ <eOperations name="getIncomingTransitions" upperBound="-1" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Transition">
+ <eParameters name="node" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//StateGraphNode"/>
+ </eOperations>
+ <eOperations name="getActiveTriggers" upperBound="-1" eType="#//ActiveTrigger">
+ <eParameters name="state" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//State"/>
+ </eOperations>
+ <eOperations name="getTriggers" upperBound="-1" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//MessageFromIf"/>
+ <eOperations name="getOwnTriggers" upperBound="-1" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//MessageFromIf"/>
+ <eOperations name="getMessageID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="mif" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//MessageFromIf"/>
+ </eOperations>
+ <eOperations name="getChain" eType="#//TransitionChain">
+ <eParameters name="trans" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Transition"/>
+ </eOperations>
+ <eOperations name="getTransitionChains" upperBound="-1" eType="#//TransitionChain"/>
+ <eOperations name="getOwnTransitionChains" upperBound="-1" eType="#//TransitionChain"/>
+ <eOperations name="getNode" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//StateGraphNode">
+ <eParameters name="tt" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//TransitionTerminal"/>
+ </eOperations>
+ <eOperations name="isMatching" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="trig" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Trigger"/>
+ <eParameters name="trigstr" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getDefaultBranch" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ContinuationTransition">
+ <eParameters name="out" upperBound="-1" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//Transition"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actorClass" eType="ecore:EClass ../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.ecore#//ActorClass"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.etrice.generator/model/etricegen.genmodel b/plugins/org.eclipse.etrice.generator/model/etricegen.genmodel
new file mode 100644
index 000000000..b7e307563
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/model/etricegen.genmodel
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText=""
+ modelDirectory="/org.eclipse.etrice.generator/src" modelPluginID="org.eclipse.etrice.generator"
+ modelName="eTriceGen" importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0"
+ copyrightFields="false" usedGenPackages="../../org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/Room.genmodel#//room">
+ <foreignModel>roomgen.ecore</foreignModel>
+ <genPackages prefix="ETriceGen" basePackage="org.eclipse.etrice.generator" resource="XMI"
+ disposableProviderFactory="true" ecorePackage="etricegen.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="etricegen.ecore#//PortKind">
+ <genEnumLiterals ecoreEnumLiteral="etricegen.ecore#//PortKind/external"/>
+ <genEnumLiterals ecoreEnumLiteral="etricegen.ecore#//PortKind/internal"/>
+ <genEnumLiterals ecoreEnumLiteral="etricegen.ecore#//PortKind/relay"/>
+ </genEnums>
+ <genClasses ecoreClass="etricegen.ecore#//Root">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//Root/subSystems"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//Root/models"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//Root/xpActorClasses"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//Root/usedDataClasses"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//Root/usedProtocolClasses"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//Root/usedActorClasses"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//Root/usedRoomModels"/>
+ <genOperations ecoreOperation="etricegen.ecore#//Root/getReferencedModels">
+ <genParameters ecoreParameter="etricegen.ecore#//Root/getReferencedModels/cls"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//Root/getReferencedProtocols">
+ <genParameters ecoreParameter="etricegen.ecore#//Root/getReferencedProtocols/cls"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//Counter">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute etricegen.ecore#//Counter/counter"/>
+ <genOperations ecoreOperation="etricegen.ecore#//Counter/getAndIncrementCount"/>
+ <genOperations ecoreOperation="etricegen.ecore#//Counter/getAndIncrementCount.1">
+ <genParameters ecoreParameter="etricegen.ecore#//Counter/getAndIncrementCount.1/n"/>
+ </genOperations>
+ </genClasses>
+ <genClasses image="false" ecoreClass="etricegen.ecore#//InstanceBase">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute etricegen.ecore#//InstanceBase/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute etricegen.ecore#//InstanceBase/path"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute etricegen.ecore#//InstanceBase/objId"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//StructureInstance">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/instances"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/ports"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/saps"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/spps"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/services"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/bindings"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/connections"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/allContainedInstances"/>
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference etricegen.ecore#//StructureInstance/orderedIfItemInstances"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//SubSystemInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//SubSystemInstance/subSystemClass"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference etricegen.ecore#//SubSystemInstance/objCounter"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//ActorInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ActorInstance/actorClass"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//InterfaceItemInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//InterfaceItemInstance/peers"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//PortInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//PortInstance/port"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute etricegen.ecore#//PortInstance/kind"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//PortInstance/bindings"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//BindingInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//BindingInstance/ports"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//SAPInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//SAPInstance/sap"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//SPPInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//SPPInstance/spp"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//SPPInstance/incoming"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//SPPInstance/outgoing"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//ServiceImplInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ServiceImplInstance/svcImpl"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//ConnectionInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ConnectionInstance/fromAI"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ConnectionInstance/fromSPP"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ConnectionInstance/toSPP"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ConnectionInstance/connection"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//ActiveTrigger">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ActiveTrigger/msg"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ActiveTrigger/ifitem"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute etricegen.ecore#//ActiveTrigger/trigger"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ActiveTrigger/transitions"/>
+ </genClasses>
+ <genClasses ecoreClass="etricegen.ecore#//TransitionChain">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//TransitionChain/transition"/>
+ <genOperations ecoreOperation="etricegen.ecore#//TransitionChain/getStateContext"/>
+ <genOperations ecoreOperation="etricegen.ecore#//TransitionChain/isHandler"/>
+ <genOperations ecoreOperation="etricegen.ecore#//TransitionChain/genExecuteChain">
+ <genParameters ecoreParameter="etricegen.ecore#//TransitionChain/genExecuteChain/tcv"/>
+ </genOperations>
+ </genClasses>
+ <genClasses image="false" ecoreClass="etricegen.ecore#//ITransitionChainVisitor"/>
+ <genClasses image="false" ecoreClass="etricegen.ecore#//IDiagnostician"/>
+ <genClasses ecoreClass="etricegen.ecore#//ExpandedActorClass">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference etricegen.ecore#//ExpandedActorClass/actorClass"/>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/prepare">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/prepare/validator"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/release"/>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/addOwnObject">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/addOwnObject/obj"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/isOwnObject">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/isOwnObject/obj"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getInterfaceItemLocalId">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getInterfaceItemLocalId/ifitem"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/hasStateMachine"/>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getCode">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getCode/code"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getTriggerCodeName">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getTriggerCodeName/mif"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getTriggerCodeName.1">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getTriggerCodeName.1/mif"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getOutgoingTransitions">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getOutgoingTransitions/node"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getIncomingTransitions">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getIncomingTransitions/node"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getActiveTriggers">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getActiveTriggers/state"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getTriggers"/>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getOwnTriggers"/>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getMessageID">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getMessageID/mif"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getChain">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getChain/trans"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getTransitionChains"/>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getOwnTransitionChains"/>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getNode">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getNode/tt"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/isMatching">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/isMatching/trig"/>
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/isMatching/trigstr"/>
+ </genOperations>
+ <genOperations ecoreOperation="etricegen.ecore#//ExpandedActorClass/getDefaultBranch">
+ <genParameters ecoreParameter="etricegen.ecore#//ExpandedActorClass/getDefaultBranch/out"/>
+ </genOperations>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.etrice.generator/model/howto.txt b/plugins/org.eclipse.etrice.generator/model/howto.txt
new file mode 100644
index 000000000..bc0443211
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/model/howto.txt
@@ -0,0 +1,3 @@
+The instances.ecore model references the Room.ecore model.
+Therefore the instances.genmodel also has to reference the Room.genmodel
+(this can be done in the lower part of the Create Genmodel Wizzard). \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.generator/plugin.properties b/plugins/org.eclipse.etrice.generator/plugin.properties
new file mode 100644
index 000000000..c075509b7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/plugin.properties
@@ -0,0 +1,8 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+pluginName = eTriceGen Model
+providerName = www.example.org
diff --git a/plugins/org.eclipse.etrice.generator/plugin.xml b/plugins/org.eclipse.etrice.generator/plugin.xml
new file mode 100644
index 000000000..d9f39f2e7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/plugin.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id$
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://www.eclipse.org/etrice/generator"
+ class="org.eclipse.etrice.generator.etricegen.ETriceGenPackage"
+ genModel="model/etricegen.genmodel"/>
+ </extension>
+
+
+</plugin>
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ILogger.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ILogger.java
new file mode 100644
index 000000000..e0e233161
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ILogger.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.builder;
+
+import org.eclipse.emf.ecore.EObject;
+
+public interface ILogger {
+
+ void logInfo(String text);
+ void logError(String text, EObject obj);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/InstanceModelBuilder.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/InstanceModelBuilder.java
new file mode 100644
index 000000000..6b33836bb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/InstanceModelBuilder.java
@@ -0,0 +1,762 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.builder;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SAPoint;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SPPoint;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.SubSystemRef;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.BindingInstance;
+import org.eclipse.etrice.generator.etricegen.ConnectionInstance;
+import org.eclipse.etrice.generator.etricegen.Counter;
+import org.eclipse.etrice.generator.etricegen.ETriceGenFactory;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.IDiagnostician;
+import org.eclipse.etrice.generator.etricegen.PortInstance;
+import org.eclipse.etrice.generator.etricegen.PortKind;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.SAPInstance;
+import org.eclipse.etrice.generator.etricegen.SPPInstance;
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
+import org.eclipse.etrice.generator.etricegen.StructureInstance;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl;
+
+/**
+ * A class for the creation of an intermediate model combining all information needed by
+ * the code generator.
+ *
+ * @author Henrik Rentz-Reichert
+ *
+ */
+public class InstanceModelBuilder {
+
+ /**
+ * the first object id used for the {@link org.eclipse.etrice.core.etrice.runtime.messaging.Address Address}es s of runtime instances
+ */
+ private static final int OBJ_ID_OFFSET = 100;
+
+ /**
+ * a set containing all relay ports for fast frequent access to this information
+ */
+ private HashSet<Port> relayPorts = new HashSet<Port>();
+
+ /**
+ * an instance of a logger
+ */
+ private ILogger logger;
+
+ /**
+ * an isntance of a diagnostician
+ */
+ private IDiagnostician diagnostician;
+
+ /**
+ * the only constructor takes a logger and a diagnostician as arguments
+ * @param logger
+ * @param diagnostician
+ */
+ public InstanceModelBuilder(ILogger logger, IDiagnostician diagnostician) {
+ this.logger = logger;
+ this.diagnostician = diagnostician;
+ }
+
+ // TODOHRR: combine a RoomProject (.room_proj) with RoomModels (.room)
+
+ /**
+ * Creates a model of all instances for all sub systems.
+ * Actor instances are created in a hierarchical structure.
+ * There is only one list of port per actor instances.
+ * Ports have a type attribute (relay, intern, external).
+ * Bindings connect port instances. And since ports are
+ * instances it is possible to have pointers back to the
+ * bindings.
+ * After creating the instance tree ports are connected to
+ * their peers.
+ * Similar SAPs, Services and layer conenctions are treated.
+ * Finally expanded (xp) actor classes are created which
+ * contain also inherited state graph items and where RefinedStates
+ * are removed and their contents is relocated.
+ *
+ * @param models
+ * @return the root of the newly created instance model
+ */
+ public Root createInstanceModel(List<RoomModel> models) {
+ Root root = ETriceGenFactory.eINSTANCE.createRoot();
+ root.getModels().addAll(models);
+
+ determineRelayPorts(root);
+
+ for (RoomModel model : models) {
+ for (SubSystemClass comp : model.getSubSystemClasses()) {
+ root.getSubSystems().add(createSubSystemInstance(comp));
+ }
+ }
+
+ connectPorts(root);
+ checkPortMultiplicity(root);
+
+ connectServices(root);
+
+ createExpandedActorClasses(root);
+
+ return root;
+ }
+
+ /**
+ * Connect all services hierarchically. This finally connects SAPs with corresponding services
+ * according to layer connections.
+ *
+ * @param root
+ */
+ private void connectServices(Root root) {
+ createServiceMappings(root);
+ bindSAPs(root);
+ }
+
+ /**
+ * Hierarchically create service mappings at each starting point of layer connections (root level).
+ *
+ * @param root
+ */
+ private void createServiceMappings(Root root) {
+ for (SubSystemInstance comp : root.getSubSystems()) {
+ createServiceMappings(comp);
+ }
+ }
+
+ /**
+ * Hierarchically create service mappings at each starting point of layer connections (recursively for all structure instances).
+ *
+ * @see createServiceMappings
+ * @param si
+ */
+ private void createServiceMappings(StructureInstance si) {
+ for (ConnectionInstance ci : si.getConnections()) {
+ if (ci.getFromSPP()==null) {
+ // this connection originates at an actor instance
+ addService(ci.getFromAI(), ci);
+ }
+ else if (ci.getFromSPP().getIncoming().isEmpty()) {
+ // this connection originates at an SPP instance which is not connected outside
+ addService(si, ci);
+ }
+ }
+
+ // recursive call for all children
+ for (ActorInstance child : si.getInstances()) {
+ createServiceMappings(child);
+ }
+ }
+
+ /**
+ * Determines a connected services and attaches it to the protocol2service mapping
+ * of a structure instance
+ *
+ * @param si
+ * @param ci
+ */
+ private void addService(StructureInstance si, ConnectionInstance ci) {
+ assert(si instanceof StructureInstanceImpl): "unknown implementation "+si.eClass().getName();
+ StructureInstanceImpl sii = (StructureInstanceImpl) si;
+
+ ProtocolClass pc = ci.getToSPP().getSpp().getProtocol();
+ if (sii.protocol2service.get(pc)!=null) {
+
+ // this protocol is already handled on this level
+
+ EObject obj = null;
+ if (si instanceof ActorInstance)
+ obj = ((ActorInstance)si).getActorClass();
+ else if (si instanceof SubSystemInstance)
+ obj = ((SubSystemInstance)si).getSubSystemClass();
+ else
+ obj = si;
+ diagnostician.error("A service can only be offered once per actor instance, consider pushing one down to a contained actor!", obj);
+ }
+ else {
+ if (ci.getFromSPP()!=null && ci.getFromSPP().getSpp().getProtocol()!=pc) {
+ diagnostician.error("Layer connection must connect same protocols!", ci.getConnection());
+ }
+ else {
+ // now we follow the layer connections
+ while(true) {
+ SPPInstance sppi = ci.getToSPP();
+ if (sppi.getOutgoing()==null) {
+ // we reached the end, find the ServiceImplementation
+ boolean found = false;
+ if (sppi.eContainer() instanceof ActorInstance) {
+ ActorInstance implementor = (ActorInstance) sppi.eContainer();
+ for (ServiceImplInstance svc : implementor.getServices()) {
+ if (svc.getSvcImpl().getSpp()==sppi.getSpp()) {
+ found = true;
+ sii.protocol2service.put(pc, svc);
+ }
+ }
+ }
+ else {
+ assert(false);
+ }
+ if (!found) {
+ diagnostician.error("An SPP mus be connected by a layer connection or implemented by a ServiceImplementation!", sppi.getSpp());
+ }
+ return;
+ }
+ else {
+ ci = sppi.getOutgoing();
+ if (ci.getToSPP().getSpp().getProtocol()!=pc) {
+ diagnostician.error("Layer connection must connect same protocols!", ci.getConnection());
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Connect a SAP to its service (root level)
+ *
+ * @param root
+ */
+ private void bindSAPs(Root root) {
+ for (SubSystemInstance comp : root.getSubSystems()) {
+ bindSAPs(comp);
+ setServiceObjectIDs(comp, comp.getObjCounter());
+ }
+ }
+
+ /**
+ * Connect a SAP to its service (recursively for all structure instances).
+ *
+ * @param si
+ */
+ private void bindSAPs(StructureInstance si) {
+ for (SAPInstance sap : si.getSaps()) {
+ bindSAP(si, sap);
+ }
+
+ // recursive call for all children
+ for (ActorInstance child : si.getInstances()) {
+ bindSAPs(child);
+ }
+ }
+
+ /**
+ * Do the actual binding of a SAP.
+ *
+ * @param si
+ * @param sap
+ */
+ private void bindSAP(StructureInstance si, SAPInstance sap) {
+ assert(si instanceof StructureInstanceImpl);
+ StructureInstanceImpl sii = (StructureInstanceImpl) si;
+
+ // walk up the container hierarchy until the sap is satisfied
+ do {
+ ServiceImplInstance svc = sii.protocol2service.get(sap.getSap().getProtocol());
+ if (svc!=null) {
+ sap.getPeers().add(svc);
+ svc.getPeers().add(sap);
+ return;
+ }
+ if (sii.eContainer() instanceof StructureInstanceImpl)
+ sii = (StructureInstanceImpl) sii.eContainer();
+ else
+ sii = null;
+ }
+ while (sii!=null);
+
+ diagnostician.error("SAP not satisfied!", sap.getSap());
+ }
+
+ /**
+ * Finally recursively the Address object IDs are calculated and assigned
+ * @param si
+ * @param counter
+ */
+ private void setServiceObjectIDs(StructureInstance si, Counter counter) {
+ for (ServiceImplInstance svc : si.getServices()) {
+ svc.setObjId(counter.getAndIncrementCount(svc.getPeers().size()));
+ }
+
+ // recursive call for all children
+ for (ActorInstance child : si.getInstances()) {
+ setServiceObjectIDs(child, counter);
+ }
+ }
+
+ /**
+ * for efficiency reasons we create a set holding all relay ports
+ * @param root - the root object
+ */
+ private void determineRelayPorts(Root root) {
+ for (RoomModel model : root.getModels()) {
+ for (ActorClass ac : model.getActorClasses()) {
+ for (Port port : ac.getIfPorts()) {
+ boolean external = false;
+ for (ExternalPort ep : ac.getExtPorts()) {
+ if (ep.getIfport()==port) {
+ external = true;
+ break;
+ }
+ }
+ if (!external) {
+ relayPorts.add(port);
+
+ // check whether relay port is multiply connected
+ int count = 0;
+ for (Binding b : ac.getBindings()) {
+ if (b.getEndpoint1().getPort()==port)
+ ++count;
+ if (b.getEndpoint2().getPort()==port)
+ ++count;
+ }
+ if (count>1)
+ diagnostician.error("relay port is multiply connected inside its actor class", port);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * hierarchically (i.e. recursively) creates all instances implied by this component
+ * @param comp - the component class
+ * @return the newly created hierarchy of instances
+ */
+ private SubSystemInstance createSubSystemInstance(SubSystemClass comp) {
+ logger.logInfo("InstanceModelBuilder: creating component instance from "+comp.getName());
+
+ SubSystemInstance instance = ETriceGenFactory.eINSTANCE.createSubSystemInstance();
+
+ instance.setName(comp.getName());
+ Counter objCounter = ETriceGenFactory.eINSTANCE.createCounter();
+ objCounter.setCounter(OBJ_ID_OFFSET);
+ instance.setObjCounter(objCounter);
+ instance.setObjId(objCounter.getAndIncrementCount());
+ instance.setSubSystemClass(comp);
+
+ for (ActorRef ar : comp.getActorRefs()) {
+ instance.getInstances().add(recursivelyCreateActorInstances(objCounter, ar));
+ }
+
+ // bindings are handled now since port instances of sub-actor instances are available
+ createBindingInstances(instance, comp.getBindings());
+ createConnectionInstances(instance, comp.getConnections());
+
+ return instance;
+ }
+
+ /**
+ * hierarchically (i.e. recursively) creates all instances implied by this actor
+ * @param instance - the root component instance
+ * @param aref - create the instance sub-tree of this actor reference
+ * @return the newly created actor instance
+ */
+ private ActorInstance recursivelyCreateActorInstances(Counter objCounter, ActorRef aref) {
+ logger.logInfo("InstanceModelBuilder: creating actor instance "+aref.getName()+" from "+aref.getType().getName());
+
+ ActorInstance ai = ETriceGenFactory.eINSTANCE.createActorInstance();
+
+ ai.setName(aref.getName());
+ ai.setObjId(objCounter.getAndIncrementCount());
+ ActorClass ac = aref.getType();
+ ai.setActorClass(ac);
+
+ // create a list of super classes, super first, sub-classes last
+ LinkedList<ActorClass> classes = new LinkedList<ActorClass>();
+ classes.addFirst(ac);
+ while (ac.getBase()!=null) {
+ ac = ac.getBase();
+ classes.addFirst(ac);
+ }
+
+ // create instances for super classes recursively (ports, actor refs and bindings)
+ // super classes first ensures that actor refs are present when bindings are created
+ for (ActorClass acl : classes) {
+ // first we add our port instances to have them numbered subsequently
+ createPortInstances(objCounter, ai, acl);
+ createServiceRelatedInstances(objCounter, ai, acl);
+
+ // recurse down into sub-actors
+ for (ActorRef ar : acl.getActorRefs()) {
+ ai.getInstances().add(recursivelyCreateActorInstances(objCounter, ar));
+ }
+
+ }
+ for (ActorClass acl : classes) {
+ // bindings are handled now since port instances of sub-actor instances are available
+ createBindingInstances(ai, acl.getBindings());
+ createConnectionInstances(ai, acl.getConnections());
+ }
+
+ return ai;
+ }
+
+ /**
+ * create port instances for every kind of port
+ * @param objCounter - for unique object id used for address creation
+ * @param ai - the currently considered actor instance
+ * @param ac - the actor class (might be a base class)
+ */
+ private void createPortInstances(Counter objCounter, ActorInstance ai,
+ ActorClass ac) {
+ for (ExternalPort port : ac.getExtPorts()) {
+ PortInstance pi = ETriceGenFactory.eINSTANCE.createPortInstance();
+
+ pi.setName(port.getIfport().getName());
+ // replicated ports have subsequent object IDs
+ pi.setObjId(objCounter.getAndIncrementCount(port.getIfport().getMultiplicity()));
+ pi.setPort(port.getIfport());
+ pi.setKind(PortKind.EXTERNAL);
+
+ ai.getPorts().add(pi);
+ }
+ for (Port port : ac.getIntPorts()) {
+ PortInstance pi = ETriceGenFactory.eINSTANCE.createPortInstance();
+
+ pi.setName(port.getName());
+ // replicated ports have subsequent object IDs
+ pi.setObjId(objCounter.getAndIncrementCount(port.getMultiplicity()));
+ pi.setPort(port);
+ pi.setKind(PortKind.INTERNAL);
+
+ ai.getPorts().add(pi);
+ }
+ for (Port port : ac.getIfPorts()) {
+ if (relayPorts.contains(port)) {
+ PortInstance pi = ETriceGenFactory.eINSTANCE.createPortInstance();
+
+ pi.setName(port.getName());
+ // relay ports are not instantiated and thus have no object ID
+ //pi.setObjId(instance.getAndIncrementObjCount());
+ pi.setPort(port);
+ pi.setKind(PortKind.RELAY);
+
+ ai.getPorts().add(pi);
+ }
+ }
+ }
+
+ /**
+ * create sap, spp and service instances
+ * @param objCounter - for unique object id used for address creation
+ * @param ai - the currently considered actor instance
+ * @param ac - the actor class (might be a base class)
+ */
+ private void createServiceRelatedInstances(Counter objCounter, ActorInstance ai,
+ ActorClass ac) {
+ for (SAPRef sap : ac.getStrSAPs()) {
+ SAPInstance si = ETriceGenFactory.eINSTANCE.createSAPInstance();
+ si.setName(sap.getName());
+ si.setObjId(objCounter.getAndIncrementCount());
+ si.setSap(sap);
+
+ ai.getSaps().add(si);
+ }
+ for (SPPRef sap : ac.getIfSPPs()) {
+ SPPInstance si = ETriceGenFactory.eINSTANCE.createSPPInstance();
+ si.setName(sap.getName());
+ // SPPs are not instantiated and thus need no object ID
+ //si.setObjId(objCounter.getAndIncrementCount());
+ si.setSpp(sap);
+
+ ai.getSpps().add(si);
+ }
+ for (ServiceImplementation svcimpl : ac.getServiceImplementations()) {
+ ServiceImplInstance sii = ETriceGenFactory.eINSTANCE.createServiceImplInstance();
+ sii.setName(svcimpl.getSpp().getName());
+ //will set the object ID later when we know all connected saps
+ //sii.setObjId(objCounter.getAndIncrementCount());
+ sii.setSvcImpl(svcimpl);
+
+ ai.getServices().add(sii);
+ }
+ }
+
+ /**
+ * create binding instances. Since bindings connect port instances the ports can point back to their bindings
+ * using EOpposite
+ * @param ai - create bindings for this actor instance
+ * @param bindings - a list of bindings
+ */
+ private void createBindingInstances(StructureInstance ai, EList<Binding> bindings) {
+ for (Binding bind : bindings) {
+ BindingInstance bi = ETriceGenFactory.eINSTANCE.createBindingInstance();
+
+ if (bind.getEndpoint1().getActorRef()==null && bind.getEndpoint2().getActorRef()!=null) {
+ bi.getPorts().add(getPortInstance(ai, bind.getEndpoint1()));
+ bi.getPorts().add(getPortInstance(ai, bind.getEndpoint2()));
+ }
+ else if (bind.getEndpoint1().getActorRef()!=null && bind.getEndpoint2().getActorRef()==null) {
+ bi.getPorts().add(getPortInstance(ai, bind.getEndpoint2()));
+ bi.getPorts().add(getPortInstance(ai, bind.getEndpoint1()));
+ }
+ else if (bind.getEndpoint1().getActorRef()!=null && bind.getEndpoint2().getActorRef()!=null) {
+ bi.getPorts().add(getPortInstance(ai, bind.getEndpoint1()));
+ bi.getPorts().add(getPortInstance(ai, bind.getEndpoint2()));
+ }
+ else {
+ diagnostician.error("binding connects two ports of the same actor", bind, -1);
+ }
+
+ ai.getBindings().add(bi);
+ }
+ }
+
+ /**
+ * Create layer connection instances.
+ * @param si - create layer connections for this actor instance
+ * @param connections - a list of layer connections
+ */
+ private void createConnectionInstances(StructureInstance si, EList<LayerConnection> connections) {
+ for (LayerConnection lc : connections) {
+ ConnectionInstance ci = ETriceGenFactory.eINSTANCE.createConnectionInstance();
+
+ ci.setConnection(lc);
+
+ SAPoint from = lc.getFrom();
+ if (from instanceof RefSAPoint) {
+ if (((RefSAPoint)from).getRef() instanceof ActorRef) {
+ ActorInstance fromAI = getActorInstance(si, ((ActorRef)((RefSAPoint)from).getRef()));
+ ci.setFromAI(fromAI);
+ }
+ else {
+ //TODOHRR: handle SubSystemRef
+ System.err.println("error");
+ }
+ }
+ else if (from instanceof RelaySAPoint) {
+ SPPInstance sppi = getSPPInstance(si, null, ((RelaySAPoint)from).getRelay());
+ if (sppi.getOutgoing()!=null)
+ diagnostician.error("SPPRef has several outgoing layer connections!", sppi.getSpp());
+ ci.setFromSPP(sppi);
+ }
+ else {
+ assert(false): "unknown type of "+from.eClass().getName();
+ }
+
+ SPPoint to = lc.getTo();
+ SPPInstance sppi = getSPPInstance(si, to.getRef(), to.getService());
+ ci.setToSPP(sppi);
+
+ si.getConnections().add(ci);
+ }
+ }
+
+ /**
+ * Returns the endpoint of a layer connection.
+ *
+ * @param si
+ * @param ar
+ * @param spp
+ * @return
+ */
+ private SPPInstance getSPPInstance(StructureInstance si, ActorContainerRef ar, SPPRef spp) {
+ if (ar==null) {
+ for (SPPInstance sppi : si.getSpps()) {
+ if (sppi.getSpp()==spp)
+ return sppi;
+ }
+ }
+ else {
+ if (ar instanceof ActorRef) {
+ ActorInstance subai = getActorInstance(si, (ActorRef)ar);
+ if (subai!=null)
+ return getSPPInstance(subai, null, spp);
+ }
+ else if (ar instanceof SubSystemRef) {
+ // TODOHRR: handle SubSystemRef
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns an actor instances corresponding to an ActorRef.
+ *
+ * @param si
+ * @param ar
+ * @return
+ */
+ private ActorInstance getActorInstance(StructureInstance si, ActorRef ar) {
+ for (ActorInstance subai : si.getInstances()) {
+ if (subai.getName().equals(ar.getName())) {
+ return subai;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * get a port instance for a binding endpoint
+ * @param si - consider this actor instance
+ * @param be - the binding endpoint to match
+ * @return the port instance found
+ */
+ private PortInstance getPortInstance(StructureInstance si, BindingEndPoint be) {
+ if (be.getActorRef()==null) {
+ for (PortInstance pi : si.getPorts()) {
+ if (pi.getPort()==be.getPort()) {
+ if (pi.getKind()==PortKind.EXTERNAL)
+ diagnostician.error("binding connects external end port to sub-actor interface", be.eContainer(), -1);
+ return pi;
+ }
+ }
+ }
+ else {
+ for (ActorInstance subai : si.getInstances()) {
+ if (subai.getName().equals(be.getActorRef().getName())) {
+ for (PortInstance pi : subai.getPorts()) {
+ if (pi.getPort()==be.getPort()) {
+ if (pi.getKind()==PortKind.INTERNAL)
+ diagnostician.error("binding connects to sub-actor internal end port", be.eContainer(), -1);
+ return pi;
+ }
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * set peer ports in the whole instance model
+ * @param root
+ */
+ private void connectPorts(Root root) {
+ TreeIterator<EObject> it = root.eAllContents();
+ while (it.hasNext()) {
+ EObject obj = it.next();
+ if (obj instanceof ActorInstance) {
+ for (PortInstance pi : ((ActorInstance) obj).getPorts()) {
+ if (pi.getKind()!=PortKind.RELAY) {
+ List<PortInstance> peers = getFinalPeers(pi, null);
+ pi.getPeers().addAll(peers);
+ // we don't have to add pi to its peer.peers since we do that once we reach there
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * determine final peers of an end port
+ * @param pi - a end port
+ * @param from - the binding from which we reached pi or null if start
+ * @return a list of final peer port instances (end ports themselves)
+ */
+ private List<PortInstance> getFinalPeers(PortInstance pi, BindingInstance from) {
+ List<PortInstance> peers = new LinkedList<PortInstance>();
+
+ for (BindingInstance bi : pi.getBindings()) {
+ if (bi==from)
+ // skip the binding where we came from
+ continue;
+
+ if (from!=null && from.eContainer()==bi.eContainer())
+ // the container of a binding instance is a StructureInstance
+ // by this we make sure that we go from inside to outside or vice versa
+ continue;
+
+ PortInstance end = (bi.getPorts().get(0)!=pi)? bi.getPorts().get(0) : bi.getPorts().get(1);
+ if (end.getKind()==PortKind.RELAY)
+ // continue recursion
+ peers.addAll(getFinalPeers(end, bi));
+ else
+ // this is a final peer
+ peers.add(end);
+ }
+ return peers;
+ }
+
+ /**
+ * check that the number of peer ports does not exceed the multiplicity of a port
+ * @param root
+ */
+ private void checkPortMultiplicity(Root root) {
+ TreeIterator<EObject> it = root.eAllContents();
+ while (it.hasNext()) {
+ EObject obj = it.next();
+ if (obj instanceof ActorInstance) {
+ ActorInstance ai = (ActorInstance) obj;
+ for (PortInstance pi : ai.getPorts()) {
+ if (pi.getKind()!=PortKind.RELAY) {
+ if (pi.getBindings().size()>pi.getPort().getMultiplicity())
+ diagnostician.error("number of peers "+pi.getBindings().size()
+ + " of port "+pi.getName()
+ +" exceeds multiplicity "+pi.getPort().getMultiplicity()
+ +" in instance "+ai.getPath(), pi);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * expanded (xp) actor classes are created which
+ * contain also inherited features and where RefinedStates
+ * are removed and their contents is relocated.
+ * @param root - the model root
+ */
+ private void createExpandedActorClasses(Root root) {
+ for (ActorClass ac : root.getUsedActorClasses()) {
+ root.getXpActorClasses().add(createExpandedActorClass(ac));
+ }
+ }
+
+ /**
+ * create an expanded actor class from the original model class
+ * @param ac - the original model class
+ * @return - the newly created expanded actor class
+ */
+ private ExpandedActorClass createExpandedActorClass(ActorClass ac) {
+ logger.logInfo("InstanceModelBuilder: creating expanded actor class from "+ac.getName()
+ +" of "+((RoomModel)ac.eContainer()).getName());
+
+ ExpandedActorClass xpac = ETriceGenFactory.eINSTANCE.createExpandedActorClass();
+ xpac.setName(ac.getName());
+ xpac.setActorClass(ac);
+ xpac.setAbstract(ac.isAbstract());
+
+ xpac.prepare(diagnostician);
+
+ return xpac;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ValidationException.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ValidationException.java
new file mode 100644
index 000000000..ef29090b6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/builder/ValidationException.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.builder;
+
+public class ValidationException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2180285017071261665L;
+
+ public ValidationException(String msg) {
+ super(msg);
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActiveTrigger.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActiveTrigger.java
new file mode 100644
index 000000000..d1e664001
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActiveTrigger.java
@@ -0,0 +1,131 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Active Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getIfitem <em>Ifitem</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getTrigger <em>Trigger</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getTransitions <em>Transitions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getActiveTrigger()
+ * @model
+ * @generated
+ */
+public interface ActiveTrigger extends EObject {
+ /**
+ * Returns the value of the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Msg</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Msg</em>' reference.
+ * @see #setMsg(Message)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getActiveTrigger_Msg()
+ * @model
+ * @generated
+ */
+ Message getMsg();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getMsg <em>Msg</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Msg</em>' reference.
+ * @see #getMsg()
+ * @generated
+ */
+ void setMsg(Message value);
+
+ /**
+ * Returns the value of the '<em><b>Ifitem</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ifitem</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ifitem</em>' reference.
+ * @see #setIfitem(InterfaceItem)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getActiveTrigger_Ifitem()
+ * @model
+ * @generated
+ */
+ InterfaceItem getIfitem();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getIfitem <em>Ifitem</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ifitem</em>' reference.
+ * @see #getIfitem()
+ * @generated
+ */
+ void setIfitem(InterfaceItem value);
+
+ /**
+ * Returns the value of the '<em><b>Trigger</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Trigger</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Trigger</em>' attribute.
+ * @see #setTrigger(String)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getActiveTrigger_Trigger()
+ * @model
+ * @generated
+ */
+ String getTrigger();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getTrigger <em>Trigger</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Trigger</em>' attribute.
+ * @see #getTrigger()
+ * @generated
+ */
+ void setTrigger(String value);
+
+ /**
+ * Returns the value of the '<em><b>Transitions</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.TriggeredTransition}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Transitions</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Transitions</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getActiveTrigger_Transitions()
+ * @model
+ * @generated
+ */
+ EList<TriggeredTransition> getTransitions();
+
+} // ActiveTrigger
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActorInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActorInstance.java
new file mode 100644
index 000000000..83282a0be
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ActorInstance.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.ActorClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Actor Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ActorInstance#getActorClass <em>Actor Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getActorInstance()
+ * @model
+ * @generated
+ */
+public interface ActorInstance extends StructureInstance {
+ /**
+ * Returns the value of the '<em><b>Actor Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actor Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actor Class</em>' reference.
+ * @see #setActorClass(ActorClass)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getActorInstance_ActorClass()
+ * @model
+ * @generated
+ */
+ ActorClass getActorClass();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ActorInstance#getActorClass <em>Actor Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Actor Class</em>' reference.
+ * @see #getActorClass()
+ * @generated
+ */
+ void setActorClass(ActorClass value);
+
+} // ActorInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/BindingInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/BindingInstance.java
new file mode 100644
index 000000000..7690cd2a7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/BindingInstance.java
@@ -0,0 +1,48 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Binding Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.BindingInstance#getPorts <em>Ports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getBindingInstance()
+ * @model
+ * @generated
+ */
+public interface BindingInstance extends EObject {
+ /**
+ * Returns the value of the '<em><b>Ports</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.PortInstance}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.etrice.generator.etricegen.PortInstance#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ports</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ports</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getBindingInstance_Ports()
+ * @see org.eclipse.etrice.generator.etricegen.PortInstance#getBindings
+ * @model opposite="bindings" upper="2"
+ * @generated
+ */
+ EList<PortInstance> getPorts();
+
+} // BindingInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ConnectionInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ConnectionInstance.java
new file mode 100644
index 000000000..1bc257cd0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ConnectionInstance.java
@@ -0,0 +1,140 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connection Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromAI <em>From AI</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromSPP <em>From SPP</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getToSPP <em>To SPP</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getConnection <em>Connection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getConnectionInstance()
+ * @model
+ * @generated
+ */
+public interface ConnectionInstance extends EObject {
+ /**
+ * Returns the value of the '<em><b>From AI</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>From AI</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>From AI</em>' reference.
+ * @see #setFromAI(ActorInstance)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getConnectionInstance_FromAI()
+ * @model
+ * @generated
+ */
+ ActorInstance getFromAI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromAI <em>From AI</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>From AI</em>' reference.
+ * @see #getFromAI()
+ * @generated
+ */
+ void setFromAI(ActorInstance value);
+
+ /**
+ * Returns the value of the '<em><b>From SPP</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getOutgoing <em>Outgoing</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>From SPP</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>From SPP</em>' reference.
+ * @see #setFromSPP(SPPInstance)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getConnectionInstance_FromSPP()
+ * @see org.eclipse.etrice.generator.etricegen.SPPInstance#getOutgoing
+ * @model opposite="outgoing"
+ * @generated
+ */
+ SPPInstance getFromSPP();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromSPP <em>From SPP</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>From SPP</em>' reference.
+ * @see #getFromSPP()
+ * @generated
+ */
+ void setFromSPP(SPPInstance value);
+
+ /**
+ * Returns the value of the '<em><b>To SPP</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getIncoming <em>Incoming</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>To SPP</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>To SPP</em>' reference.
+ * @see #setToSPP(SPPInstance)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getConnectionInstance_ToSPP()
+ * @see org.eclipse.etrice.generator.etricegen.SPPInstance#getIncoming
+ * @model opposite="incoming"
+ * @generated
+ */
+ SPPInstance getToSPP();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getToSPP <em>To SPP</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>To SPP</em>' reference.
+ * @see #getToSPP()
+ * @generated
+ */
+ void setToSPP(SPPInstance value);
+
+ /**
+ * Returns the value of the '<em><b>Connection</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connection</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connection</em>' reference.
+ * @see #setConnection(LayerConnection)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getConnectionInstance_Connection()
+ * @model
+ * @generated
+ */
+ LayerConnection getConnection();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getConnection <em>Connection</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Connection</em>' reference.
+ * @see #getConnection()
+ * @generated
+ */
+ void setConnection(LayerConnection value);
+
+} // ConnectionInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Counter.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Counter.java
new file mode 100644
index 000000000..abcaaf59c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Counter.java
@@ -0,0 +1,72 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Counter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Counter#getCounter <em>Counter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getCounter()
+ * @model
+ * @generated
+ */
+public interface Counter extends EObject {
+ /**
+ * Returns the value of the '<em><b>Counter</b></em>' attribute.
+ * The default value is <code>"0"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Counter</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Counter</em>' attribute.
+ * @see #setCounter(int)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getCounter_Counter()
+ * @model default="0"
+ * @generated
+ */
+ int getCounter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.Counter#getCounter <em>Counter</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Counter</em>' attribute.
+ * @see #getCounter()
+ * @generated
+ */
+ void setCounter(int value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * annotation="http://www.eclipse.org/emf/2002/GenModel body='return getAndIncrementCount(1);'"
+ * @generated
+ */
+ int getAndIncrementCount();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='int count = getCounter();\r\nsetCounter(count+n);\r\nreturn count;'"
+ * @generated
+ */
+ int getAndIncrementCount(int n);
+
+} // Counter
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenFactory.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenFactory.java
new file mode 100644
index 000000000..6796a2a7a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenFactory.java
@@ -0,0 +1,172 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage
+ * @generated
+ */
+public interface ETriceGenFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ETriceGenFactory eINSTANCE = org.eclipse.etrice.generator.etricegen.impl.ETriceGenFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Root</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Root</em>'.
+ * @generated
+ */
+ Root createRoot();
+
+ /**
+ * Returns a new object of class '<em>Counter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Counter</em>'.
+ * @generated
+ */
+ Counter createCounter();
+
+ /**
+ * Returns a new object of class '<em>Structure Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Structure Instance</em>'.
+ * @generated
+ */
+ StructureInstance createStructureInstance();
+
+ /**
+ * Returns a new object of class '<em>Sub System Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sub System Instance</em>'.
+ * @generated
+ */
+ SubSystemInstance createSubSystemInstance();
+
+ /**
+ * Returns a new object of class '<em>Actor Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Actor Instance</em>'.
+ * @generated
+ */
+ ActorInstance createActorInstance();
+
+ /**
+ * Returns a new object of class '<em>Interface Item Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Interface Item Instance</em>'.
+ * @generated
+ */
+ InterfaceItemInstance createInterfaceItemInstance();
+
+ /**
+ * Returns a new object of class '<em>Port Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Port Instance</em>'.
+ * @generated
+ */
+ PortInstance createPortInstance();
+
+ /**
+ * Returns a new object of class '<em>Binding Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Binding Instance</em>'.
+ * @generated
+ */
+ BindingInstance createBindingInstance();
+
+ /**
+ * Returns a new object of class '<em>SAP Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>SAP Instance</em>'.
+ * @generated
+ */
+ SAPInstance createSAPInstance();
+
+ /**
+ * Returns a new object of class '<em>SPP Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>SPP Instance</em>'.
+ * @generated
+ */
+ SPPInstance createSPPInstance();
+
+ /**
+ * Returns a new object of class '<em>Service Impl Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Service Impl Instance</em>'.
+ * @generated
+ */
+ ServiceImplInstance createServiceImplInstance();
+
+ /**
+ * Returns a new object of class '<em>Connection Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Connection Instance</em>'.
+ * @generated
+ */
+ ConnectionInstance createConnectionInstance();
+
+ /**
+ * Returns a new object of class '<em>Active Trigger</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Active Trigger</em>'.
+ * @generated
+ */
+ ActiveTrigger createActiveTrigger();
+
+ /**
+ * Returns a new object of class '<em>Transition Chain</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Transition Chain</em>'.
+ * @generated
+ */
+ TransitionChain createTransitionChain();
+
+ /**
+ * Returns a new object of class '<em>Expanded Actor Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Expanded Actor Class</em>'.
+ * @generated
+ */
+ ExpandedActorClass createExpandedActorClass();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ETriceGenPackage getETriceGenPackage();
+
+} //ETriceGenFactory
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenPackage.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenPackage.java
new file mode 100644
index 000000000..2b1088fee
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ETriceGenPackage.java
@@ -0,0 +1,2577 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ETriceGenPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "etricegen";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/etrice/generator";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "etricegen";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ETriceGenPackage eINSTANCE = org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl <em>Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.RootImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getRoot()
+ * @generated
+ */
+ int ROOT = 0;
+
+ /**
+ * The feature id for the '<em><b>Sub Systems</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT__SUB_SYSTEMS = 0;
+
+ /**
+ * The feature id for the '<em><b>Models</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT__MODELS = 1;
+
+ /**
+ * The feature id for the '<em><b>Xp Actor Classes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT__XP_ACTOR_CLASSES = 2;
+
+ /**
+ * The feature id for the '<em><b>Used Data Classes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT__USED_DATA_CLASSES = 3;
+
+ /**
+ * The feature id for the '<em><b>Used Protocol Classes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT__USED_PROTOCOL_CLASSES = 4;
+
+ /**
+ * The feature id for the '<em><b>Used Actor Classes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT__USED_ACTOR_CLASSES = 5;
+
+ /**
+ * The feature id for the '<em><b>Used Room Models</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT__USED_ROOM_MODELS = 6;
+
+ /**
+ * The number of structural features of the '<em>Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ROOT_FEATURE_COUNT = 7;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.CounterImpl <em>Counter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.CounterImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getCounter()
+ * @generated
+ */
+ int COUNTER = 1;
+
+ /**
+ * The feature id for the '<em><b>Counter</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COUNTER__COUNTER = 0;
+
+ /**
+ * The number of structural features of the '<em>Counter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COUNTER_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.InstanceBaseImpl <em>Instance Base</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.InstanceBaseImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getInstanceBase()
+ * @generated
+ */
+ int INSTANCE_BASE = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCE_BASE__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCE_BASE__PATH = 1;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCE_BASE__OBJ_ID = 2;
+
+ /**
+ * The number of structural features of the '<em>Instance Base</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCE_BASE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl <em>Structure Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getStructureInstance()
+ * @generated
+ */
+ int STRUCTURE_INSTANCE = 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__NAME = INSTANCE_BASE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__PATH = INSTANCE_BASE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__OBJ_ID = INSTANCE_BASE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Instances</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__INSTANCES = INSTANCE_BASE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__PORTS = INSTANCE_BASE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Saps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__SAPS = INSTANCE_BASE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Spps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__SPPS = INSTANCE_BASE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Services</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__SERVICES = INSTANCE_BASE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__BINDINGS = INSTANCE_BASE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__CONNECTIONS = INSTANCE_BASE_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>All Contained Instances</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES = INSTANCE_BASE_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Ordered If Item Instances</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES = INSTANCE_BASE_FEATURE_COUNT + 8;
+
+ /**
+ * The number of structural features of the '<em>Structure Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRUCTURE_INSTANCE_FEATURE_COUNT = INSTANCE_BASE_FEATURE_COUNT + 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.SubSystemInstanceImpl <em>Sub System Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.SubSystemInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getSubSystemInstance()
+ * @generated
+ */
+ int SUB_SYSTEM_INSTANCE = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__NAME = STRUCTURE_INSTANCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__PATH = STRUCTURE_INSTANCE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__OBJ_ID = STRUCTURE_INSTANCE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Instances</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__INSTANCES = STRUCTURE_INSTANCE__INSTANCES;
+
+ /**
+ * The feature id for the '<em><b>Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__PORTS = STRUCTURE_INSTANCE__PORTS;
+
+ /**
+ * The feature id for the '<em><b>Saps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__SAPS = STRUCTURE_INSTANCE__SAPS;
+
+ /**
+ * The feature id for the '<em><b>Spps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__SPPS = STRUCTURE_INSTANCE__SPPS;
+
+ /**
+ * The feature id for the '<em><b>Services</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__SERVICES = STRUCTURE_INSTANCE__SERVICES;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__BINDINGS = STRUCTURE_INSTANCE__BINDINGS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__CONNECTIONS = STRUCTURE_INSTANCE__CONNECTIONS;
+
+ /**
+ * The feature id for the '<em><b>All Contained Instances</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__ALL_CONTAINED_INSTANCES = STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES;
+
+ /**
+ * The feature id for the '<em><b>Ordered If Item Instances</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__ORDERED_IF_ITEM_INSTANCES = STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES;
+
+ /**
+ * The feature id for the '<em><b>Sub System Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS = STRUCTURE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Obj Counter</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE__OBJ_COUNTER = STRUCTURE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Sub System Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SUB_SYSTEM_INSTANCE_FEATURE_COUNT = STRUCTURE_INSTANCE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.ActorInstanceImpl <em>Actor Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ActorInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getActorInstance()
+ * @generated
+ */
+ int ACTOR_INSTANCE = 5;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__NAME = STRUCTURE_INSTANCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__PATH = STRUCTURE_INSTANCE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__OBJ_ID = STRUCTURE_INSTANCE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Instances</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__INSTANCES = STRUCTURE_INSTANCE__INSTANCES;
+
+ /**
+ * The feature id for the '<em><b>Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__PORTS = STRUCTURE_INSTANCE__PORTS;
+
+ /**
+ * The feature id for the '<em><b>Saps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__SAPS = STRUCTURE_INSTANCE__SAPS;
+
+ /**
+ * The feature id for the '<em><b>Spps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__SPPS = STRUCTURE_INSTANCE__SPPS;
+
+ /**
+ * The feature id for the '<em><b>Services</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__SERVICES = STRUCTURE_INSTANCE__SERVICES;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__BINDINGS = STRUCTURE_INSTANCE__BINDINGS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__CONNECTIONS = STRUCTURE_INSTANCE__CONNECTIONS;
+
+ /**
+ * The feature id for the '<em><b>All Contained Instances</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__ALL_CONTAINED_INSTANCES = STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES;
+
+ /**
+ * The feature id for the '<em><b>Ordered If Item Instances</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__ORDERED_IF_ITEM_INSTANCES = STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES;
+
+ /**
+ * The feature id for the '<em><b>Actor Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE__ACTOR_CLASS = STRUCTURE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Actor Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTOR_INSTANCE_FEATURE_COUNT = STRUCTURE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.InterfaceItemInstanceImpl <em>Interface Item Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.InterfaceItemInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getInterfaceItemInstance()
+ * @generated
+ */
+ int INTERFACE_ITEM_INSTANCE = 6;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM_INSTANCE__NAME = INSTANCE_BASE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM_INSTANCE__PATH = INSTANCE_BASE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM_INSTANCE__OBJ_ID = INSTANCE_BASE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Peers</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM_INSTANCE__PEERS = INSTANCE_BASE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Interface Item Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERFACE_ITEM_INSTANCE_FEATURE_COUNT = INSTANCE_BASE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.PortInstanceImpl <em>Port Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.PortInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getPortInstance()
+ * @generated
+ */
+ int PORT_INSTANCE = 7;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE__NAME = INTERFACE_ITEM_INSTANCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE__PATH = INTERFACE_ITEM_INSTANCE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE__OBJ_ID = INTERFACE_ITEM_INSTANCE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Peers</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE__PEERS = INTERFACE_ITEM_INSTANCE__PEERS;
+
+ /**
+ * The feature id for the '<em><b>Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE__PORT = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE__KIND = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE__BINDINGS = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Port Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_INSTANCE_FEATURE_COUNT = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.BindingInstanceImpl <em>Binding Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.BindingInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getBindingInstance()
+ * @generated
+ */
+ int BINDING_INSTANCE = 8;
+
+ /**
+ * The feature id for the '<em><b>Ports</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_INSTANCE__PORTS = 0;
+
+ /**
+ * The number of structural features of the '<em>Binding Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_INSTANCE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.SAPInstanceImpl <em>SAP Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.SAPInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getSAPInstance()
+ * @generated
+ */
+ int SAP_INSTANCE = 9;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_INSTANCE__NAME = INTERFACE_ITEM_INSTANCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_INSTANCE__PATH = INTERFACE_ITEM_INSTANCE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_INSTANCE__OBJ_ID = INTERFACE_ITEM_INSTANCE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Peers</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_INSTANCE__PEERS = INTERFACE_ITEM_INSTANCE__PEERS;
+
+ /**
+ * The feature id for the '<em><b>Sap</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_INSTANCE__SAP = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>SAP Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SAP_INSTANCE_FEATURE_COUNT = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.SPPInstanceImpl <em>SPP Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.SPPInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getSPPInstance()
+ * @generated
+ */
+ int SPP_INSTANCE = 10;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_INSTANCE__NAME = INSTANCE_BASE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_INSTANCE__PATH = INSTANCE_BASE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_INSTANCE__OBJ_ID = INSTANCE_BASE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Spp</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_INSTANCE__SPP = INSTANCE_BASE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Incoming</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_INSTANCE__INCOMING = INSTANCE_BASE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Outgoing</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_INSTANCE__OUTGOING = INSTANCE_BASE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>SPP Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SPP_INSTANCE_FEATURE_COUNT = INSTANCE_BASE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.ServiceImplInstanceImpl <em>Service Impl Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ServiceImplInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getServiceImplInstance()
+ * @generated
+ */
+ int SERVICE_IMPL_INSTANCE = 11;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPL_INSTANCE__NAME = INTERFACE_ITEM_INSTANCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPL_INSTANCE__PATH = INTERFACE_ITEM_INSTANCE__PATH;
+
+ /**
+ * The feature id for the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPL_INSTANCE__OBJ_ID = INTERFACE_ITEM_INSTANCE__OBJ_ID;
+
+ /**
+ * The feature id for the '<em><b>Peers</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPL_INSTANCE__PEERS = INTERFACE_ITEM_INSTANCE__PEERS;
+
+ /**
+ * The feature id for the '<em><b>Svc Impl</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPL_INSTANCE__SVC_IMPL = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Service Impl Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SERVICE_IMPL_INSTANCE_FEATURE_COUNT = INTERFACE_ITEM_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl <em>Connection Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getConnectionInstance()
+ * @generated
+ */
+ int CONNECTION_INSTANCE = 12;
+
+ /**
+ * The feature id for the '<em><b>From AI</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION_INSTANCE__FROM_AI = 0;
+
+ /**
+ * The feature id for the '<em><b>From SPP</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION_INSTANCE__FROM_SPP = 1;
+
+ /**
+ * The feature id for the '<em><b>To SPP</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION_INSTANCE__TO_SPP = 2;
+
+ /**
+ * The feature id for the '<em><b>Connection</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION_INSTANCE__CONNECTION = 3;
+
+ /**
+ * The number of structural features of the '<em>Connection Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION_INSTANCE_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl <em>Active Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getActiveTrigger()
+ * @generated
+ */
+ int ACTIVE_TRIGGER = 13;
+
+ /**
+ * The feature id for the '<em><b>Msg</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTIVE_TRIGGER__MSG = 0;
+
+ /**
+ * The feature id for the '<em><b>Ifitem</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTIVE_TRIGGER__IFITEM = 1;
+
+ /**
+ * The feature id for the '<em><b>Trigger</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTIVE_TRIGGER__TRIGGER = 2;
+
+ /**
+ * The feature id for the '<em><b>Transitions</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTIVE_TRIGGER__TRANSITIONS = 3;
+
+ /**
+ * The number of structural features of the '<em>Active Trigger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ACTIVE_TRIGGER_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.TransitionChainImpl <em>Transition Chain</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.TransitionChainImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getTransitionChain()
+ * @generated
+ */
+ int TRANSITION_CHAIN = 14;
+
+ /**
+ * The feature id for the '<em><b>Transition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_CHAIN__TRANSITION = 0;
+
+ /**
+ * The number of structural features of the '<em>Transition Chain</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_CHAIN_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link ITransitionChainVisitor <em>ITransition Chain Visitor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see ITransitionChainVisitor
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getITransitionChainVisitor()
+ * @generated
+ */
+ int ITRANSITION_CHAIN_VISITOR = 15;
+
+ /**
+ * The number of structural features of the '<em>ITransition Chain Visitor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ITRANSITION_CHAIN_VISITOR_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link IDiagnostician <em>IDiagnostician</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see IDiagnostician
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getIDiagnostician()
+ * @generated
+ */
+ int IDIAGNOSTICIAN = 16;
+
+ /**
+ * The number of structural features of the '<em>IDiagnostician</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDIAGNOSTICIAN_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.impl.ExpandedActorClassImpl <em>Expanded Actor Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ExpandedActorClassImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getExpandedActorClass()
+ * @generated
+ */
+ int EXPANDED_ACTOR_CLASS = 17;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__NAME = RoomPackage.ACTOR_CLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__BINDINGS = RoomPackage.ACTOR_CLASS__BINDINGS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__CONNECTIONS = RoomPackage.ACTOR_CLASS__CONNECTIONS;
+
+ /**
+ * The feature id for the '<em><b>If SP Ps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__IF_SP_PS = RoomPackage.ACTOR_CLASS__IF_SP_PS;
+
+ /**
+ * The feature id for the '<em><b>Actor Refs</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__ACTOR_REFS = RoomPackage.ACTOR_CLASS__ACTOR_REFS;
+
+ /**
+ * The feature id for the '<em><b>Base</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__BASE = RoomPackage.ACTOR_CLASS__BASE;
+
+ /**
+ * The feature id for the '<em><b>If Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__IF_PORTS = RoomPackage.ACTOR_CLASS__IF_PORTS;
+
+ /**
+ * The feature id for the '<em><b>User Code1</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__USER_CODE1 = RoomPackage.ACTOR_CLASS__USER_CODE1;
+
+ /**
+ * The feature id for the '<em><b>User Code2</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__USER_CODE2 = RoomPackage.ACTOR_CLASS__USER_CODE2;
+
+ /**
+ * The feature id for the '<em><b>Int Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__INT_PORTS = RoomPackage.ACTOR_CLASS__INT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Ext Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__EXT_PORTS = RoomPackage.ACTOR_CLASS__EXT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Service Implementations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__SERVICE_IMPLEMENTATIONS = RoomPackage.ACTOR_CLASS__SERVICE_IMPLEMENTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Str SA Ps</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__STR_SA_PS = RoomPackage.ACTOR_CLASS__STR_SA_PS;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__ATTRIBUTES = RoomPackage.ACTOR_CLASS__ATTRIBUTES;
+
+ /**
+ * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__OPERATIONS = RoomPackage.ACTOR_CLASS__OPERATIONS;
+
+ /**
+ * The feature id for the '<em><b>State Machine</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__STATE_MACHINE = RoomPackage.ACTOR_CLASS__STATE_MACHINE;
+
+ /**
+ * The feature id for the '<em><b>Actor Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS__ACTOR_CLASS = RoomPackage.ACTOR_CLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Expanded Actor Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPANDED_ACTOR_CLASS_FEATURE_COUNT = RoomPackage.ACTOR_CLASS_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.etrice.generator.etricegen.PortKind <em>Port Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.PortKind
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getPortKind()
+ * @generated
+ */
+ int PORT_KIND = 18;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.Root <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Root</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root
+ * @generated
+ */
+ EClass getRoot();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.Root#getSubSystems <em>Sub Systems</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Sub Systems</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root#getSubSystems()
+ * @see #getRoot()
+ * @generated
+ */
+ EReference getRoot_SubSystems();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.Root#getModels <em>Models</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Models</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root#getModels()
+ * @see #getRoot()
+ * @generated
+ */
+ EReference getRoot_Models();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.Root#getXpActorClasses <em>Xp Actor Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Xp Actor Classes</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root#getXpActorClasses()
+ * @see #getRoot()
+ * @generated
+ */
+ EReference getRoot_XpActorClasses();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.Root#getUsedDataClasses <em>Used Data Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Used Data Classes</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root#getUsedDataClasses()
+ * @see #getRoot()
+ * @generated
+ */
+ EReference getRoot_UsedDataClasses();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.Root#getUsedProtocolClasses <em>Used Protocol Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Used Protocol Classes</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root#getUsedProtocolClasses()
+ * @see #getRoot()
+ * @generated
+ */
+ EReference getRoot_UsedProtocolClasses();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.Root#getUsedActorClasses <em>Used Actor Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Used Actor Classes</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root#getUsedActorClasses()
+ * @see #getRoot()
+ * @generated
+ */
+ EReference getRoot_UsedActorClasses();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.Root#getUsedRoomModels <em>Used Room Models</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Used Room Models</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Root#getUsedRoomModels()
+ * @see #getRoot()
+ * @generated
+ */
+ EReference getRoot_UsedRoomModels();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.Counter <em>Counter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Counter</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Counter
+ * @generated
+ */
+ EClass getCounter();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.generator.etricegen.Counter#getCounter <em>Counter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Counter</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.Counter#getCounter()
+ * @see #getCounter()
+ * @generated
+ */
+ EAttribute getCounter_Counter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.InstanceBase <em>Instance Base</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Instance Base</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.InstanceBase
+ * @generated
+ */
+ EClass getInstanceBase();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.InstanceBase#getName()
+ * @see #getInstanceBase()
+ * @generated
+ */
+ EAttribute getInstanceBase_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getPath <em>Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Path</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.InstanceBase#getPath()
+ * @see #getInstanceBase()
+ * @generated
+ */
+ EAttribute getInstanceBase_Path();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getObjId <em>Obj Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Obj Id</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.InstanceBase#getObjId()
+ * @see #getInstanceBase()
+ * @generated
+ */
+ EAttribute getInstanceBase_ObjId();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.StructureInstance <em>Structure Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Structure Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance
+ * @generated
+ */
+ EClass getStructureInstance();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getInstances <em>Instances</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Instances</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getInstances()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_Instances();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getPorts <em>Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Ports</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getPorts()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_Ports();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getSaps <em>Saps</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Saps</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getSaps()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_Saps();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getSpps <em>Spps</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Spps</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getSpps()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_Spps();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getServices <em>Services</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Services</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getServices()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_Services();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Bindings</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getBindings()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_Bindings();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getConnections <em>Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Connections</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getConnections()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_Connections();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getAllContainedInstances <em>All Contained Instances</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>All Contained Instances</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getAllContainedInstances()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_AllContainedInstances();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getOrderedIfItemInstances <em>Ordered If Item Instances</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Ordered If Item Instances</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance#getOrderedIfItemInstances()
+ * @see #getStructureInstance()
+ * @generated
+ */
+ EReference getStructureInstance_OrderedIfItemInstances();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance <em>Sub System Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sub System Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SubSystemInstance
+ * @generated
+ */
+ EClass getSubSystemInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance#getSubSystemClass <em>Sub System Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Sub System Class</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SubSystemInstance#getSubSystemClass()
+ * @see #getSubSystemInstance()
+ * @generated
+ */
+ EReference getSubSystemInstance_SubSystemClass();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance#getObjCounter <em>Obj Counter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Obj Counter</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SubSystemInstance#getObjCounter()
+ * @see #getSubSystemInstance()
+ * @generated
+ */
+ EReference getSubSystemInstance_ObjCounter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.ActorInstance <em>Actor Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Actor Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ActorInstance
+ * @generated
+ */
+ EClass getActorInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ActorInstance#getActorClass <em>Actor Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Actor Class</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ActorInstance#getActorClass()
+ * @see #getActorInstance()
+ * @generated
+ */
+ EReference getActorInstance_ActorClass();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.InterfaceItemInstance <em>Interface Item Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Interface Item Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.InterfaceItemInstance
+ * @generated
+ */
+ EClass getInterfaceItemInstance();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.InterfaceItemInstance#getPeers <em>Peers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Peers</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.InterfaceItemInstance#getPeers()
+ * @see #getInterfaceItemInstance()
+ * @generated
+ */
+ EReference getInterfaceItemInstance_Peers();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.PortInstance <em>Port Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Port Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.PortInstance
+ * @generated
+ */
+ EClass getPortInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.PortInstance#getPort <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Port</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.PortInstance#getPort()
+ * @see #getPortInstance()
+ * @generated
+ */
+ EReference getPortInstance_Port();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.generator.etricegen.PortInstance#getKind <em>Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Kind</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.PortInstance#getKind()
+ * @see #getPortInstance()
+ * @generated
+ */
+ EAttribute getPortInstance_Kind();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.PortInstance#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Bindings</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.PortInstance#getBindings()
+ * @see #getPortInstance()
+ * @generated
+ */
+ EReference getPortInstance_Bindings();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.BindingInstance <em>Binding Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Binding Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.BindingInstance
+ * @generated
+ */
+ EClass getBindingInstance();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.BindingInstance#getPorts <em>Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Ports</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.BindingInstance#getPorts()
+ * @see #getBindingInstance()
+ * @generated
+ */
+ EReference getBindingInstance_Ports();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.SAPInstance <em>SAP Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>SAP Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SAPInstance
+ * @generated
+ */
+ EClass getSAPInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.SAPInstance#getSap <em>Sap</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Sap</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SAPInstance#getSap()
+ * @see #getSAPInstance()
+ * @generated
+ */
+ EReference getSAPInstance_Sap();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.SPPInstance <em>SPP Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>SPP Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SPPInstance
+ * @generated
+ */
+ EClass getSPPInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getSpp <em>Spp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Spp</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SPPInstance#getSpp()
+ * @see #getSPPInstance()
+ * @generated
+ */
+ EReference getSPPInstance_Spp();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getIncoming <em>Incoming</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Incoming</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SPPInstance#getIncoming()
+ * @see #getSPPInstance()
+ * @generated
+ */
+ EReference getSPPInstance_Incoming();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getOutgoing <em>Outgoing</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Outgoing</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.SPPInstance#getOutgoing()
+ * @see #getSPPInstance()
+ * @generated
+ */
+ EReference getSPPInstance_Outgoing();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.ServiceImplInstance <em>Service Impl Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Service Impl Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ServiceImplInstance
+ * @generated
+ */
+ EClass getServiceImplInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ServiceImplInstance#getSvcImpl <em>Svc Impl</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Svc Impl</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ServiceImplInstance#getSvcImpl()
+ * @see #getServiceImplInstance()
+ * @generated
+ */
+ EReference getServiceImplInstance_SvcImpl();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance <em>Connection Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Connection Instance</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance
+ * @generated
+ */
+ EClass getConnectionInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromAI <em>From AI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>From AI</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromAI()
+ * @see #getConnectionInstance()
+ * @generated
+ */
+ EReference getConnectionInstance_FromAI();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromSPP <em>From SPP</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>From SPP</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromSPP()
+ * @see #getConnectionInstance()
+ * @generated
+ */
+ EReference getConnectionInstance_FromSPP();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getToSPP <em>To SPP</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>To SPP</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance#getToSPP()
+ * @see #getConnectionInstance()
+ * @generated
+ */
+ EReference getConnectionInstance_ToSPP();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getConnection <em>Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Connection</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance#getConnection()
+ * @see #getConnectionInstance()
+ * @generated
+ */
+ EReference getConnectionInstance_Connection();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger <em>Active Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Active Trigger</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ActiveTrigger
+ * @generated
+ */
+ EClass getActiveTrigger();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getMsg <em>Msg</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Msg</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ActiveTrigger#getMsg()
+ * @see #getActiveTrigger()
+ * @generated
+ */
+ EReference getActiveTrigger_Msg();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getIfitem <em>Ifitem</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ifitem</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ActiveTrigger#getIfitem()
+ * @see #getActiveTrigger()
+ * @generated
+ */
+ EReference getActiveTrigger_Ifitem();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getTrigger <em>Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Trigger</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ActiveTrigger#getTrigger()
+ * @see #getActiveTrigger()
+ * @generated
+ */
+ EAttribute getActiveTrigger_Trigger();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger#getTransitions <em>Transitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Transitions</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ActiveTrigger#getTransitions()
+ * @see #getActiveTrigger()
+ * @generated
+ */
+ EReference getActiveTrigger_Transitions();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.TransitionChain <em>Transition Chain</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Transition Chain</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.TransitionChain
+ * @generated
+ */
+ EClass getTransitionChain();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.TransitionChain#getTransition <em>Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Transition</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.TransitionChain#getTransition()
+ * @see #getTransitionChain()
+ * @generated
+ */
+ EReference getTransitionChain_Transition();
+
+ /**
+ * Returns the meta object for class '{@link ITransitionChainVisitor <em>ITransition Chain Visitor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ITransition Chain Visitor</em>'.
+ * @see ITransitionChainVisitor
+ * @model instanceClass="ITransitionChainVisitor"
+ * @generated
+ */
+ EClass getITransitionChainVisitor();
+
+ /**
+ * Returns the meta object for class '{@link IDiagnostician <em>IDiagnostician</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IDiagnostician</em>'.
+ * @see IDiagnostician
+ * @model instanceClass="IDiagnostician"
+ * @generated
+ */
+ EClass getIDiagnostician();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.etrice.generator.etricegen.ExpandedActorClass <em>Expanded Actor Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Expanded Actor Class</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ExpandedActorClass
+ * @generated
+ */
+ EClass getExpandedActorClass();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.etrice.generator.etricegen.ExpandedActorClass#getActorClass <em>Actor Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Actor Class</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.ExpandedActorClass#getActorClass()
+ * @see #getExpandedActorClass()
+ * @generated
+ */
+ EReference getExpandedActorClass_ActorClass();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.etrice.generator.etricegen.PortKind <em>Port Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Port Kind</em>'.
+ * @see org.eclipse.etrice.generator.etricegen.PortKind
+ * @generated
+ */
+ EEnum getPortKind();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ETriceGenFactory getETriceGenFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl <em>Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.RootImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getRoot()
+ * @generated
+ */
+ EClass ROOT = eINSTANCE.getRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Sub Systems</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOT__SUB_SYSTEMS = eINSTANCE.getRoot_SubSystems();
+
+ /**
+ * The meta object literal for the '<em><b>Models</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOT__MODELS = eINSTANCE.getRoot_Models();
+
+ /**
+ * The meta object literal for the '<em><b>Xp Actor Classes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOT__XP_ACTOR_CLASSES = eINSTANCE.getRoot_XpActorClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Used Data Classes</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOT__USED_DATA_CLASSES = eINSTANCE.getRoot_UsedDataClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Used Protocol Classes</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOT__USED_PROTOCOL_CLASSES = eINSTANCE.getRoot_UsedProtocolClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Used Actor Classes</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOT__USED_ACTOR_CLASSES = eINSTANCE.getRoot_UsedActorClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Used Room Models</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ROOT__USED_ROOM_MODELS = eINSTANCE.getRoot_UsedRoomModels();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.CounterImpl <em>Counter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.CounterImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getCounter()
+ * @generated
+ */
+ EClass COUNTER = eINSTANCE.getCounter();
+
+ /**
+ * The meta object literal for the '<em><b>Counter</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute COUNTER__COUNTER = eINSTANCE.getCounter_Counter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.InstanceBaseImpl <em>Instance Base</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.InstanceBaseImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getInstanceBase()
+ * @generated
+ */
+ EClass INSTANCE_BASE = eINSTANCE.getInstanceBase();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCE_BASE__NAME = eINSTANCE.getInstanceBase_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Path</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCE_BASE__PATH = eINSTANCE.getInstanceBase_Path();
+
+ /**
+ * The meta object literal for the '<em><b>Obj Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCE_BASE__OBJ_ID = eINSTANCE.getInstanceBase_ObjId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl <em>Structure Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getStructureInstance()
+ * @generated
+ */
+ EClass STRUCTURE_INSTANCE = eINSTANCE.getStructureInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Instances</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__INSTANCES = eINSTANCE.getStructureInstance_Instances();
+
+ /**
+ * The meta object literal for the '<em><b>Ports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__PORTS = eINSTANCE.getStructureInstance_Ports();
+
+ /**
+ * The meta object literal for the '<em><b>Saps</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__SAPS = eINSTANCE.getStructureInstance_Saps();
+
+ /**
+ * The meta object literal for the '<em><b>Spps</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__SPPS = eINSTANCE.getStructureInstance_Spps();
+
+ /**
+ * The meta object literal for the '<em><b>Services</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__SERVICES = eINSTANCE.getStructureInstance_Services();
+
+ /**
+ * The meta object literal for the '<em><b>Bindings</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__BINDINGS = eINSTANCE.getStructureInstance_Bindings();
+
+ /**
+ * The meta object literal for the '<em><b>Connections</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__CONNECTIONS = eINSTANCE.getStructureInstance_Connections();
+
+ /**
+ * The meta object literal for the '<em><b>All Contained Instances</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES = eINSTANCE.getStructureInstance_AllContainedInstances();
+
+ /**
+ * The meta object literal for the '<em><b>Ordered If Item Instances</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES = eINSTANCE.getStructureInstance_OrderedIfItemInstances();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.SubSystemInstanceImpl <em>Sub System Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.SubSystemInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getSubSystemInstance()
+ * @generated
+ */
+ EClass SUB_SYSTEM_INSTANCE = eINSTANCE.getSubSystemInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Sub System Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS = eINSTANCE.getSubSystemInstance_SubSystemClass();
+
+ /**
+ * The meta object literal for the '<em><b>Obj Counter</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SUB_SYSTEM_INSTANCE__OBJ_COUNTER = eINSTANCE.getSubSystemInstance_ObjCounter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.ActorInstanceImpl <em>Actor Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ActorInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getActorInstance()
+ * @generated
+ */
+ EClass ACTOR_INSTANCE = eINSTANCE.getActorInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Actor Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTOR_INSTANCE__ACTOR_CLASS = eINSTANCE.getActorInstance_ActorClass();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.InterfaceItemInstanceImpl <em>Interface Item Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.InterfaceItemInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getInterfaceItemInstance()
+ * @generated
+ */
+ EClass INTERFACE_ITEM_INSTANCE = eINSTANCE.getInterfaceItemInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Peers</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERFACE_ITEM_INSTANCE__PEERS = eINSTANCE.getInterfaceItemInstance_Peers();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.PortInstanceImpl <em>Port Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.PortInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getPortInstance()
+ * @generated
+ */
+ EClass PORT_INSTANCE = eINSTANCE.getPortInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Port</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_INSTANCE__PORT = eINSTANCE.getPortInstance_Port();
+
+ /**
+ * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PORT_INSTANCE__KIND = eINSTANCE.getPortInstance_Kind();
+
+ /**
+ * The meta object literal for the '<em><b>Bindings</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_INSTANCE__BINDINGS = eINSTANCE.getPortInstance_Bindings();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.BindingInstanceImpl <em>Binding Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.BindingInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getBindingInstance()
+ * @generated
+ */
+ EClass BINDING_INSTANCE = eINSTANCE.getBindingInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Ports</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING_INSTANCE__PORTS = eINSTANCE.getBindingInstance_Ports();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.SAPInstanceImpl <em>SAP Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.SAPInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getSAPInstance()
+ * @generated
+ */
+ EClass SAP_INSTANCE = eINSTANCE.getSAPInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Sap</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SAP_INSTANCE__SAP = eINSTANCE.getSAPInstance_Sap();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.SPPInstanceImpl <em>SPP Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.SPPInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getSPPInstance()
+ * @generated
+ */
+ EClass SPP_INSTANCE = eINSTANCE.getSPPInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Spp</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SPP_INSTANCE__SPP = eINSTANCE.getSPPInstance_Spp();
+
+ /**
+ * The meta object literal for the '<em><b>Incoming</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SPP_INSTANCE__INCOMING = eINSTANCE.getSPPInstance_Incoming();
+
+ /**
+ * The meta object literal for the '<em><b>Outgoing</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SPP_INSTANCE__OUTGOING = eINSTANCE.getSPPInstance_Outgoing();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.ServiceImplInstanceImpl <em>Service Impl Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ServiceImplInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getServiceImplInstance()
+ * @generated
+ */
+ EClass SERVICE_IMPL_INSTANCE = eINSTANCE.getServiceImplInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Svc Impl</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SERVICE_IMPL_INSTANCE__SVC_IMPL = eINSTANCE.getServiceImplInstance_SvcImpl();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl <em>Connection Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getConnectionInstance()
+ * @generated
+ */
+ EClass CONNECTION_INSTANCE = eINSTANCE.getConnectionInstance();
+
+ /**
+ * The meta object literal for the '<em><b>From AI</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTION_INSTANCE__FROM_AI = eINSTANCE.getConnectionInstance_FromAI();
+
+ /**
+ * The meta object literal for the '<em><b>From SPP</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTION_INSTANCE__FROM_SPP = eINSTANCE.getConnectionInstance_FromSPP();
+
+ /**
+ * The meta object literal for the '<em><b>To SPP</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTION_INSTANCE__TO_SPP = eINSTANCE.getConnectionInstance_ToSPP();
+
+ /**
+ * The meta object literal for the '<em><b>Connection</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTION_INSTANCE__CONNECTION = eINSTANCE.getConnectionInstance_Connection();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl <em>Active Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getActiveTrigger()
+ * @generated
+ */
+ EClass ACTIVE_TRIGGER = eINSTANCE.getActiveTrigger();
+
+ /**
+ * The meta object literal for the '<em><b>Msg</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTIVE_TRIGGER__MSG = eINSTANCE.getActiveTrigger_Msg();
+
+ /**
+ * The meta object literal for the '<em><b>Ifitem</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTIVE_TRIGGER__IFITEM = eINSTANCE.getActiveTrigger_Ifitem();
+
+ /**
+ * The meta object literal for the '<em><b>Trigger</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ACTIVE_TRIGGER__TRIGGER = eINSTANCE.getActiveTrigger_Trigger();
+
+ /**
+ * The meta object literal for the '<em><b>Transitions</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ACTIVE_TRIGGER__TRANSITIONS = eINSTANCE.getActiveTrigger_Transitions();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.TransitionChainImpl <em>Transition Chain</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.TransitionChainImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getTransitionChain()
+ * @generated
+ */
+ EClass TRANSITION_CHAIN = eINSTANCE.getTransitionChain();
+
+ /**
+ * The meta object literal for the '<em><b>Transition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION_CHAIN__TRANSITION = eINSTANCE.getTransitionChain_Transition();
+
+ /**
+ * The meta object literal for the '{@link ITransitionChainVisitor <em>ITransition Chain Visitor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see ITransitionChainVisitor
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getITransitionChainVisitor()
+ * @generated
+ */
+ EClass ITRANSITION_CHAIN_VISITOR = eINSTANCE.getITransitionChainVisitor();
+
+ /**
+ * The meta object literal for the '{@link IDiagnostician <em>IDiagnostician</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see IDiagnostician
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getIDiagnostician()
+ * @generated
+ */
+ EClass IDIAGNOSTICIAN = eINSTANCE.getIDiagnostician();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.impl.ExpandedActorClassImpl <em>Expanded Actor Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.impl.ExpandedActorClassImpl
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getExpandedActorClass()
+ * @generated
+ */
+ EClass EXPANDED_ACTOR_CLASS = eINSTANCE.getExpandedActorClass();
+
+ /**
+ * The meta object literal for the '<em><b>Actor Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXPANDED_ACTOR_CLASS__ACTOR_CLASS = eINSTANCE.getExpandedActorClass_ActorClass();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.etrice.generator.etricegen.PortKind <em>Port Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.PortKind
+ * @see org.eclipse.etrice.generator.etricegen.impl.ETriceGenPackageImpl#getPortKind()
+ * @generated
+ */
+ EEnum PORT_KIND = eINSTANCE.getPortKind();
+
+ }
+
+} //ETriceGenPackage
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ExpandedActorClass.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ExpandedActorClass.java
new file mode 100644
index 000000000..2b3b8e163
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ExpandedActorClass.java
@@ -0,0 +1,233 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraphItem;
+import org.eclipse.etrice.core.room.StateGraphNode;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TransitionTerminal;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Explicit Actor Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ExpandedActorClass#getActorClass <em>Actor Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getExpandedActorClass()
+ * @model
+ * @generated
+ */
+public interface ExpandedActorClass extends ActorClass {
+ /**
+ * Returns the value of the '<em><b>Actor Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actor Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actor Class</em>' reference.
+ * @see #setActorClass(ActorClass)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getExpandedActorClass_ActorClass()
+ * @model
+ * @generated
+ */
+ ActorClass getActorClass();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ExpandedActorClass#getActorClass <em>Actor Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Actor Class</em>' reference.
+ * @see #getActorClass()
+ * @generated
+ */
+ void setActorClass(ActorClass value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model validatorType="org.eclipse.etrice.generator.etricegen.IDiagnostician"
+ * @generated
+ */
+ void prepare(IDiagnostician validator);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void release();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void addOwnObject(StateGraphItem obj);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean isOwnObject(StateGraphItem obj);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ int getInterfaceItemLocalId(InterfaceItem ifitem);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean hasStateMachine();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ String getCode(DetailCode code);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ String getTriggerCodeName(MessageFromIf mif);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ String getTriggerCodeName(String mif);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ EList<Transition> getOutgoingTransitions(StateGraphNode node);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ EList<Transition> getIncomingTransitions(StateGraphNode node);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ EList<ActiveTrigger> getActiveTriggers(State state);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ EList<MessageFromIf> getTriggers();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ EList<MessageFromIf> getOwnTriggers();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ String getMessageID(MessageFromIf mif);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ TransitionChain getChain(Transition trans);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ EList<TransitionChain> getTransitionChains();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ EList<TransitionChain> getOwnTransitionChains();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ StateGraphNode getNode(TransitionTerminal tt);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean isMatching(Trigger trig, String trigstr);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model outMany="true"
+ * @generated
+ */
+ ContinuationTransition getDefaultBranch(EList<Transition> out);
+
+} // ExplicitActorClass
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/IDiagnostician.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/IDiagnostician.java
new file mode 100644
index 000000000..3033c4990
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/IDiagnostician.java
@@ -0,0 +1,13 @@
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.ecore.EObject;
+
+public interface IDiagnostician {
+
+ void warning(String msg, EObject source);
+ void warning(String msg, EObject source, int feature);
+ void error(String msg, EObject source);
+ void error(String msg, EObject source, int feature);
+
+ boolean isFailed();
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ITransitionChainVisitor.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ITransitionChainVisitor.java
new file mode 100644
index 000000000..51253318b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ITransitionChainVisitor.java
@@ -0,0 +1,24 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.CPBranchTransition;
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.Transition;
+
+public interface ITransitionChainVisitor {
+ String genTypedData();
+ String genActionOperationCall(Transition tr);
+ String genEntryOperationCall(State state);
+ String genExitOperationCall(State state);
+ String genElseIfBranch(CPBranchTransition tr);
+ String genElseBranch(ContinuationTransition tr);
+ String genEndIf();
+ String genReturnState(State state);
+
+} // ITransitionChainVisitor
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InstanceBase.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InstanceBase.java
new file mode 100644
index 000000000..6637a2bb9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InstanceBase.java
@@ -0,0 +1,103 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instance Base</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getObjId <em>Obj Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getInstanceBase()
+ * @model abstract="true"
+ * @generated
+ */
+public interface InstanceBase extends EObject {
+
+ /**
+ * delimiter character for paths
+ */
+ static char pathDelim = '/';
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getInstanceBase_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Path</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Path</em>' attribute.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getInstanceBase_Path()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getPath();
+
+ /**
+ * Returns the value of the '<em><b>Obj Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Obj Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Obj Id</em>' attribute.
+ * @see #setObjId(int)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getInstanceBase_ObjId()
+ * @model
+ * @generated
+ */
+ int getObjId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.InstanceBase#getObjId <em>Obj Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Obj Id</em>' attribute.
+ * @see #getObjId()
+ * @generated
+ */
+ void setObjId(int value);
+
+} // InstanceBase
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InterfaceItemInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InterfaceItemInstance.java
new file mode 100644
index 000000000..f3e95607d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/InterfaceItemInstance.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Interface Item Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.InterfaceItemInstance#getPeers <em>Peers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getInterfaceItemInstance()
+ * @model
+ * @generated
+ */
+public interface InterfaceItemInstance extends InstanceBase {
+ /**
+ * Returns the value of the '<em><b>Peers</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.InterfaceItemInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Peers</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Peers</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getInterfaceItemInstance_Peers()
+ * @model
+ * @generated
+ */
+ EList<InterfaceItemInstance> getPeers();
+
+} // InterfaceItemInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortInstance.java
new file mode 100644
index 000000000..833b3f181
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortInstance.java
@@ -0,0 +1,105 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.PortInstance#getPort <em>Port</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.PortInstance#getKind <em>Kind</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.PortInstance#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getPortInstance()
+ * @model
+ * @generated
+ */
+public interface PortInstance extends InterfaceItemInstance {
+
+ /**
+ * Returns the value of the '<em><b>Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Port</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Port</em>' reference.
+ * @see #setPort(Port)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getPortInstance_Port()
+ * @model
+ * @generated
+ */
+ Port getPort();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.PortInstance#getPort <em>Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Port</em>' reference.
+ * @see #getPort()
+ * @generated
+ */
+ void setPort(Port value);
+
+ /**
+ * Returns the value of the '<em><b>Kind</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.etrice.generator.etricegen.PortKind}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Kind</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Kind</em>' attribute.
+ * @see org.eclipse.etrice.generator.etricegen.PortKind
+ * @see #setKind(PortKind)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getPortInstance_Kind()
+ * @model
+ * @generated
+ */
+ PortKind getKind();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.PortInstance#getKind <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Kind</em>' attribute.
+ * @see org.eclipse.etrice.generator.etricegen.PortKind
+ * @see #getKind()
+ * @generated
+ */
+ void setKind(PortKind value);
+
+ /**
+ * Returns the value of the '<em><b>Bindings</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.BindingInstance}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.etrice.generator.etricegen.BindingInstance#getPorts <em>Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bindings</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bindings</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getPortInstance_Bindings()
+ * @see org.eclipse.etrice.generator.etricegen.BindingInstance#getPorts
+ * @model opposite="ports"
+ * @generated
+ */
+ EList<BindingInstance> getBindings();
+} // PortInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortKind.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortKind.java
new file mode 100644
index 000000000..756bbb918
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/PortKind.java
@@ -0,0 +1,239 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Port Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getPortKind()
+ * @model
+ * @generated
+ */
+public enum PortKind implements Enumerator {
+ /**
+ * The '<em><b>External</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #EXTERNAL_VALUE
+ * @generated
+ * @ordered
+ */
+ EXTERNAL(0, "external", "external"),
+
+ /**
+ * The '<em><b>Internal</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERNAL_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERNAL(1, "internal", "internal"),
+
+ /**
+ * The '<em><b>Relay</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #RELAY_VALUE
+ * @generated
+ * @ordered
+ */
+ RELAY(2, "relay", "relay");
+
+ /**
+ * The '<em><b>External</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>External</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EXTERNAL
+ * @model name="external"
+ * @generated
+ * @ordered
+ */
+ public static final int EXTERNAL_VALUE = 0;
+
+ /**
+ * The '<em><b>Internal</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Internal</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERNAL
+ * @model name="internal"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERNAL_VALUE = 1;
+
+ /**
+ * The '<em><b>Relay</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Relay</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RELAY
+ * @model name="relay"
+ * @generated
+ * @ordered
+ */
+ public static final int RELAY_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Port Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final PortKind[] VALUES_ARRAY =
+ new PortKind[] {
+ EXTERNAL,
+ INTERNAL,
+ RELAY,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Port Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<PortKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Port Kind</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PortKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ PortKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Port Kind</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PortKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ PortKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Port Kind</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PortKind get(int value) {
+ switch (value) {
+ case EXTERNAL_VALUE: return EXTERNAL;
+ case INTERNAL_VALUE: return INTERNAL;
+ case RELAY_VALUE: return RELAY;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private PortKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //PortKind
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Root.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Root.java
new file mode 100644
index 000000000..e663fdf27
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/Root.java
@@ -0,0 +1,170 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomModel;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Root#getSubSystems <em>Sub Systems</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Root#getModels <em>Models</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Root#getXpActorClasses <em>Xp Actor Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Root#getUsedDataClasses <em>Used Data Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Root#getUsedProtocolClasses <em>Used Protocol Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Root#getUsedActorClasses <em>Used Actor Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.Root#getUsedRoomModels <em>Used Room Models</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot()
+ * @model
+ * @generated
+ */
+public interface Root extends EObject {
+ /**
+ * Returns the value of the '<em><b>Sub Systems</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.SubSystemInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sub Systems</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sub Systems</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot_SubSystems()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SubSystemInstance> getSubSystems();
+
+ /**
+ * Returns the value of the '<em><b>Models</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.RoomModel}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Models</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Models</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot_Models()
+ * @model
+ * @generated
+ */
+ EList<RoomModel> getModels();
+
+ /**
+ * Returns the value of the '<em><b>Xp Actor Classes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.ExpandedActorClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Xp Actor Classes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xp Actor Classes</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot_XpActorClasses()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ExpandedActorClass> getXpActorClasses();
+
+ /**
+ * Returns the value of the '<em><b>Used Data Classes</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.DataClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Used Data Classes</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Used Data Classes</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot_UsedDataClasses()
+ * @model transient="true" volatile="true" derived="true"
+ * @generated
+ */
+ EList<DataClass> getUsedDataClasses();
+
+ /**
+ * Returns the value of the '<em><b>Used Protocol Classes</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ProtocolClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Used Protocol Classes</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Used Protocol Classes</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot_UsedProtocolClasses()
+ * @model transient="true" volatile="true" derived="true"
+ * @generated
+ */
+ EList<ProtocolClass> getUsedProtocolClasses();
+
+ /**
+ * Returns the value of the '<em><b>Used Actor Classes</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.ActorClass}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Used Actor Classes</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Used Actor Classes</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot_UsedActorClasses()
+ * @model transient="true" volatile="true" derived="true"
+ * @generated
+ */
+ EList<ActorClass> getUsedActorClasses();
+
+ /**
+ * Returns the value of the '<em><b>Used Room Models</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.core.room.RoomModel}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Used Room Models</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Used Room Models</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getRoot_UsedRoomModels()
+ * @model transient="true" volatile="true" derived="true"
+ * @generated
+ */
+ EList<RoomModel> getUsedRoomModels();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ EList<RoomModel> getReferencedModels(RoomClass cls);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ EList<ProtocolClass> getReferencedProtocols(ActorClass cls);
+
+} // Root
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SAPInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SAPInstance.java
new file mode 100644
index 000000000..9879f443e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SAPInstance.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.SAPRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SAP Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.SAPInstance#getSap <em>Sap</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSAPInstance()
+ * @model
+ * @generated
+ */
+public interface SAPInstance extends InterfaceItemInstance {
+ /**
+ * Returns the value of the '<em><b>Sap</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sap</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sap</em>' reference.
+ * @see #setSap(SAPRef)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSAPInstance_Sap()
+ * @model
+ * @generated
+ */
+ SAPRef getSap();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.SAPInstance#getSap <em>Sap</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sap</em>' reference.
+ * @see #getSap()
+ * @generated
+ */
+ void setSap(SAPRef value);
+
+} // SAPInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SPPInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SPPInstance.java
new file mode 100644
index 000000000..52a0f94a8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SPPInstance.java
@@ -0,0 +1,103 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SPP Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getSpp <em>Spp</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getIncoming <em>Incoming</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getOutgoing <em>Outgoing</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSPPInstance()
+ * @model
+ * @generated
+ */
+public interface SPPInstance extends InstanceBase {
+ /**
+ * Returns the value of the '<em><b>Spp</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Spp</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Spp</em>' reference.
+ * @see #setSpp(SPPRef)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSPPInstance_Spp()
+ * @model
+ * @generated
+ */
+ SPPRef getSpp();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getSpp <em>Spp</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Spp</em>' reference.
+ * @see #getSpp()
+ * @generated
+ */
+ void setSpp(SPPRef value);
+
+ /**
+ * Returns the value of the '<em><b>Incoming</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.ConnectionInstance}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getToSPP <em>To SPP</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Incoming</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Incoming</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSPPInstance_Incoming()
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance#getToSPP
+ * @model opposite="toSPP"
+ * @generated
+ */
+ EList<ConnectionInstance> getIncoming();
+
+ /**
+ * Returns the value of the '<em><b>Outgoing</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromSPP <em>From SPP</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Outgoing</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Outgoing</em>' reference.
+ * @see #setOutgoing(ConnectionInstance)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSPPInstance_Outgoing()
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance#getFromSPP
+ * @model opposite="fromSPP"
+ * @generated
+ */
+ ConnectionInstance getOutgoing();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.SPPInstance#getOutgoing <em>Outgoing</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Outgoing</em>' reference.
+ * @see #getOutgoing()
+ * @generated
+ */
+ void setOutgoing(ConnectionInstance value);
+
+} // SPPInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ServiceImplInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ServiceImplInstance.java
new file mode 100644
index 000000000..c40e60208
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/ServiceImplInstance.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.ServiceImplementation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Service Impl Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.ServiceImplInstance#getSvcImpl <em>Svc Impl</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getServiceImplInstance()
+ * @model
+ * @generated
+ */
+public interface ServiceImplInstance extends InterfaceItemInstance {
+ /**
+ * Returns the value of the '<em><b>Svc Impl</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Svc Impl</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Svc Impl</em>' reference.
+ * @see #setSvcImpl(ServiceImplementation)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getServiceImplInstance_SvcImpl()
+ * @model
+ * @generated
+ */
+ ServiceImplementation getSvcImpl();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.ServiceImplInstance#getSvcImpl <em>Svc Impl</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Svc Impl</em>' reference.
+ * @see #getSvcImpl()
+ * @generated
+ */
+ void setSvcImpl(ServiceImplementation value);
+
+} // ServiceImplInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/StructureInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/StructureInstance.java
new file mode 100644
index 000000000..f1885427c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/StructureInstance.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Structure Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getInstances <em>Instances</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getPorts <em>Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getSaps <em>Saps</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getSpps <em>Spps</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getServices <em>Services</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getConnections <em>Connections</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getAllContainedInstances <em>All Contained Instances</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.StructureInstance#getOrderedIfItemInstances <em>Ordered If Item Instances</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance()
+ * @model
+ * @generated
+ */
+public interface StructureInstance extends InstanceBase {
+ /**
+ * Returns the value of the '<em><b>Instances</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.ActorInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Instances</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Instances</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_Instances()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ActorInstance> getInstances();
+
+ /**
+ * Returns the value of the '<em><b>Ports</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.PortInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ports</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_Ports()
+ * @model containment="true"
+ * @generated
+ */
+ EList<PortInstance> getPorts();
+
+ /**
+ * Returns the value of the '<em><b>Saps</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.SAPInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Saps</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Saps</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_Saps()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SAPInstance> getSaps();
+
+ /**
+ * Returns the value of the '<em><b>Spps</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.SPPInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Spps</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Spps</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_Spps()
+ * @model containment="true"
+ * @generated
+ */
+ EList<SPPInstance> getSpps();
+
+ /**
+ * Returns the value of the '<em><b>Services</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.ServiceImplInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Services</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Services</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_Services()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ServiceImplInstance> getServices();
+
+ /**
+ * Returns the value of the '<em><b>Bindings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.BindingInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bindings</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bindings</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_Bindings()
+ * @model containment="true"
+ * @generated
+ */
+ EList<BindingInstance> getBindings();
+
+ /**
+ * Returns the value of the '<em><b>Connections</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.ConnectionInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connections</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connections</em>' containment reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_Connections()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ConnectionInstance> getConnections();
+
+ /**
+ * Returns the value of the '<em><b>All Contained Instances</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.ActorInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>All Contained Instances</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>All Contained Instances</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_AllContainedInstances()
+ * @model transient="true" volatile="true" derived="true"
+ * @generated
+ */
+ EList<ActorInstance> getAllContainedInstances();
+
+ /**
+ * Returns the value of the '<em><b>Ordered If Item Instances</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.etrice.generator.etricegen.InterfaceItemInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ordered If Item Instances</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ordered If Item Instances</em>' reference list.
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getStructureInstance_OrderedIfItemInstances()
+ * @model transient="true" changeable="false" derived="true"
+ * @generated
+ */
+ EList<InterfaceItemInstance> getOrderedIfItemInstances();
+
+} // StructureInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SubSystemInstance.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SubSystemInstance.java
new file mode 100644
index 000000000..d8e015c0e
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/SubSystemInstance.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.SubSystemClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance#getSubSystemClass <em>Sub System Class</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance#getObjCounter <em>Obj Counter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSubSystemInstance()
+ * @model
+ * @generated
+ */
+public interface SubSystemInstance extends StructureInstance {
+ /**
+ * Returns the value of the '<em><b>Sub System Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Component Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sub System Class</em>' reference.
+ * @see #setSubSystemClass(SubSystemClass)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSubSystemInstance_SubSystemClass()
+ * @model
+ * @generated
+ */
+ SubSystemClass getSubSystemClass();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance#getSubSystemClass <em>Sub System Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sub System Class</em>' reference.
+ * @see #getSubSystemClass()
+ * @generated
+ */
+ void setSubSystemClass(SubSystemClass value);
+
+ /**
+ * Returns the value of the '<em><b>Obj Counter</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Obj Counter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Obj Counter</em>' containment reference.
+ * @see #setObjCounter(Counter)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getSubSystemInstance_ObjCounter()
+ * @model containment="true"
+ * @generated
+ */
+ Counter getObjCounter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance#getObjCounter <em>Obj Counter</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Obj Counter</em>' containment reference.
+ * @see #getObjCounter()
+ * @generated
+ */
+ void setObjCounter(Counter value);
+
+} // ComponentInstance
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/TransitionChain.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/TransitionChain.java
new file mode 100644
index 000000000..5154911fa
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/TransitionChain.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen;
+
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.Transition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transition Chain</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.TransitionChain#getTransition <em>Transition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getTransitionChain()
+ * @model
+ * @generated
+ */
+public interface TransitionChain extends EObject {
+ /**
+ * Returns the value of the '<em><b>Transition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Transition</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Transition</em>' reference.
+ * @see #setTransition(Transition)
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#getTransitionChain_Transition()
+ * @model
+ * @generated
+ */
+ Transition getTransition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.generator.etricegen.TransitionChain#getTransition <em>Transition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Transition</em>' reference.
+ * @see #getTransition()
+ * @generated
+ */
+ void setTransition(Transition value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ State getStateContext();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ boolean isHandler();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model tcvType="org.eclipse.etrice.generator.etricegen.ITransitionChainVisitor"
+ * @generated
+ */
+ String genExecuteChain(ITransitionChainVisitor tcv);
+
+} // TransitionChain
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActiveTriggerImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActiveTriggerImpl.java
new file mode 100644
index 000000000..554ff64f4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActiveTriggerImpl.java
@@ -0,0 +1,333 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Active Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl#getMsg <em>Msg</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl#getIfitem <em>Ifitem</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl#getTrigger <em>Trigger</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ActiveTriggerImpl#getTransitions <em>Transitions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ActiveTriggerImpl extends EObjectImpl implements ActiveTrigger {
+ /**
+ * The cached value of the '{@link #getMsg() <em>Msg</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMsg()
+ * @generated
+ * @ordered
+ */
+ protected Message msg;
+
+ /**
+ * The cached value of the '{@link #getIfitem() <em>Ifitem</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIfitem()
+ * @generated
+ * @ordered
+ */
+ protected InterfaceItem ifitem;
+
+ /**
+ * The default value of the '{@link #getTrigger() <em>Trigger</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTrigger()
+ * @generated
+ * @ordered
+ */
+ protected static final String TRIGGER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTrigger() <em>Trigger</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTrigger()
+ * @generated
+ * @ordered
+ */
+ protected String trigger = TRIGGER_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTransitions() <em>Transitions</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<TriggeredTransition> transitions;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ActiveTriggerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.ACTIVE_TRIGGER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message getMsg() {
+ if (msg != null && msg.eIsProxy()) {
+ InternalEObject oldMsg = (InternalEObject)msg;
+ msg = (Message)eResolveProxy(oldMsg);
+ if (msg != oldMsg) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.ACTIVE_TRIGGER__MSG, oldMsg, msg));
+ }
+ }
+ return msg;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Message basicGetMsg() {
+ return msg;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMsg(Message newMsg) {
+ Message oldMsg = msg;
+ msg = newMsg;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.ACTIVE_TRIGGER__MSG, oldMsg, msg));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterfaceItem getIfitem() {
+ if (ifitem != null && ifitem.eIsProxy()) {
+ InternalEObject oldIfitem = (InternalEObject)ifitem;
+ ifitem = (InterfaceItem)eResolveProxy(oldIfitem);
+ if (ifitem != oldIfitem) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.ACTIVE_TRIGGER__IFITEM, oldIfitem, ifitem));
+ }
+ }
+ return ifitem;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterfaceItem basicGetIfitem() {
+ return ifitem;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIfitem(InterfaceItem newIfitem) {
+ InterfaceItem oldIfitem = ifitem;
+ ifitem = newIfitem;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.ACTIVE_TRIGGER__IFITEM, oldIfitem, ifitem));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTrigger() {
+ return trigger;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTrigger(String newTrigger) {
+ String oldTrigger = trigger;
+ trigger = newTrigger;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.ACTIVE_TRIGGER__TRIGGER, oldTrigger, trigger));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<TriggeredTransition> getTransitions() {
+ if (transitions == null) {
+ transitions = new EObjectResolvingEList<TriggeredTransition>(TriggeredTransition.class, this, ETriceGenPackage.ACTIVE_TRIGGER__TRANSITIONS);
+ }
+ return transitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTIVE_TRIGGER__MSG:
+ if (resolve) return getMsg();
+ return basicGetMsg();
+ case ETriceGenPackage.ACTIVE_TRIGGER__IFITEM:
+ if (resolve) return getIfitem();
+ return basicGetIfitem();
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRIGGER:
+ return getTrigger();
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRANSITIONS:
+ return getTransitions();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTIVE_TRIGGER__MSG:
+ setMsg((Message)newValue);
+ return;
+ case ETriceGenPackage.ACTIVE_TRIGGER__IFITEM:
+ setIfitem((InterfaceItem)newValue);
+ return;
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRIGGER:
+ setTrigger((String)newValue);
+ return;
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRANSITIONS:
+ getTransitions().clear();
+ getTransitions().addAll((Collection<? extends TriggeredTransition>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTIVE_TRIGGER__MSG:
+ setMsg((Message)null);
+ return;
+ case ETriceGenPackage.ACTIVE_TRIGGER__IFITEM:
+ setIfitem((InterfaceItem)null);
+ return;
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRIGGER:
+ setTrigger(TRIGGER_EDEFAULT);
+ return;
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRANSITIONS:
+ getTransitions().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTIVE_TRIGGER__MSG:
+ return msg != null;
+ case ETriceGenPackage.ACTIVE_TRIGGER__IFITEM:
+ return ifitem != null;
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRIGGER:
+ return TRIGGER_EDEFAULT == null ? trigger != null : !TRIGGER_EDEFAULT.equals(trigger);
+ case ETriceGenPackage.ACTIVE_TRIGGER__TRANSITIONS:
+ return transitions != null && !transitions.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (trigger: ");
+ result.append(trigger);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ActiveTriggerImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActorInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActorInstanceImpl.java
new file mode 100644
index 000000000..d54bd272d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ActorInstanceImpl.java
@@ -0,0 +1,157 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Actor Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ActorInstanceImpl#getActorClass <em>Actor Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ActorInstanceImpl extends StructureInstanceImpl implements ActorInstance {
+ /**
+ * The cached value of the '{@link #getActorClass() <em>Actor Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActorClass()
+ * @generated
+ * @ordered
+ */
+ protected ActorClass actorClass;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ActorInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.ACTOR_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass getActorClass() {
+ if (actorClass != null && actorClass.eIsProxy()) {
+ InternalEObject oldActorClass = (InternalEObject)actorClass;
+ actorClass = (ActorClass)eResolveProxy(oldActorClass);
+ if (actorClass != oldActorClass) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.ACTOR_INSTANCE__ACTOR_CLASS, oldActorClass, actorClass));
+ }
+ }
+ return actorClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass basicGetActorClass() {
+ return actorClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setActorClass(ActorClass newActorClass) {
+ ActorClass oldActorClass = actorClass;
+ actorClass = newActorClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.ACTOR_INSTANCE__ACTOR_CLASS, oldActorClass, actorClass));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTOR_INSTANCE__ACTOR_CLASS:
+ if (resolve) return getActorClass();
+ return basicGetActorClass();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTOR_INSTANCE__ACTOR_CLASS:
+ setActorClass((ActorClass)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTOR_INSTANCE__ACTOR_CLASS:
+ setActorClass((ActorClass)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.ACTOR_INSTANCE__ACTOR_CLASS:
+ return actorClass != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ActorInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/BindingInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/BindingInstanceImpl.java
new file mode 100644
index 000000000..dcafafc88
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/BindingInstanceImpl.java
@@ -0,0 +1,171 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.etrice.generator.etricegen.BindingInstance;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.PortInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Binding Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.BindingInstanceImpl#getPorts <em>Ports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BindingInstanceImpl extends EObjectImpl implements BindingInstance {
+ /**
+ * The cached value of the '{@link #getPorts() <em>Ports</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<PortInstance> ports;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.BINDING_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<PortInstance> getPorts() {
+ if (ports == null) {
+ ports = new EObjectWithInverseResolvingEList.ManyInverse<PortInstance>(PortInstance.class, this, ETriceGenPackage.BINDING_INSTANCE__PORTS, ETriceGenPackage.PORT_INSTANCE__BINDINGS);
+ }
+ return ports;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.BINDING_INSTANCE__PORTS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getPorts()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.BINDING_INSTANCE__PORTS:
+ return ((InternalEList<?>)getPorts()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.BINDING_INSTANCE__PORTS:
+ return getPorts();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.BINDING_INSTANCE__PORTS:
+ getPorts().clear();
+ getPorts().addAll((Collection<? extends PortInstance>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.BINDING_INSTANCE__PORTS:
+ getPorts().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.BINDING_INSTANCE__PORTS:
+ return ports != null && !ports.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //BindingInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ConnectionInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ConnectionInstanceImpl.java
new file mode 100644
index 000000000..f67d05153
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ConnectionInstanceImpl.java
@@ -0,0 +1,424 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.ConnectionInstance;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.SPPInstance;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Connection Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl#getFromAI <em>From AI</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl#getFromSPP <em>From SPP</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl#getToSPP <em>To SPP</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ConnectionInstanceImpl#getConnection <em>Connection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConnectionInstanceImpl extends EObjectImpl implements ConnectionInstance {
+ /**
+ * The cached value of the '{@link #getFromAI() <em>From AI</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFromAI()
+ * @generated
+ * @ordered
+ */
+ protected ActorInstance fromAI;
+
+ /**
+ * The cached value of the '{@link #getFromSPP() <em>From SPP</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFromSPP()
+ * @generated
+ * @ordered
+ */
+ protected SPPInstance fromSPP;
+
+ /**
+ * The cached value of the '{@link #getToSPP() <em>To SPP</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getToSPP()
+ * @generated
+ * @ordered
+ */
+ protected SPPInstance toSPP;
+
+ /**
+ * The cached value of the '{@link #getConnection() <em>Connection</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnection()
+ * @generated
+ * @ordered
+ */
+ protected LayerConnection connection;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConnectionInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.CONNECTION_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorInstance getFromAI() {
+ if (fromAI != null && fromAI.eIsProxy()) {
+ InternalEObject oldFromAI = (InternalEObject)fromAI;
+ fromAI = (ActorInstance)eResolveProxy(oldFromAI);
+ if (fromAI != oldFromAI) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.CONNECTION_INSTANCE__FROM_AI, oldFromAI, fromAI));
+ }
+ }
+ return fromAI;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorInstance basicGetFromAI() {
+ return fromAI;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFromAI(ActorInstance newFromAI) {
+ ActorInstance oldFromAI = fromAI;
+ fromAI = newFromAI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.CONNECTION_INSTANCE__FROM_AI, oldFromAI, fromAI));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPInstance getFromSPP() {
+ if (fromSPP != null && fromSPP.eIsProxy()) {
+ InternalEObject oldFromSPP = (InternalEObject)fromSPP;
+ fromSPP = (SPPInstance)eResolveProxy(oldFromSPP);
+ if (fromSPP != oldFromSPP) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP, oldFromSPP, fromSPP));
+ }
+ }
+ return fromSPP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPInstance basicGetFromSPP() {
+ return fromSPP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFromSPP(SPPInstance newFromSPP, NotificationChain msgs) {
+ SPPInstance oldFromSPP = fromSPP;
+ fromSPP = newFromSPP;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP, oldFromSPP, newFromSPP);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFromSPP(SPPInstance newFromSPP) {
+ if (newFromSPP != fromSPP) {
+ NotificationChain msgs = null;
+ if (fromSPP != null)
+ msgs = ((InternalEObject)fromSPP).eInverseRemove(this, ETriceGenPackage.SPP_INSTANCE__OUTGOING, SPPInstance.class, msgs);
+ if (newFromSPP != null)
+ msgs = ((InternalEObject)newFromSPP).eInverseAdd(this, ETriceGenPackage.SPP_INSTANCE__OUTGOING, SPPInstance.class, msgs);
+ msgs = basicSetFromSPP(newFromSPP, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP, newFromSPP, newFromSPP));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPInstance getToSPP() {
+ if (toSPP != null && toSPP.eIsProxy()) {
+ InternalEObject oldToSPP = (InternalEObject)toSPP;
+ toSPP = (SPPInstance)eResolveProxy(oldToSPP);
+ if (toSPP != oldToSPP) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP, oldToSPP, toSPP));
+ }
+ }
+ return toSPP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPInstance basicGetToSPP() {
+ return toSPP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetToSPP(SPPInstance newToSPP, NotificationChain msgs) {
+ SPPInstance oldToSPP = toSPP;
+ toSPP = newToSPP;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP, oldToSPP, newToSPP);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setToSPP(SPPInstance newToSPP) {
+ if (newToSPP != toSPP) {
+ NotificationChain msgs = null;
+ if (toSPP != null)
+ msgs = ((InternalEObject)toSPP).eInverseRemove(this, ETriceGenPackage.SPP_INSTANCE__INCOMING, SPPInstance.class, msgs);
+ if (newToSPP != null)
+ msgs = ((InternalEObject)newToSPP).eInverseAdd(this, ETriceGenPackage.SPP_INSTANCE__INCOMING, SPPInstance.class, msgs);
+ msgs = basicSetToSPP(newToSPP, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP, newToSPP, newToSPP));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerConnection getConnection() {
+ if (connection != null && connection.eIsProxy()) {
+ InternalEObject oldConnection = (InternalEObject)connection;
+ connection = (LayerConnection)eResolveProxy(oldConnection);
+ if (connection != oldConnection) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.CONNECTION_INSTANCE__CONNECTION, oldConnection, connection));
+ }
+ }
+ return connection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerConnection basicGetConnection() {
+ return connection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConnection(LayerConnection newConnection) {
+ LayerConnection oldConnection = connection;
+ connection = newConnection;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.CONNECTION_INSTANCE__CONNECTION, oldConnection, connection));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP:
+ if (fromSPP != null)
+ msgs = ((InternalEObject)fromSPP).eInverseRemove(this, ETriceGenPackage.SPP_INSTANCE__OUTGOING, SPPInstance.class, msgs);
+ return basicSetFromSPP((SPPInstance)otherEnd, msgs);
+ case ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP:
+ if (toSPP != null)
+ msgs = ((InternalEObject)toSPP).eInverseRemove(this, ETriceGenPackage.SPP_INSTANCE__INCOMING, SPPInstance.class, msgs);
+ return basicSetToSPP((SPPInstance)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP:
+ return basicSetFromSPP(null, msgs);
+ case ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP:
+ return basicSetToSPP(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_AI:
+ if (resolve) return getFromAI();
+ return basicGetFromAI();
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP:
+ if (resolve) return getFromSPP();
+ return basicGetFromSPP();
+ case ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP:
+ if (resolve) return getToSPP();
+ return basicGetToSPP();
+ case ETriceGenPackage.CONNECTION_INSTANCE__CONNECTION:
+ if (resolve) return getConnection();
+ return basicGetConnection();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_AI:
+ setFromAI((ActorInstance)newValue);
+ return;
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP:
+ setFromSPP((SPPInstance)newValue);
+ return;
+ case ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP:
+ setToSPP((SPPInstance)newValue);
+ return;
+ case ETriceGenPackage.CONNECTION_INSTANCE__CONNECTION:
+ setConnection((LayerConnection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_AI:
+ setFromAI((ActorInstance)null);
+ return;
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP:
+ setFromSPP((SPPInstance)null);
+ return;
+ case ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP:
+ setToSPP((SPPInstance)null);
+ return;
+ case ETriceGenPackage.CONNECTION_INSTANCE__CONNECTION:
+ setConnection((LayerConnection)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_AI:
+ return fromAI != null;
+ case ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP:
+ return fromSPP != null;
+ case ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP:
+ return toSPP != null;
+ case ETriceGenPackage.CONNECTION_INSTANCE__CONNECTION:
+ return connection != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConnectionInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/CounterImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/CounterImpl.java
new file mode 100644
index 000000000..993d8f007
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/CounterImpl.java
@@ -0,0 +1,187 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.etrice.generator.etricegen.Counter;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Counter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.CounterImpl#getCounter <em>Counter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CounterImpl extends EObjectImpl implements Counter {
+ /**
+ * The default value of the '{@link #getCounter() <em>Counter</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCounter()
+ * @generated
+ * @ordered
+ */
+ protected static final int COUNTER_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getCounter() <em>Counter</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCounter()
+ * @generated
+ * @ordered
+ */
+ protected int counter = COUNTER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CounterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.COUNTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getCounter() {
+ return counter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCounter(int newCounter) {
+ int oldCounter = counter;
+ counter = newCounter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.COUNTER__COUNTER, oldCounter, counter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getAndIncrementCount() {
+ return getAndIncrementCount(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getAndIncrementCount(int n) {
+ int count = getCounter();
+ setCounter(count+n);
+ return count;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.COUNTER__COUNTER:
+ return getCounter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.COUNTER__COUNTER:
+ setCounter((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.COUNTER__COUNTER:
+ setCounter(COUNTER_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.COUNTER__COUNTER:
+ return counter != COUNTER_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (counter: ");
+ result.append(counter);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CounterImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenFactoryImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenFactoryImpl.java
new file mode 100644
index 000000000..32efb41f4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenFactoryImpl.java
@@ -0,0 +1,304 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.etrice.generator.etricegen.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ETriceGenFactoryImpl extends EFactoryImpl implements ETriceGenFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ETriceGenFactory init() {
+ try {
+ ETriceGenFactory theETriceGenFactory = (ETriceGenFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/etrice/generator");
+ if (theETriceGenFactory != null) {
+ return theETriceGenFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ETriceGenFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ETriceGenFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ETriceGenPackage.ROOT: return createRoot();
+ case ETriceGenPackage.COUNTER: return createCounter();
+ case ETriceGenPackage.STRUCTURE_INSTANCE: return createStructureInstance();
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE: return createSubSystemInstance();
+ case ETriceGenPackage.ACTOR_INSTANCE: return createActorInstance();
+ case ETriceGenPackage.INTERFACE_ITEM_INSTANCE: return createInterfaceItemInstance();
+ case ETriceGenPackage.PORT_INSTANCE: return createPortInstance();
+ case ETriceGenPackage.BINDING_INSTANCE: return createBindingInstance();
+ case ETriceGenPackage.SAP_INSTANCE: return createSAPInstance();
+ case ETriceGenPackage.SPP_INSTANCE: return createSPPInstance();
+ case ETriceGenPackage.SERVICE_IMPL_INSTANCE: return createServiceImplInstance();
+ case ETriceGenPackage.CONNECTION_INSTANCE: return createConnectionInstance();
+ case ETriceGenPackage.ACTIVE_TRIGGER: return createActiveTrigger();
+ case ETriceGenPackage.TRANSITION_CHAIN: return createTransitionChain();
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS: return createExpandedActorClass();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case ETriceGenPackage.PORT_KIND:
+ return createPortKindFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case ETriceGenPackage.PORT_KIND:
+ return convertPortKindToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Root createRoot() {
+ RootImpl root = new RootImpl();
+ return root;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Counter createCounter() {
+ CounterImpl counter = new CounterImpl();
+ return counter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StructureInstance createStructureInstance() {
+ StructureInstanceImpl structureInstance = new StructureInstanceImpl();
+ return structureInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubSystemInstance createSubSystemInstance() {
+ SubSystemInstanceImpl subSystemInstance = new SubSystemInstanceImpl();
+ return subSystemInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorInstance createActorInstance() {
+ ActorInstanceImpl actorInstance = new ActorInstanceImpl();
+ return actorInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterfaceItemInstance createInterfaceItemInstance() {
+ InterfaceItemInstanceImpl interfaceItemInstance = new InterfaceItemInstanceImpl();
+ return interfaceItemInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortInstance createPortInstance() {
+ PortInstanceImpl portInstance = new PortInstanceImpl();
+ return portInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingInstance createBindingInstance() {
+ BindingInstanceImpl bindingInstance = new BindingInstanceImpl();
+ return bindingInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SAPInstance createSAPInstance() {
+ SAPInstanceImpl sapInstance = new SAPInstanceImpl();
+ return sapInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPInstance createSPPInstance() {
+ SPPInstanceImpl sppInstance = new SPPInstanceImpl();
+ return sppInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ServiceImplInstance createServiceImplInstance() {
+ ServiceImplInstanceImpl serviceImplInstance = new ServiceImplInstanceImpl();
+ return serviceImplInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConnectionInstance createConnectionInstance() {
+ ConnectionInstanceImpl connectionInstance = new ConnectionInstanceImpl();
+ return connectionInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActiveTrigger createActiveTrigger() {
+ ActiveTriggerImpl activeTrigger = new ActiveTriggerImpl();
+ return activeTrigger;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionChain createTransitionChain() {
+ TransitionChainImpl transitionChain = new TransitionChainImpl();
+ return transitionChain;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExpandedActorClass createExpandedActorClass() {
+ ExpandedActorClassImpl expandedActorClass = new ExpandedActorClassImpl();
+ return expandedActorClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortKind createPortKindFromString(EDataType eDataType, String initialValue) {
+ PortKind result = PortKind.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertPortKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ETriceGenPackage getETriceGenPackage() {
+ return (ETriceGenPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ETriceGenPackage getPackage() {
+ return ETriceGenPackage.eINSTANCE;
+ }
+
+} //ETriceGenFactoryImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenPackageImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenPackageImpl.java
new file mode 100644
index 000000000..097c944ce
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ETriceGenPackageImpl.java
@@ -0,0 +1,1120 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.etrice.core.room.RoomPackage;
+
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.BindingInstance;
+import org.eclipse.etrice.generator.etricegen.ConnectionInstance;
+import org.eclipse.etrice.generator.etricegen.Counter;
+import org.eclipse.etrice.generator.etricegen.ETriceGenFactory;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.InstanceBase;
+import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
+import org.eclipse.etrice.generator.etricegen.PortInstance;
+import org.eclipse.etrice.generator.etricegen.PortKind;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.SAPInstance;
+import org.eclipse.etrice.generator.etricegen.SPPInstance;
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
+import org.eclipse.etrice.generator.etricegen.StructureInstance;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ETriceGenPackageImpl extends EPackageImpl implements ETriceGenPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass rootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass counterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass instanceBaseEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass structureInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass subSystemInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass actorInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass interfaceItemInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass portInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass bindingInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sapInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sppInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass serviceImplInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass connectionInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass activeTriggerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass transitionChainEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iTransitionChainVisitorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iDiagnosticianEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass expandedActorClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum portKindEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ETriceGenPackageImpl() {
+ super(eNS_URI, ETriceGenFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link ETriceGenPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ETriceGenPackage init() {
+ if (isInited) return (ETriceGenPackage)EPackage.Registry.INSTANCE.getEPackage(ETriceGenPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ETriceGenPackageImpl theETriceGenPackage = (ETriceGenPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ETriceGenPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ETriceGenPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ RoomPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theETriceGenPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theETriceGenPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theETriceGenPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ETriceGenPackage.eNS_URI, theETriceGenPackage);
+ return theETriceGenPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRoot() {
+ return rootEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoot_SubSystems() {
+ return (EReference)rootEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoot_Models() {
+ return (EReference)rootEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoot_XpActorClasses() {
+ return (EReference)rootEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoot_UsedDataClasses() {
+ return (EReference)rootEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoot_UsedProtocolClasses() {
+ return (EReference)rootEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoot_UsedActorClasses() {
+ return (EReference)rootEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRoot_UsedRoomModels() {
+ return (EReference)rootEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCounter() {
+ return counterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCounter_Counter() {
+ return (EAttribute)counterEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInstanceBase() {
+ return instanceBaseEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanceBase_Name() {
+ return (EAttribute)instanceBaseEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanceBase_Path() {
+ return (EAttribute)instanceBaseEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanceBase_ObjId() {
+ return (EAttribute)instanceBaseEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStructureInstance() {
+ return structureInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_Instances() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_Ports() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_Saps() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_Spps() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_Services() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_Bindings() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_Connections() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_AllContainedInstances() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStructureInstance_OrderedIfItemInstances() {
+ return (EReference)structureInstanceEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSubSystemInstance() {
+ return subSystemInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSubSystemInstance_SubSystemClass() {
+ return (EReference)subSystemInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSubSystemInstance_ObjCounter() {
+ return (EReference)subSystemInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getActorInstance() {
+ return actorInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActorInstance_ActorClass() {
+ return (EReference)actorInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInterfaceItemInstance() {
+ return interfaceItemInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInterfaceItemInstance_Peers() {
+ return (EReference)interfaceItemInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPortInstance() {
+ return portInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortInstance_Port() {
+ return (EReference)portInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPortInstance_Kind() {
+ return (EAttribute)portInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortInstance_Bindings() {
+ return (EReference)portInstanceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBindingInstance() {
+ return bindingInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBindingInstance_Ports() {
+ return (EReference)bindingInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSAPInstance() {
+ return sapInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSAPInstance_Sap() {
+ return (EReference)sapInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSPPInstance() {
+ return sppInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSPPInstance_Spp() {
+ return (EReference)sppInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSPPInstance_Incoming() {
+ return (EReference)sppInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSPPInstance_Outgoing() {
+ return (EReference)sppInstanceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getServiceImplInstance() {
+ return serviceImplInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getServiceImplInstance_SvcImpl() {
+ return (EReference)serviceImplInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConnectionInstance() {
+ return connectionInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnectionInstance_FromAI() {
+ return (EReference)connectionInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnectionInstance_FromSPP() {
+ return (EReference)connectionInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnectionInstance_ToSPP() {
+ return (EReference)connectionInstanceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnectionInstance_Connection() {
+ return (EReference)connectionInstanceEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getActiveTrigger() {
+ return activeTriggerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActiveTrigger_Msg() {
+ return (EReference)activeTriggerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActiveTrigger_Ifitem() {
+ return (EReference)activeTriggerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getActiveTrigger_Trigger() {
+ return (EAttribute)activeTriggerEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getActiveTrigger_Transitions() {
+ return (EReference)activeTriggerEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTransitionChain() {
+ return transitionChainEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransitionChain_Transition() {
+ return (EReference)transitionChainEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getITransitionChainVisitor() {
+ return iTransitionChainVisitorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIDiagnostician() {
+ return iDiagnosticianEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExpandedActorClass() {
+ return expandedActorClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExpandedActorClass_ActorClass() {
+ return (EReference)expandedActorClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getPortKind() {
+ return portKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ETriceGenFactory getETriceGenFactory() {
+ return (ETriceGenFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ rootEClass = createEClass(ROOT);
+ createEReference(rootEClass, ROOT__SUB_SYSTEMS);
+ createEReference(rootEClass, ROOT__MODELS);
+ createEReference(rootEClass, ROOT__XP_ACTOR_CLASSES);
+ createEReference(rootEClass, ROOT__USED_DATA_CLASSES);
+ createEReference(rootEClass, ROOT__USED_PROTOCOL_CLASSES);
+ createEReference(rootEClass, ROOT__USED_ACTOR_CLASSES);
+ createEReference(rootEClass, ROOT__USED_ROOM_MODELS);
+
+ counterEClass = createEClass(COUNTER);
+ createEAttribute(counterEClass, COUNTER__COUNTER);
+
+ instanceBaseEClass = createEClass(INSTANCE_BASE);
+ createEAttribute(instanceBaseEClass, INSTANCE_BASE__NAME);
+ createEAttribute(instanceBaseEClass, INSTANCE_BASE__PATH);
+ createEAttribute(instanceBaseEClass, INSTANCE_BASE__OBJ_ID);
+
+ structureInstanceEClass = createEClass(STRUCTURE_INSTANCE);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__INSTANCES);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__PORTS);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__SAPS);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__SPPS);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__SERVICES);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__BINDINGS);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__CONNECTIONS);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES);
+ createEReference(structureInstanceEClass, STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES);
+
+ subSystemInstanceEClass = createEClass(SUB_SYSTEM_INSTANCE);
+ createEReference(subSystemInstanceEClass, SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS);
+ createEReference(subSystemInstanceEClass, SUB_SYSTEM_INSTANCE__OBJ_COUNTER);
+
+ actorInstanceEClass = createEClass(ACTOR_INSTANCE);
+ createEReference(actorInstanceEClass, ACTOR_INSTANCE__ACTOR_CLASS);
+
+ interfaceItemInstanceEClass = createEClass(INTERFACE_ITEM_INSTANCE);
+ createEReference(interfaceItemInstanceEClass, INTERFACE_ITEM_INSTANCE__PEERS);
+
+ portInstanceEClass = createEClass(PORT_INSTANCE);
+ createEReference(portInstanceEClass, PORT_INSTANCE__PORT);
+ createEAttribute(portInstanceEClass, PORT_INSTANCE__KIND);
+ createEReference(portInstanceEClass, PORT_INSTANCE__BINDINGS);
+
+ bindingInstanceEClass = createEClass(BINDING_INSTANCE);
+ createEReference(bindingInstanceEClass, BINDING_INSTANCE__PORTS);
+
+ sapInstanceEClass = createEClass(SAP_INSTANCE);
+ createEReference(sapInstanceEClass, SAP_INSTANCE__SAP);
+
+ sppInstanceEClass = createEClass(SPP_INSTANCE);
+ createEReference(sppInstanceEClass, SPP_INSTANCE__SPP);
+ createEReference(sppInstanceEClass, SPP_INSTANCE__INCOMING);
+ createEReference(sppInstanceEClass, SPP_INSTANCE__OUTGOING);
+
+ serviceImplInstanceEClass = createEClass(SERVICE_IMPL_INSTANCE);
+ createEReference(serviceImplInstanceEClass, SERVICE_IMPL_INSTANCE__SVC_IMPL);
+
+ connectionInstanceEClass = createEClass(CONNECTION_INSTANCE);
+ createEReference(connectionInstanceEClass, CONNECTION_INSTANCE__FROM_AI);
+ createEReference(connectionInstanceEClass, CONNECTION_INSTANCE__FROM_SPP);
+ createEReference(connectionInstanceEClass, CONNECTION_INSTANCE__TO_SPP);
+ createEReference(connectionInstanceEClass, CONNECTION_INSTANCE__CONNECTION);
+
+ activeTriggerEClass = createEClass(ACTIVE_TRIGGER);
+ createEReference(activeTriggerEClass, ACTIVE_TRIGGER__MSG);
+ createEReference(activeTriggerEClass, ACTIVE_TRIGGER__IFITEM);
+ createEAttribute(activeTriggerEClass, ACTIVE_TRIGGER__TRIGGER);
+ createEReference(activeTriggerEClass, ACTIVE_TRIGGER__TRANSITIONS);
+
+ transitionChainEClass = createEClass(TRANSITION_CHAIN);
+ createEReference(transitionChainEClass, TRANSITION_CHAIN__TRANSITION);
+
+ iTransitionChainVisitorEClass = createEClass(ITRANSITION_CHAIN_VISITOR);
+
+ iDiagnosticianEClass = createEClass(IDIAGNOSTICIAN);
+
+ expandedActorClassEClass = createEClass(EXPANDED_ACTOR_CLASS);
+ createEReference(expandedActorClassEClass, EXPANDED_ACTOR_CLASS__ACTOR_CLASS);
+
+ // Create enums
+ portKindEEnum = createEEnum(PORT_KIND);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ RoomPackage theRoomPackage = (RoomPackage)EPackage.Registry.INSTANCE.getEPackage(RoomPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ structureInstanceEClass.getESuperTypes().add(this.getInstanceBase());
+ subSystemInstanceEClass.getESuperTypes().add(this.getStructureInstance());
+ actorInstanceEClass.getESuperTypes().add(this.getStructureInstance());
+ interfaceItemInstanceEClass.getESuperTypes().add(this.getInstanceBase());
+ portInstanceEClass.getESuperTypes().add(this.getInterfaceItemInstance());
+ sapInstanceEClass.getESuperTypes().add(this.getInterfaceItemInstance());
+ sppInstanceEClass.getESuperTypes().add(this.getInstanceBase());
+ serviceImplInstanceEClass.getESuperTypes().add(this.getInterfaceItemInstance());
+ expandedActorClassEClass.getESuperTypes().add(theRoomPackage.getActorClass());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(rootEClass, Root.class, "Root", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRoot_SubSystems(), this.getSubSystemInstance(), null, "subSystems", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoot_Models(), theRoomPackage.getRoomModel(), null, "models", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoot_XpActorClasses(), this.getExpandedActorClass(), null, "xpActorClasses", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRoot_UsedDataClasses(), theRoomPackage.getDataClass(), null, "usedDataClasses", null, 0, -1, Root.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getRoot_UsedProtocolClasses(), theRoomPackage.getProtocolClass(), null, "usedProtocolClasses", null, 0, -1, Root.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getRoot_UsedActorClasses(), theRoomPackage.getActorClass(), null, "usedActorClasses", null, 0, -1, Root.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getRoot_UsedRoomModels(), theRoomPackage.getRoomModel(), null, "usedRoomModels", null, 0, -1, Root.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+ EOperation op = addEOperation(rootEClass, theRoomPackage.getRoomModel(), "getReferencedModels", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getRoomClass(), "cls", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(rootEClass, theRoomPackage.getProtocolClass(), "getReferencedProtocols", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getActorClass(), "cls", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(counterEClass, Counter.class, "Counter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCounter_Counter(), ecorePackage.getEInt(), "counter", "0", 0, 1, Counter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ addEOperation(counterEClass, ecorePackage.getEInt(), "getAndIncrementCount", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(counterEClass, ecorePackage.getEInt(), "getAndIncrementCount", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEInt(), "n", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(instanceBaseEClass, InstanceBase.class, "InstanceBase", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getInstanceBase_Name(), ecorePackage.getEString(), "name", null, 0, 1, InstanceBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getInstanceBase_Path(), ecorePackage.getEString(), "path", null, 0, 1, InstanceBase.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getInstanceBase_ObjId(), ecorePackage.getEInt(), "objId", null, 0, 1, InstanceBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(structureInstanceEClass, StructureInstance.class, "StructureInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getStructureInstance_Instances(), this.getActorInstance(), null, "instances", null, 0, -1, StructureInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_Ports(), this.getPortInstance(), null, "ports", null, 0, -1, StructureInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_Saps(), this.getSAPInstance(), null, "saps", null, 0, -1, StructureInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_Spps(), this.getSPPInstance(), null, "spps", null, 0, -1, StructureInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_Services(), this.getServiceImplInstance(), null, "services", null, 0, -1, StructureInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_Bindings(), this.getBindingInstance(), null, "bindings", null, 0, -1, StructureInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_Connections(), this.getConnectionInstance(), null, "connections", null, 0, -1, StructureInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_AllContainedInstances(), this.getActorInstance(), null, "allContainedInstances", null, 0, -1, StructureInstance.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getStructureInstance_OrderedIfItemInstances(), this.getInterfaceItemInstance(), null, "orderedIfItemInstances", null, 0, -1, StructureInstance.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+ initEClass(subSystemInstanceEClass, SubSystemInstance.class, "SubSystemInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSubSystemInstance_SubSystemClass(), theRoomPackage.getSubSystemClass(), null, "subSystemClass", null, 0, 1, SubSystemInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSubSystemInstance_ObjCounter(), this.getCounter(), null, "objCounter", null, 0, 1, SubSystemInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(actorInstanceEClass, ActorInstance.class, "ActorInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getActorInstance_ActorClass(), theRoomPackage.getActorClass(), null, "actorClass", null, 0, 1, ActorInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(interfaceItemInstanceEClass, InterfaceItemInstance.class, "InterfaceItemInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getInterfaceItemInstance_Peers(), this.getInterfaceItemInstance(), null, "peers", null, 0, -1, InterfaceItemInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(portInstanceEClass, PortInstance.class, "PortInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPortInstance_Port(), theRoomPackage.getPort(), null, "port", null, 0, 1, PortInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPortInstance_Kind(), this.getPortKind(), "kind", null, 0, 1, PortInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPortInstance_Bindings(), this.getBindingInstance(), this.getBindingInstance_Ports(), "bindings", null, 0, -1, PortInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(bindingInstanceEClass, BindingInstance.class, "BindingInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getBindingInstance_Ports(), this.getPortInstance(), this.getPortInstance_Bindings(), "ports", null, 0, 2, BindingInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(sapInstanceEClass, SAPInstance.class, "SAPInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSAPInstance_Sap(), theRoomPackage.getSAPRef(), null, "sap", null, 0, 1, SAPInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(sppInstanceEClass, SPPInstance.class, "SPPInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSPPInstance_Spp(), theRoomPackage.getSPPRef(), null, "spp", null, 0, 1, SPPInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSPPInstance_Incoming(), this.getConnectionInstance(), this.getConnectionInstance_ToSPP(), "incoming", null, 0, -1, SPPInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSPPInstance_Outgoing(), this.getConnectionInstance(), this.getConnectionInstance_FromSPP(), "outgoing", null, 0, 1, SPPInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(serviceImplInstanceEClass, ServiceImplInstance.class, "ServiceImplInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getServiceImplInstance_SvcImpl(), theRoomPackage.getServiceImplementation(), null, "svcImpl", null, 0, 1, ServiceImplInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(connectionInstanceEClass, ConnectionInstance.class, "ConnectionInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConnectionInstance_FromAI(), this.getActorInstance(), null, "fromAI", null, 0, 1, ConnectionInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getConnectionInstance_FromSPP(), this.getSPPInstance(), this.getSPPInstance_Outgoing(), "fromSPP", null, 0, 1, ConnectionInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getConnectionInstance_ToSPP(), this.getSPPInstance(), this.getSPPInstance_Incoming(), "toSPP", null, 0, 1, ConnectionInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getConnectionInstance_Connection(), theRoomPackage.getLayerConnection(), null, "connection", null, 0, 1, ConnectionInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(activeTriggerEClass, ActiveTrigger.class, "ActiveTrigger", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getActiveTrigger_Msg(), theRoomPackage.getMessage(), null, "msg", null, 0, 1, ActiveTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActiveTrigger_Ifitem(), theRoomPackage.getInterfaceItem(), null, "ifitem", null, 0, 1, ActiveTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getActiveTrigger_Trigger(), ecorePackage.getEString(), "trigger", null, 0, 1, ActiveTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getActiveTrigger_Transitions(), theRoomPackage.getTriggeredTransition(), null, "transitions", null, 0, -1, ActiveTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(transitionChainEClass, TransitionChain.class, "TransitionChain", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTransitionChain_Transition(), theRoomPackage.getTransition(), null, "transition", null, 0, 1, TransitionChain.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ addEOperation(transitionChainEClass, theRoomPackage.getState(), "getStateContext", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(transitionChainEClass, ecorePackage.getEBoolean(), "isHandler", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(transitionChainEClass, ecorePackage.getEString(), "genExecuteChain", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, this.getITransitionChainVisitor(), "tcv", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(iTransitionChainVisitorEClass, Object.class, "ITransitionChainVisitor", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(iDiagnosticianEClass, Object.class, "IDiagnostician", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(expandedActorClassEClass, ExpandedActorClass.class, "ExpandedActorClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExpandedActorClass_ActorClass(), theRoomPackage.getActorClass(), null, "actorClass", null, 0, 1, ExpandedActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, null, "prepare", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, this.getIDiagnostician(), "validator", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expandedActorClassEClass, null, "release", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, null, "addOwnObject", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getStateGraphItem(), "obj", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEBoolean(), "isOwnObject", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getStateGraphItem(), "obj", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEInt(), "getInterfaceItemLocalId", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getInterfaceItem(), "ifitem", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expandedActorClassEClass, ecorePackage.getEBoolean(), "hasStateMachine", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEString(), "getCode", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getDetailCode(), "code", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEString(), "getTriggerCodeName", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getMessageFromIf(), "mif", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEString(), "getTriggerCodeName", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEString(), "mif", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, theRoomPackage.getTransition(), "getOutgoingTransitions", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getStateGraphNode(), "node", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, theRoomPackage.getTransition(), "getIncomingTransitions", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getStateGraphNode(), "node", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, this.getActiveTrigger(), "getActiveTriggers", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getState(), "state", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expandedActorClassEClass, theRoomPackage.getMessageFromIf(), "getTriggers", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expandedActorClassEClass, theRoomPackage.getMessageFromIf(), "getOwnTriggers", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEString(), "getMessageID", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getMessageFromIf(), "mif", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, this.getTransitionChain(), "getChain", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getTransition(), "trans", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expandedActorClassEClass, this.getTransitionChain(), "getTransitionChains", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+ addEOperation(expandedActorClassEClass, this.getTransitionChain(), "getOwnTransitionChains", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, theRoomPackage.getStateGraphNode(), "getNode", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getTransitionTerminal(), "tt", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEBoolean(), "isMatching", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getTrigger(), "trig", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEString(), "trigstr", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = addEOperation(expandedActorClassEClass, theRoomPackage.getContinuationTransition(), "getDefaultBranch", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theRoomPackage.getTransition(), "out", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(portKindEEnum, PortKind.class, "PortKind");
+ addEEnumLiteral(portKindEEnum, PortKind.EXTERNAL);
+ addEEnumLiteral(portKindEEnum, PortKind.INTERNAL);
+ addEEnumLiteral(portKindEEnum, PortKind.RELAY);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //ETriceGenPackageImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ExpandedActorClassImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ExpandedActorClassImpl.java
new file mode 100644
index 000000000..d2bf63fed
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ExpandedActorClassImpl.java
@@ -0,0 +1,1191 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraphItem;
+import org.eclipse.etrice.core.room.StateGraphNode;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TransitionTerminal;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.impl.ActorClassImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+import org.eclipse.etrice.core.naming.RoomNameProvider;
+
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.ChoicepointTerminal;
+import org.eclipse.etrice.core.room.EntryPoint;
+import org.eclipse.etrice.core.room.ExitPoint;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.NonInitialTransition;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateTerminal;
+import org.eclipse.etrice.core.room.SubStateTrPointTerminal;
+import org.eclipse.etrice.core.room.TrPoint;
+import org.eclipse.etrice.core.room.TrPointTerminal;
+import org.eclipse.etrice.core.room.TransitionPoint;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
+import org.eclipse.etrice.generator.etricegen.ETriceGenFactory;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.IDiagnostician;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expanded Actor Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ExpandedActorClassImpl#getActorClass <em>Actor Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExpandedActorClassImpl extends ActorClassImpl implements ExpandedActorClass {
+
+ private class NodeData {
+ private LinkedList<Transition> inTrans = new LinkedList<Transition>();
+ private LinkedList<Transition> outTrans = new LinkedList<Transition>();
+ private LinkedList<Transition> loopTrans = null;
+
+ LinkedList<Transition> getInTrans() {
+ return inTrans;
+ }
+
+ LinkedList<Transition> getOutTrans() {
+ return outTrans;
+ }
+
+ LinkedList<Transition> getLoopTransitions() {
+ if (loopTrans==null) {
+ loopTrans = new LinkedList<Transition>();
+ for (Transition t : getOutTrans()) {
+ // outgoing transitions always are NonInitialTransitions
+ NonInitialTransition tr = (NonInitialTransition) t;
+
+ if (tr.getFrom() instanceof StateTerminal) {
+ if (tr.getTo() instanceof StateTerminal) {
+ if (((StateTerminal)tr.getFrom()).getState() == ((StateTerminal)tr.getTo()).getState())
+ loopTrans.add(tr);
+ }
+ }
+ else if (tr.getFrom() instanceof TrPointTerminal) {
+ if (tr.getTo() instanceof TrPointTerminal) {
+ if (((TrPointTerminal)tr.getFrom()).getTrPoint() == ((TrPointTerminal)tr.getTo()).getTrPoint())
+ loopTrans.add(tr);
+ }
+ }
+ }
+ }
+ return loopTrans;
+ }
+ }
+
+ /**
+ * The cached value of the '{@link #getActorClass() <em>Actor Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActorClass()
+ * @generated
+ * @ordered
+ */
+ protected ActorClass actorClass;
+
+ private static final String TRIGGER_SEP = "#";
+
+ private IDiagnostician validator;
+
+ private boolean prepared = false;
+ private HashSet<StateGraphItem> ownObjects = null;
+ private HashMap<InterfaceItem, Integer> ifitem2localId = null;
+ private HashMap<StateGraphNode, NodeData> node2data = null;
+ private HashMap<State, LinkedList<ActiveTrigger>> state2triggers = null;
+ private HashMap<String, MessageFromIf> triggerstring2mif = null;
+ private LinkedList<TransitionChain> trchains = null;
+ private HashMap<Transition, TransitionChain> trans2chain = null;
+ private HashMap<EObject, EObject> copy2orig = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExpandedActorClassImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.EXPANDED_ACTOR_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass getActorClass() {
+ if (actorClass != null && actorClass.eIsProxy()) {
+ InternalEObject oldActorClass = (InternalEObject)actorClass;
+ actorClass = (ActorClass)eResolveProxy(oldActorClass);
+ if (actorClass != oldActorClass) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS, oldActorClass, actorClass));
+ }
+ }
+ return actorClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActorClass basicGetActorClass() {
+ return actorClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setActorClass(ActorClass newActorClass) {
+ ActorClass oldActorClass = actorClass;
+ actorClass = newActorClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS, oldActorClass, actorClass));
+ }
+
+ private void validationError(String msg, EObject obj) {
+ validationError(msg, obj, -1);
+ }
+
+ private void validationError(String msg, EObject obj, int feature) {
+ validator.error(msg, copy2orig.get(obj), feature);
+ }
+
+ private void buildStateGraph() {
+ // create a list of super classes, super first, sub-classes last
+ LinkedList<StateGraph> sms = new LinkedList<StateGraph>();
+ ActorClass orig = getActorClass();
+ if (orig.getStateMachine()!=null)
+ sms.addFirst(orig.getStateMachine());
+ while (orig.getBase()!=null) {
+ orig = orig.getBase();
+ if (orig.getStateMachine()!=null)
+ sms.addFirst(orig.getStateMachine());
+ }
+
+ // create a self contained copy of all actor classes
+ // references to interface items (ports, saps and spps) point to contents of the original actor class
+ //Collection<StateGraph> all = EcoreUtil.copyAll(sms);
+ // we use the copier directly since we need access to the map
+ Copier copier = new Copier();
+ Collection<StateGraph> all = copier.copyAll(sms);
+ copier.copyReferences();
+ for (EObject o : copier.keySet()) {
+ EObject c = copier.get(o);
+ copy2orig.put(c, o);
+ }
+
+ // remove self from this list
+ StateGraph self = null;
+ for (Iterator<StateGraph> it = all.iterator(); it.hasNext();) {
+ self = it.next();
+ }
+ all.remove(self);
+
+ // now we move all base class state machine contents to our state machine
+ StateGraph sm = RoomFactory.eINSTANCE.createStateGraph();
+ setStateMachine(sm);
+ for (StateGraph sml : all) {
+ sm.getChPoints().addAll(sml.getChPoints());
+ sm.getStates().addAll(sml.getStates());
+ sm.getTrPoints().addAll(sml.getTrPoints());
+ sm.getTransitions().addAll(sml.getTransitions());
+ }
+
+ // then we relocate the refined state contents to their respective base state and remove all refined states
+ relocateRefinedStateContents(sm, true);
+
+ if (getActorClass().getStateMachine()!=null) {
+ TreeIterator<EObject> it = self.eAllContents();
+ while (it.hasNext()) {
+ EObject obj = it.next();
+ if (obj instanceof StateGraphItem)
+ addOwnObject((StateGraphItem)obj);
+ }
+
+ sm.getChPoints().addAll(self.getChPoints());
+ sm.getStates().addAll(self.getStates());
+ sm.getTrPoints().addAll(self.getTrPoints());
+ sm.getTransitions().addAll(self.getTransitions());
+
+ // then we relocate the refined state contents to their respective base state while keeping all refined states
+ relocateRefinedStateContents(sm, false);
+ }
+ }
+
+ /**
+ * remove refined states and relocate their respective contents to the
+ * corresponding base state
+ * @param sg - the current context (will be called recursively)
+ * @param remove - if true the refined states are removed, if false they are moved
+ * to be siblings of their base states
+ */
+ private void relocateRefinedStateContents(StateGraph sg, boolean remove) {
+ LinkedList<RefinedState> refinedstates = new LinkedList<RefinedState>();
+ for (State s : sg.getStates()) {
+ if (s instanceof RefinedState) {
+ RefinedState rs = (RefinedState) s;
+ refinedstates.add(rs);
+ BaseState bs = rs.getBase();
+ if (!remove) {
+ StateGraph parent = (StateGraph) bs.eContainer();
+ parent.getStates().add(rs);
+ }
+
+ // relocate contents
+ StateGraph fromSG = rs.getSubgraph();
+ if (fromSG!=null) {
+ StateGraph toSG = bs.getSubgraph();
+ if (toSG==null) {
+ toSG = RoomFactory.eINSTANCE.createStateGraph();
+ bs.setSubgraph(toSG);
+ }
+ toSG.getChPoints().addAll(fromSG.getChPoints());
+ toSG.getStates().addAll(fromSG.getStates());
+ toSG.getTrPoints().addAll(fromSG.getTrPoints());
+ toSG.getTransitions().addAll(fromSG.getTransitions());
+ }
+ }
+ }
+
+ if (remove) {
+ // remove empty refined states
+ sg.getStates().removeAll(refinedstates);
+ }
+
+ // recurse down into states
+ for (State s : sg.getStates()) {
+ if (s.getSubgraph()!=null)
+ relocateRefinedStateContents(s.getSubgraph(), remove);
+ }
+ }
+
+ private void addOutgoingTransition(StateGraphNode node, Transition t) {
+ NodeData data = node2data.get(node);
+ if (data==null) {
+ data = new NodeData();
+ node2data.put(node, data);
+ }
+ data.getOutTrans().add(t);
+ }
+
+ private void addIncomingTransition(StateGraphNode node, Transition t) {
+ NodeData data = node2data.get(node);
+ if (data==null) {
+ data = new NodeData();
+ node2data.put(node, data);
+ }
+ data.getInTrans().add(t);
+ }
+
+ private void findOutgoingTransitions(StateGraph sg) {
+ // depth first: recurse into sub graphs of states
+ for (State s : sg.getStates()) {
+ if (s.getSubgraph()!=null)
+ findOutgoingTransitions(s.getSubgraph());
+ }
+
+ for (Transition t : sg.getTransitions()) {
+ addIncomingTransition(getAdjustedTargetNode(t), t);
+ if (t instanceof NonInitialTransition) {
+ addOutgoingTransition(getNode(((NonInitialTransition)t).getFrom()), t);
+ }
+ }
+ }
+
+ private void doChecks(StateGraph sg) {
+
+ // check if empty
+ if (sg.getTransitions().isEmpty() && sg.getStates().isEmpty()
+ && sg.getChPoints().isEmpty() && sg.getTrPoints().isEmpty())
+ return;
+
+ int initCount = 0;
+ for (Transition t : sg.getTransitions()) {
+ if (t instanceof InitialTransition)
+ ++initCount;
+ }
+ if (initCount==0) {
+ if (sg.eContainer() instanceof State) {
+ if (!isAbstract()) {
+ // having no initial transition in a nested state is valid only if there is no transition to history
+ // except of self transitions
+ // i.e. no incoming transition of the state itself
+ NodeData data = node2data.get((State)sg.eContainer());
+ if (data!=null && data.getLoopTransitions().size()!=data.getInTrans().size())
+ validationError(getName()+": Having no initial transition in a nested state is valid only if there is no transition to history except of self transitions!", sg.eContainer(), RoomPackage.STATE__SUBGRAPH);
+ }
+ }
+ else {
+ validationError(getName()+": The TOP level has to have an initial transition!", sg, RoomPackage.STATE_GRAPH__TRANSITIONS);
+ }
+ }
+ else {
+ if (initCount>1)
+ validationError(getName()+": There has to be exactly one initial transition!", sg, RoomPackage.STATE_GRAPH__TRANSITIONS);
+ }
+
+ for (ChoicePoint cp : sg.getChPoints()) {
+ NodeData data = node2data.get(cp);
+ if (data==null) {
+ validationError(getName()+": ChoicePoint is not connected!", cp, -1);
+ }
+ else {
+ if (data.getInTrans().size()!=1)
+ validationError(getName()+": ChoicePoint has "+data.getInTrans().size()+" incoming transitions!", cp, -1);
+ if (data.getOutTrans().size()<2)
+ validationError(getName()+": ChoicePoint should have 2 or more branches but has "+data.getOutTrans().size(), cp, -1);
+ if (getDefaultBranch(data.getOutTrans())==null)
+ validationError(getName()+": ChoicePoint has no default branch!", cp, -1);
+ if (!data.getLoopTransitions().isEmpty())
+ validationError(getName()+": ChoicePoint is connected to itself!", cp, -1);
+ }
+ }
+
+ for (TrPoint tp : sg.getTrPoints()) {
+ NodeData data = node2data.get(tp);
+
+ if (data==null) {
+ if (!getActorClass(tp).isAbstract())
+ validationError(getName()+": TrPoint is not connected", tp, -1);
+ }
+ else {
+ if ((tp instanceof EntryPoint)||(tp instanceof ExitPoint)) {
+ // non-abstract classes must have incoming transitions for entry and exit points
+ if (!isAbstract() && data.getInTrans().isEmpty())
+ validationError(getName()+": TrPoint has no incoming transition!", tp, -1);
+
+ if (getActorClass(tp).isAbstract()) {
+ // transition points inherited from abstract base classes
+ // (of from abstract classes themselves) must not have more than one outgoing transition
+ if (data.getOutTrans().size()>1)
+ validationError(getName()+": TrPoint must have at most one outgoing transition!", tp, -1);
+ }
+ else {
+ // non-abstract or non-inherited transition points must have one outgoing transition
+ if (data.getOutTrans().size()!=1)
+ validationError(getName()+": TrPoint must have exactly one outgoing transition!", tp, -1);
+ }
+
+ if (!data.getLoopTransitions().isEmpty())
+ validationError(getName()+": TrPoint must have no self transitions!", tp, -1);
+ }
+ else if (tp instanceof TransitionPoint) {
+ if (data.getOutTrans().size()<data.getLoopTransitions().size())
+ validationError(getName()+": TrPoint must have no incoming transitions!", tp, -1);
+ }
+ }
+ }
+
+ // recurse into sub graphs of states
+ for (State s : sg.getStates()) {
+ if (s.getSubgraph()!=null)
+ doChecks(s.getSubgraph());
+ }
+ }
+
+ private void findTriggersOfState(State s) {
+ LinkedList<ActiveTrigger> triggers = new LinkedList<ActiveTrigger>();
+ HashMap<String, ActiveTrigger> caughtTriggers = new HashMap<String, ActiveTrigger>();
+ collectTriggersAndTransitions(s, caughtTriggers, triggers);
+ state2triggers.put(s, triggers);
+ }
+
+ private String getTriggerString(MessageFromIf mifp) {
+ return mifp.getFrom().getName()+TRIGGER_SEP+mifp.getMessage().getName();
+ }
+
+ private void collectOutgoingTransitions(EList<Transition> sameLevelTransitions,
+ HashMap<String, ActiveTrigger> caughtTriggers,
+ LinkedList<ActiveTrigger> triggers) {
+ for (Transition t : sameLevelTransitions) {
+ if (t instanceof TriggeredTransition) {
+ TriggeredTransition tt = (TriggeredTransition) t;
+
+ for (Trigger trig : ((TriggeredTransition)t).getTriggers()) {
+ for (MessageFromIf mifp : trig.getMsgFromIfPairs()) {
+ String tr = getTriggerString(mifp);
+ ActiveTrigger at = caughtTriggers.get(tr);
+ if (at==null) {
+ // this is a new trigger (and our unique point of ActiveTrigger creation)
+ at = ETriceGenFactory.eINSTANCE.createActiveTrigger();
+ at.setMsg(mifp.getMessage());
+ at.setIfitem(mifp.getFrom());
+ at.setTrigger(tr);
+ at.getTransitions().add(tt);
+ caughtTriggers.put(tr, at);
+ triggers.add(at);
+ }
+ else {
+ // check consistency of guards
+ TriggeredTransition lastChecked = null;
+ boolean isNotGuarded = true;
+ for (TriggeredTransition t2 : at.getTransitions()) {
+ for (Trigger trig2 : t2.getTriggers()) {
+ if (isMatching(trig2, tr)) {
+ if (trig2.getGuard()!=null)
+ if (trig2.getGuard().getGuard()!=null)
+ if (!trig2.getGuard().getGuard().getCommands().isEmpty())
+ isNotGuarded = false;
+ lastChecked = t2;
+ }
+ }
+ }
+ if (lastChecked!=null) {
+ if (!isNotGuarded) {
+ boolean guardRequired = false;
+ if (lastChecked.getFrom() instanceof TrPoint)
+ if (lastChecked.eContainer()==tt.eContainer())
+ // lastChecked and tt originate in TrPoints of the same super state
+ guardRequired = true;
+ if (tt.getFrom()==lastChecked.getFrom())
+ // lastChecked and tt originate in the same State or TrPoint
+ guardRequired = true;
+ if (guardRequired) {
+ if (trig.getGuard()==null)
+ validationError("Transitions with same trigger on same level have to be guarded!", t, RoomPackage.TRIGGERED_TRANSITION__TRIGGERS);
+ if (trig.getGuard().getGuard()==null)
+ validationError("Transitions with same trigger on same level have to be guarded!", t, RoomPackage.TRIGGERED_TRANSITION__TRIGGERS);
+ if (!trig.getGuard().getGuard().getCommands().isEmpty())
+ validationError("Transitions with same trigger on same level have to be guarded!", t, RoomPackage.TRIGGERED_TRANSITION__TRIGGERS);
+ }
+ at.getTransitions().add(tt);
+ }
+ // else this transition is inactive
+ }
+ else {
+ at.getTransitions().add(tt);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private void collectTriggersAndTransitions(State s,
+ HashMap<String, ActiveTrigger> caughtTriggers,
+ LinkedList<ActiveTrigger> triggers) {
+ // consider outgoing transitions of this state
+ collectOutgoingTransitions(getOutgoingTransitions(s), caughtTriggers, triggers);
+
+ // consider TransitionPoint transitions
+ if (s.eContainer() instanceof StateGraph) {
+ StateGraph sg = (StateGraph) s.eContainer();
+ BasicEList<Transition> trpTransitions = new BasicEList<Transition>();
+ for (TrPoint tp : sg.getTrPoints()) {
+ trpTransitions.addAll(getOutgoingTransitions(tp));
+ }
+ collectOutgoingTransitions(trpTransitions, caughtTriggers, triggers);
+
+ // go to surrounding context
+ if (sg.eContainer() instanceof State) {
+ collectTriggersAndTransitions((State) sg.eContainer(), caughtTriggers, triggers);
+ }
+ }
+ else {
+ // this should never happen
+ assert(false): "A State must always reside in a StateGraph!";
+ }
+ }
+
+ private void findLeafStateTriggers(StateGraph sg) {
+ for (State s : sg.getStates()) {
+ if (s.getSubgraph()!=null)
+ findLeafStateTriggers(s.getSubgraph());
+ else
+ findTriggersOfState(s);
+ }
+ }
+
+ private void fillTriggerStringMap() {
+ // improve performance using maps name2ifitem and name2msgs
+ HashMap<String, InterfaceItem> name2ifitem = new HashMap<String, InterfaceItem>();
+ HashMap<String, EList<Message>> name2msgs = new HashMap<String, EList<Message>>();
+ ActorClass ac = getActorClass();
+ while (ac!=null) {
+ for (Port ip : ac.getIntPorts()) {
+ mapPort(ip, name2ifitem, name2msgs);
+ }
+ for (ExternalPort ep : ac.getExtPorts()) {
+ mapPort(ep.getIfport(), name2ifitem, name2msgs);
+ }
+ for (SAPRef sap : ac.getStrSAPs()) {
+ mapSAP(sap, name2ifitem, name2msgs);
+ }
+ for (ServiceImplementation spp : ac.getServiceImplementations()) {
+ mapSPP(spp.getSpp(), name2ifitem, name2msgs);
+ }
+
+ ac = ac.getBase();
+ }
+
+ // compute a set of all trigger strings
+ HashSet<String> triggers = new HashSet<String>();
+ for (LinkedList<ActiveTrigger> ttlist : state2triggers.values()) {
+ for (ActiveTrigger tt : ttlist) {
+ triggers.add(tt.getTrigger());
+ }
+ }
+
+ // now fill triggerstring2mif
+ for (String trig : triggers) {
+ String[] parts = trig.split(TRIGGER_SEP);
+
+ // this should always hold true
+ assert(parts.length==2): "By our convention triggers are composed of two parts separated by "
+ +TRIGGER_SEP+". Here we have '"+trig+"' which doesn't consist of two parts!";
+
+ InterfaceItem ii = name2ifitem.get(parts[0]);
+
+ // this should always hold true
+ assert(ii!=null): "The name '"+parts[0]+"' did not match an interface item (in name2ifitem)!";
+
+ EList<Message> msgs = name2msgs.get(parts[0]);
+
+ // this should always hold true
+ assert(msgs!=null): "The name '"+parts[0]+"' did not match an interface item (in name2msgs)!";
+
+ Message msg = null;
+ for (Message m : msgs) {
+ if (m.getName().equals(parts[1]))
+ msg = m;
+ }
+
+ // this should always hold true
+ assert(msg!=null): "The message '"+parts[1]+"' did not match a message!";
+
+ MessageFromIf mif = RoomFactory.eINSTANCE.createMessageFromIf();
+ mif.setFrom(ii);
+ mif.setMessage(msg);
+ triggerstring2mif.put(trig, mif);
+ }
+ }
+
+ private void mapPort(Port p, HashMap<String, InterfaceItem> name2ifitem,
+ HashMap<String, EList<Message>> name2msgs) {
+ name2ifitem.put(p.getName(), p);
+
+ if (p.isConjugated())
+ name2msgs.put(p.getName(), p.getProtocol().getOutgoingMessages());
+ else
+ name2msgs.put(p.getName(), p.getProtocol().getIncomingMessages());
+ }
+
+ private void mapSAP(SAPRef sap, HashMap<String, InterfaceItem> name2ifitem,
+ HashMap<String, EList<Message>> name2msgs) {
+ name2ifitem.put(sap.getName(), sap);
+
+ // sap is conjugated wrt to the protocol
+ name2msgs.put(sap.getName(), sap.getProtocol().getOutgoingMessages());
+ }
+
+ private void mapSPP(SPPRef spp, HashMap<String, InterfaceItem> name2ifitem,
+ HashMap<String, EList<Message>> name2msgs) {
+ name2ifitem.put(spp.getName(), spp);
+
+ // spp is regular wrt to the protocol
+ name2msgs.put(spp.getName(), spp.getProtocol().getIncomingMessages());
+ }
+
+ private void addTransitionChain(Transition t) {
+ TransitionChain tc = ETriceGenFactory.eINSTANCE.createTransitionChain();
+ tc.setTransition(t);
+
+ if (t instanceof TriggeredTransition) {
+ List<TypedID> args = null;
+ boolean first = true;
+ for (Trigger tr : ((TriggeredTransition)t).getTriggers()) {
+ for (MessageFromIf mif : tr.getMsgFromIfPairs()) {
+ if (first) {
+ first = false;
+ args = mif.getMessage().getArguments();
+ }
+ else {
+ if (args.size()>0) {
+ if (mif.getMessage().getArguments().size()!=args.size()) {
+ validationError("If one MessageFromIf has data all have to have data for a given transition!", mif.getMessage());
+ }
+ else {
+ for (TypedID arg : args) {
+ TypedID a = mif.getMessage().getArguments().get(0);
+ if (arg.getType().getPrim()!=a.getType().getPrim())
+ validationError("The data types of all MessageFromIf have to be the same!", mif.getMessage());
+ if (arg.getType().getType()!=a.getType().getType())
+ validationError("The data types of all MessageFromIf have to be the same!", mif.getMessage());
+ }
+ }
+ }
+ else {
+ if (mif.getMessage().getArguments().size()!=0)
+ validationError("If one MessageFromIf has no data all have to have no data for a given transition!", mif.getMessage());
+ }
+ }
+ }
+ }
+
+ if (first)
+ validationError("Triggered transition has to have a message from interface!", t);
+ }
+
+ collectChainTransitions(tc, t);
+
+ trchains.add(tc);
+ }
+
+ private void collectChainTransitions(TransitionChain tc,
+ Transition t) {
+ trans2chain.put(t, tc);
+
+ // should always hold true
+// assert(t instanceof NonInitialTransition): "A transition chain must not contain initial transitions!";
+
+ StateGraphNode node = getNode(t.getTo());
+
+ // the chain ends if a state is reached
+ if (node instanceof State)
+ return;
+
+ // the chain ends if source and destination coincide
+ if (t instanceof NonInitialTransition && node==getNode(((NonInitialTransition)t).getFrom()))
+ return;
+
+ for (Transition next : getOutgoingTransitions(node)) {
+ // from the second transition in the chain on we have:
+ if (next instanceof TriggeredTransition)
+ validationError("Segments following the triggering transition can have no triggers!\n", next, -1);
+
+ collectChainTransitions(tc, next);
+ }
+ }
+
+ private void findTransitionChains(StateGraph sg) {
+ for (Transition t : sg.getTransitions()) {
+ if (t instanceof TriggeredTransition) {
+ addTransitionChain(t);
+ }
+ else if (t instanceof InitialTransition) {
+ addTransitionChain(t);
+ }
+ }
+
+ // recurse into sub graphs of states
+ for (State s : sg.getStates()) {
+ if (s.getSubgraph()!=null)
+ findTransitionChains(s.getSubgraph());
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void prepare(IDiagnostician validator) {
+ if (prepared)
+ return;
+
+ prepared = true;
+
+ this.validator = validator;
+
+ ifitem2localId = new HashMap<InterfaceItem, Integer>();
+ ownObjects = new HashSet<StateGraphItem>();
+ node2data = new HashMap<StateGraphNode, NodeData>();
+ state2triggers = new HashMap<State, LinkedList<ActiveTrigger>>();
+ triggerstring2mif = new HashMap<String, MessageFromIf>();
+ trchains = new LinkedList<TransitionChain>();
+ trans2chain = new HashMap<Transition, TransitionChain>();
+ copy2orig = new HashMap<EObject, EObject>();
+
+ buildStateGraph();
+ computeInterfaceItemLocalIds(getActorClass(), 0);
+ findOutgoingTransitions(getStateMachine());
+
+ doChecks(getStateMachine());
+ assert(!validator.isFailed()): "Checks failed!";
+
+ findLeafStateTriggers(getStateMachine());
+ fillTriggerStringMap();
+ findTransitionChains(getStateMachine());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void release() {
+ if (!prepared)
+ return;
+
+ prepared = false;
+
+ // release resources
+ ifitem2localId = null;
+ ownObjects = null;
+ node2data = null;
+ state2triggers = null;
+ triggerstring2mif = null;
+ trchains = null;
+ trans2chain = null;
+ copy2orig = null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addOwnObject(StateGraphItem obj) {
+ ownObjects.add(obj);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isOwnObject(StateGraphItem obj) {
+ return ownObjects.contains(obj);
+ }
+
+ private int computeInterfaceItemLocalIds(ActorClass ac, int offset) {
+ if (ac.getBase()!=null)
+ // first recurse into base class
+ offset = computeInterfaceItemLocalIds(ac.getBase(), offset);
+
+ for (ExternalPort ep : ac.getExtPorts()) {
+ ifitem2localId.put(ep.getIfport(), offset);
+ ++offset;
+ }
+ for (Port ip : ac.getIntPorts()) {
+ ifitem2localId.put(ip, offset);
+ ++offset;
+ }
+
+ for (SAPRef sap : ac.getStrSAPs()) {
+ ifitem2localId.put(sap, offset);
+ ++offset;
+ }
+
+ for (ServiceImplementation svc : ac.getServiceImplementations()) {
+ ifitem2localId.put(svc.getSpp(), offset);
+ ++offset;
+ }
+ return offset;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public int getInterfaceItemLocalId(InterfaceItem ifitem) {
+ Integer localId = ifitem2localId.get(ifitem);
+ if (localId!=null)
+ return localId.intValue();
+ else
+ return -1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean hasStateMachine() {
+ ActorClass ac = getActorClass();
+ while (ac!=null) {
+ if (ac.getStateMachine()!=null)
+ return true;
+ ac = ac.getBase();
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getCode(DetailCode code) {
+ if (code.getCommands().isEmpty())
+ return "";
+
+ String result = "";
+ for (String cmd : code.getCommands()) {
+ result += cmd + "\n";
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getTriggerCodeName(MessageFromIf mif) {
+ return "TRIG_"+mif.getFrom().getName()+"__"+mif.getMessage().getName();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getTriggerCodeName(String trigger) {
+ String[] parts = trigger.split(TRIGGER_SEP);
+ return "TRIG_"+parts[0]+"__"+parts[1];
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<Transition> getOutgoingTransitions(StateGraphNode node) {
+ NodeData data = node2data.get(node);
+ if (data==null)
+ return new BasicEList<Transition>();
+ else
+ return new BasicEList<Transition>(data.getOutTrans());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<Transition> getIncomingTransitions(StateGraphNode node) {
+ NodeData data = node2data.get(node);
+ if (data==null)
+ return new BasicEList<Transition>();
+ else
+ return new BasicEList<Transition>(data.getInTrans());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<ActiveTrigger> getActiveTriggers(State state) {
+ LinkedList<ActiveTrigger> triggers = state2triggers.get(state);
+ if (triggers==null)
+ return new BasicEList<ActiveTrigger>();
+ else
+ return new BasicEList<ActiveTrigger>(triggers);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<MessageFromIf> getTriggers() {
+ return new BasicEList<MessageFromIf>(triggerstring2mif.values());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<MessageFromIf> getOwnTriggers() {
+ BasicEList<MessageFromIf> result = new BasicEList<MessageFromIf>();
+
+ HashSet<InterfaceItem> ownIfItems = new HashSet<InterfaceItem>();
+ ownIfItems.addAll(getActorClass().getIntPorts());
+ for (ExternalPort ep : getActorClass().getExtPorts()) {
+ ownIfItems.add(ep.getIfport());
+ }
+ ownIfItems.addAll(getActorClass().getStrSAPs());
+ for (ServiceImplementation svc : getActorClass().getServiceImplementations()) {
+ ownIfItems.add(svc.getSpp());
+ }
+
+ for(MessageFromIf mif : triggerstring2mif.values()) {
+ if (ownIfItems.contains(mif.getFrom()))
+ result.add(mif);
+ }
+
+ Collections.sort(result, new Comparator<MessageFromIf>() {
+
+ @Override
+ public int compare(MessageFromIf o1, MessageFromIf o2) {
+ return getTriggerCodeName(o1).compareTo(getTriggerCodeName(o2));
+ }
+
+
+ });
+
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getMessageID(MessageFromIf mif) {
+ if (mif.getFrom() instanceof Port) {
+ Port p = (Port) mif.getFrom();
+ return p.getProtocol().getName()+(p.isConjugated()?".OUT_":".IN_")+mif.getMessage().getName();
+ }
+ else if (mif.getFrom() instanceof SAPRef) {
+ SAPRef sap = (SAPRef) mif.getFrom();
+ return sap.getProtocol().getName()+".OUT_"+mif.getMessage().getName();
+ }
+ else if (mif.getFrom() instanceof SPPRef) {
+ SPPRef spp = (SPPRef) mif.getFrom();
+ return spp.getProtocol().getName()+".IN_"+mif.getMessage().getName();
+ }
+
+ return "unknown interface item";
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TransitionChain getChain(Transition trans) {
+ return trans2chain.get(trans);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<TransitionChain> getTransitionChains() {
+ return new BasicEList<TransitionChain>(trchains);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<TransitionChain> getOwnTransitionChains() {
+ BasicEList<TransitionChain> result = new BasicEList<TransitionChain>();
+
+ for (TransitionChain tc : trchains) {
+ if (isOwnObject(tc.getTransition()))
+ result.add(tc);
+ }
+
+ Collections.sort(result, new Comparator<TransitionChain>() {
+
+ @Override
+ public int compare(TransitionChain o1, TransitionChain o2) {
+ return RoomNameProvider.getFullPath(o1.getTransition()).compareTo(RoomNameProvider.getFullPath(o2.getTransition()));
+ }
+
+ });
+
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public StateGraphNode getNode(TransitionTerminal tt) {
+ if (tt instanceof StateTerminal)
+ return ((StateTerminal)tt).getState();
+ else if (tt instanceof TrPointTerminal)
+ return ((TrPointTerminal)tt).getTrPoint();
+ else if (tt instanceof SubStateTrPointTerminal)
+ return ((SubStateTrPointTerminal)tt).getTrPoint();
+ else if (tt instanceof ChoicepointTerminal)
+ return ((ChoicepointTerminal)tt).getCp();
+
+ return null;
+ }
+
+ private StateGraphNode getAdjustedTargetNode(Transition t) {
+ StateGraphNode node = getNode(t.getTo());
+ if (node instanceof EntryPoint) {
+ NodeData data = node2data.get(node);
+ if (data==null || data.getOutTrans().isEmpty()) {
+ if (getActorClass(node).isAbstract()) {
+ if (node.eContainer().eContainer() instanceof State) {
+ // in this case
+ State newTarget = (State) node.eContainer().eContainer();
+ BaseState newBaseTarget = (newTarget instanceof BaseState)? (BaseState)newTarget:((RefinedState)newTarget).getBase();
+
+ StateTerminal st = RoomFactory.eINSTANCE.createStateTerminal();
+ st.setState(newBaseTarget);
+ t.setTo(st);
+
+ node = newBaseTarget;
+ }
+ }
+ }
+ }
+ return node;
+ }
+
+ private ActorClass getActorClass(EObject node) {
+ node = copy2orig.get(node);
+ while (node!=null) {
+ if (node instanceof ActorClass)
+ return (ActorClass) node;
+ node = node.eContainer();
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isMatching(Trigger trig, String trigstr) {
+ for (MessageFromIf mifp2 : trig.getMsgFromIfPairs()) {
+ String tr2 = getTriggerString(mifp2);
+ if (tr2.equals(trigstr))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public ContinuationTransition getDefaultBranch(EList<Transition> out) {
+ return getDefaultBranch((List<Transition>)out);
+ }
+ private ContinuationTransition getDefaultBranch(List<Transition> out) {
+ for (Transition t : out) {
+ if (t instanceof ContinuationTransition)
+ return (ContinuationTransition) t;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
+ if (resolve) return getActorClass();
+ return basicGetActorClass();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
+ setActorClass((ActorClass)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
+ setActorClass((ActorClass)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
+ return actorClass != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExpandedActorClassImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InstanceBaseImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InstanceBaseImpl.java
new file mode 100644
index 000000000..0533e2d34
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InstanceBaseImpl.java
@@ -0,0 +1,254 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.InstanceBase;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instance Base</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.InstanceBaseImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.InstanceBaseImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.InstanceBaseImpl#getObjId <em>Obj Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class InstanceBaseImpl extends EObjectImpl implements InstanceBase {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPath() <em>Path</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected static final String PATH_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getObjId() <em>Obj Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObjId()
+ * @generated
+ * @ordered
+ */
+ protected static final int OBJ_ID_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getObjId() <em>Obj Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObjId()
+ * @generated
+ * @ordered
+ */
+ protected int objId = OBJ_ID_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InstanceBaseImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.INSTANCE_BASE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.INSTANCE_BASE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ *
+ * TODOHRR: maybe this value should be cached (make attribute non-volatile)
+ */
+ public String getPath() {
+ String path = pathDelim+getName();
+
+ EObject parent = eContainer();
+ if (parent!=null && (parent instanceof InstanceBase)) {
+ path = ((InstanceBase)parent).getPath() + path;
+ }
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getObjId() {
+ return objId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setObjId(int newObjId) {
+ int oldObjId = objId;
+ objId = newObjId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.INSTANCE_BASE__OBJ_ID, oldObjId, objId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.INSTANCE_BASE__NAME:
+ return getName();
+ case ETriceGenPackage.INSTANCE_BASE__PATH:
+ return getPath();
+ case ETriceGenPackage.INSTANCE_BASE__OBJ_ID:
+ return getObjId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.INSTANCE_BASE__NAME:
+ setName((String)newValue);
+ return;
+ case ETriceGenPackage.INSTANCE_BASE__OBJ_ID:
+ setObjId((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.INSTANCE_BASE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case ETriceGenPackage.INSTANCE_BASE__OBJ_ID:
+ setObjId(OBJ_ID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.INSTANCE_BASE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case ETriceGenPackage.INSTANCE_BASE__PATH:
+ return PATH_EDEFAULT == null ? getPath() != null : !PATH_EDEFAULT.equals(getPath());
+ case ETriceGenPackage.INSTANCE_BASE__OBJ_ID:
+ return objId != OBJ_ID_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", objId: ");
+ result.append(objId);
+ result.append(')');
+ return result.toString();
+ }
+
+} //InstanceBaseImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InterfaceItemInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InterfaceItemInstanceImpl.java
new file mode 100644
index 000000000..17e91ae65
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/InterfaceItemInstanceImpl.java
@@ -0,0 +1,135 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Interface Item Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.InterfaceItemInstanceImpl#getPeers <em>Peers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InterfaceItemInstanceImpl extends InstanceBaseImpl implements InterfaceItemInstance {
+ /**
+ * The cached value of the '{@link #getPeers() <em>Peers</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPeers()
+ * @generated
+ * @ordered
+ */
+ protected EList<InterfaceItemInstance> peers;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InterfaceItemInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.INTERFACE_ITEM_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<InterfaceItemInstance> getPeers() {
+ if (peers == null) {
+ peers = new EObjectResolvingEList<InterfaceItemInstance>(InterfaceItemInstance.class, this, ETriceGenPackage.INTERFACE_ITEM_INSTANCE__PEERS);
+ }
+ return peers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.INTERFACE_ITEM_INSTANCE__PEERS:
+ return getPeers();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.INTERFACE_ITEM_INSTANCE__PEERS:
+ getPeers().clear();
+ getPeers().addAll((Collection<? extends InterfaceItemInstance>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.INTERFACE_ITEM_INSTANCE__PEERS:
+ getPeers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.INTERFACE_ITEM_INSTANCE__PEERS:
+ return peers != null && !peers.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //InterfaceItemInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/PortInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/PortInstanceImpl.java
new file mode 100644
index 000000000..bd0fa5596
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/PortInstanceImpl.java
@@ -0,0 +1,294 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.generator.etricegen.BindingInstance;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.PortInstance;
+import org.eclipse.etrice.generator.etricegen.PortKind;
+
+import java.util.Collection;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Port Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.PortInstanceImpl#getPort <em>Port</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.PortInstanceImpl#getKind <em>Kind</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.PortInstanceImpl#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PortInstanceImpl extends InterfaceItemInstanceImpl implements PortInstance {
+ /**
+ * The cached value of the '{@link #getPort() <em>Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPort()
+ * @generated
+ * @ordered
+ */
+ protected Port port;
+ /**
+ * The default value of the '{@link #getKind() <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected static final PortKind KIND_EDEFAULT = PortKind.EXTERNAL;
+ /**
+ * The cached value of the '{@link #getKind() <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected PortKind kind = KIND_EDEFAULT;
+ /**
+ * The cached value of the '{@link #getBindings() <em>Bindings</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindings()
+ * @generated
+ * @ordered
+ */
+ protected EList<BindingInstance> bindings;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PortInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.PORT_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port getPort() {
+ if (port != null && port.eIsProxy()) {
+ InternalEObject oldPort = (InternalEObject)port;
+ port = (Port)eResolveProxy(oldPort);
+ if (port != oldPort) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.PORT_INSTANCE__PORT, oldPort, port));
+ }
+ }
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port basicGetPort() {
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPort(Port newPort) {
+ Port oldPort = port;
+ port = newPort;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.PORT_INSTANCE__PORT, oldPort, port));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortKind getKind() {
+ return kind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKind(PortKind newKind) {
+ PortKind oldKind = kind;
+ kind = newKind == null ? KIND_EDEFAULT : newKind;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.PORT_INSTANCE__KIND, oldKind, kind));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<BindingInstance> getBindings() {
+ if (bindings == null) {
+ bindings = new EObjectWithInverseResolvingEList.ManyInverse<BindingInstance>(BindingInstance.class, this, ETriceGenPackage.PORT_INSTANCE__BINDINGS, ETriceGenPackage.BINDING_INSTANCE__PORTS);
+ }
+ return bindings;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.PORT_INSTANCE__BINDINGS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getBindings()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.PORT_INSTANCE__BINDINGS:
+ return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.PORT_INSTANCE__PORT:
+ if (resolve) return getPort();
+ return basicGetPort();
+ case ETriceGenPackage.PORT_INSTANCE__KIND:
+ return getKind();
+ case ETriceGenPackage.PORT_INSTANCE__BINDINGS:
+ return getBindings();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.PORT_INSTANCE__PORT:
+ setPort((Port)newValue);
+ return;
+ case ETriceGenPackage.PORT_INSTANCE__KIND:
+ setKind((PortKind)newValue);
+ return;
+ case ETriceGenPackage.PORT_INSTANCE__BINDINGS:
+ getBindings().clear();
+ getBindings().addAll((Collection<? extends BindingInstance>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.PORT_INSTANCE__PORT:
+ setPort((Port)null);
+ return;
+ case ETriceGenPackage.PORT_INSTANCE__KIND:
+ setKind(KIND_EDEFAULT);
+ return;
+ case ETriceGenPackage.PORT_INSTANCE__BINDINGS:
+ getBindings().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.PORT_INSTANCE__PORT:
+ return port != null;
+ case ETriceGenPackage.PORT_INSTANCE__KIND:
+ return kind != KIND_EDEFAULT;
+ case ETriceGenPackage.PORT_INSTANCE__BINDINGS:
+ return bindings != null && !bindings.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (kind: ");
+ result.append(kind);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PortInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/RootImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/RootImpl.java
new file mode 100644
index 000000000..7178145dc
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/RootImpl.java
@@ -0,0 +1,590 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomModel;
+
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl#getSubSystems <em>Sub Systems</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl#getModels <em>Models</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl#getXpActorClasses <em>Xp Actor Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl#getUsedDataClasses <em>Used Data Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl#getUsedProtocolClasses <em>Used Protocol Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl#getUsedActorClasses <em>Used Actor Classes</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.RootImpl#getUsedRoomModels <em>Used Room Models</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RootImpl extends EObjectImpl implements Root {
+ /**
+ * The cached value of the '{@link #getSubSystems() <em>Sub Systems</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubSystems()
+ * @generated
+ * @ordered
+ */
+ protected EList<SubSystemInstance> subSystems;
+
+ private class RoomClassComparator implements Comparator<RoomClass> {
+
+ @Override
+ public int compare(RoomClass o1, RoomClass o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+
+ }
+
+ private class RoomModelComparator implements Comparator<RoomModel> {
+
+ @Override
+ public int compare(RoomModel o1, RoomModel o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+
+ }
+
+ /**
+ * The cached value of the '{@link #getModels() <em>Models</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getModels()
+ * @generated
+ * @ordered
+ */
+ protected EList<RoomModel> models;
+
+ /**
+ * The cached value of the '{@link #getXpActorClasses() <em>Xp Actor Classes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getXpActorClasses()
+ * @generated
+ * @ordered
+ */
+ protected EList<ExpandedActorClass> xpActorClasses;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RootImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.ROOT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SubSystemInstance> getSubSystems() {
+ if (subSystems == null) {
+ subSystems = new EObjectContainmentEList<SubSystemInstance>(SubSystemInstance.class, this, ETriceGenPackage.ROOT__SUB_SYSTEMS);
+ }
+ return subSystems;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<RoomModel> getModels() {
+ if (models == null) {
+ models = new EObjectResolvingEList<RoomModel>(RoomModel.class, this, ETriceGenPackage.ROOT__MODELS);
+ }
+ return models;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ExpandedActorClass> getXpActorClasses() {
+ if (xpActorClasses == null) {
+ xpActorClasses = new EObjectContainmentEList<ExpandedActorClass>(ExpandedActorClass.class, this, ETriceGenPackage.ROOT__XP_ACTOR_CLASSES);
+ }
+ return xpActorClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<DataClass> getUsedDataClasses() {
+ if (usedDataClasses==null) {
+ computeUsedClasses();
+ }
+ return usedDataClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<ProtocolClass> getUsedProtocolClasses() {
+ if (usedProtocolClasses==null) {
+ computeUsedClasses();
+ }
+ return usedProtocolClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<ActorClass> getUsedActorClasses() {
+ if (usedActorClasses==null) {
+ computeUsedClasses();
+ }
+ return usedActorClasses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<RoomModel> getUsedRoomModels() {
+ if (usedRoomModels==null) {
+ computeUsedClasses();
+ }
+ return usedRoomModels;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<RoomModel> getReferencedModels(RoomClass cls) {
+
+ if (cls instanceof ExpandedActorClass)
+ cls = ((ExpandedActorClass)cls).getActorClass();
+
+ HashSet<DataClass> dataClasses = new HashSet<DataClass>();
+ HashSet<ProtocolClass> protocolClasses = new HashSet<ProtocolClass>();
+ HashSet<ActorClass> actorClasses = new HashSet<ActorClass>();
+ HashSet<RoomModel> models = new HashSet<RoomModel>();
+
+ if (cls instanceof DataClass) {
+ dataClasses.add((DataClass) cls);
+ }
+ else if (cls instanceof ProtocolClass) {
+ protocolClasses.add((ProtocolClass) cls);
+ }
+ else if (cls instanceof ActorClass) {
+ actorClasses.add((ActorClass) cls);
+ }
+ else if (cls instanceof SubSystemClass) {
+ SubSystemClass cc = (SubSystemClass) cls;
+ for (ActorRef ar : cc.getActorRefs()) {
+ actorClasses.add(ar.getType());
+ }
+ }
+
+ getReferencedClassesAndModels(dataClasses, protocolClasses,
+ actorClasses, models);
+
+ // remove own model
+ models.remove(cls.eContainer());
+
+ BasicEList<RoomModel> result = new BasicEList<RoomModel>(models);
+ Comparator<RoomModel> comp = new RoomModelComparator();
+ Collections.sort(result, comp);
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<ProtocolClass> getReferencedProtocols(ActorClass cls) {
+
+ if (cls instanceof ExpandedActorClass)
+ cls = ((ExpandedActorClass)cls).getActorClass();
+
+ HashSet<DataClass> dataClasses = new HashSet<DataClass>();
+ HashSet<ProtocolClass> protocolClasses = new HashSet<ProtocolClass>();
+ HashSet<ActorClass> actorClasses = new HashSet<ActorClass>();
+ HashSet<RoomModel> models = new HashSet<RoomModel>();
+
+ actorClasses.add(cls);
+
+ getReferencedClassesAndModels(dataClasses, protocolClasses,
+ actorClasses, models);
+
+ BasicEList<ProtocolClass> result = new BasicEList<ProtocolClass>(protocolClasses);
+ Comparator<RoomClass> comp = new RoomClassComparator();
+ Collections.sort(result, comp);
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.ROOT__SUB_SYSTEMS:
+ return ((InternalEList<?>)getSubSystems()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.ROOT__XP_ACTOR_CLASSES:
+ return ((InternalEList<?>)getXpActorClasses()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.ROOT__SUB_SYSTEMS:
+ return getSubSystems();
+ case ETriceGenPackage.ROOT__MODELS:
+ return getModels();
+ case ETriceGenPackage.ROOT__XP_ACTOR_CLASSES:
+ return getXpActorClasses();
+ case ETriceGenPackage.ROOT__USED_DATA_CLASSES:
+ return getUsedDataClasses();
+ case ETriceGenPackage.ROOT__USED_PROTOCOL_CLASSES:
+ return getUsedProtocolClasses();
+ case ETriceGenPackage.ROOT__USED_ACTOR_CLASSES:
+ return getUsedActorClasses();
+ case ETriceGenPackage.ROOT__USED_ROOM_MODELS:
+ return getUsedRoomModels();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.ROOT__SUB_SYSTEMS:
+ getSubSystems().clear();
+ getSubSystems().addAll((Collection<? extends SubSystemInstance>)newValue);
+ return;
+ case ETriceGenPackage.ROOT__MODELS:
+ getModels().clear();
+ getModels().addAll((Collection<? extends RoomModel>)newValue);
+ return;
+ case ETriceGenPackage.ROOT__XP_ACTOR_CLASSES:
+ getXpActorClasses().clear();
+ getXpActorClasses().addAll((Collection<? extends ExpandedActorClass>)newValue);
+ return;
+ case ETriceGenPackage.ROOT__USED_DATA_CLASSES:
+ getUsedDataClasses().clear();
+ getUsedDataClasses().addAll((Collection<? extends DataClass>)newValue);
+ return;
+ case ETriceGenPackage.ROOT__USED_PROTOCOL_CLASSES:
+ getUsedProtocolClasses().clear();
+ getUsedProtocolClasses().addAll((Collection<? extends ProtocolClass>)newValue);
+ return;
+ case ETriceGenPackage.ROOT__USED_ACTOR_CLASSES:
+ getUsedActorClasses().clear();
+ getUsedActorClasses().addAll((Collection<? extends ActorClass>)newValue);
+ return;
+ case ETriceGenPackage.ROOT__USED_ROOM_MODELS:
+ getUsedRoomModels().clear();
+ getUsedRoomModels().addAll((Collection<? extends RoomModel>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.ROOT__SUB_SYSTEMS:
+ getSubSystems().clear();
+ return;
+ case ETriceGenPackage.ROOT__MODELS:
+ getModels().clear();
+ return;
+ case ETriceGenPackage.ROOT__XP_ACTOR_CLASSES:
+ getXpActorClasses().clear();
+ return;
+ case ETriceGenPackage.ROOT__USED_DATA_CLASSES:
+ getUsedDataClasses().clear();
+ return;
+ case ETriceGenPackage.ROOT__USED_PROTOCOL_CLASSES:
+ getUsedProtocolClasses().clear();
+ return;
+ case ETriceGenPackage.ROOT__USED_ACTOR_CLASSES:
+ getUsedActorClasses().clear();
+ return;
+ case ETriceGenPackage.ROOT__USED_ROOM_MODELS:
+ getUsedRoomModels().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.ROOT__SUB_SYSTEMS:
+ return subSystems != null && !subSystems.isEmpty();
+ case ETriceGenPackage.ROOT__MODELS:
+ return models != null && !models.isEmpty();
+ case ETriceGenPackage.ROOT__XP_ACTOR_CLASSES:
+ return xpActorClasses != null && !xpActorClasses.isEmpty();
+ case ETriceGenPackage.ROOT__USED_DATA_CLASSES:
+ return !getUsedDataClasses().isEmpty();
+ case ETriceGenPackage.ROOT__USED_PROTOCOL_CLASSES:
+ return !getUsedProtocolClasses().isEmpty();
+ case ETriceGenPackage.ROOT__USED_ACTOR_CLASSES:
+ return !getUsedActorClasses().isEmpty();
+ case ETriceGenPackage.ROOT__USED_ROOM_MODELS:
+ return !getUsedRoomModels().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ private HashMap<String, DataClass> name2dc = new HashMap<String, DataClass>();
+
+ private BasicEList<DataClass> usedDataClasses = null;
+ private BasicEList<ProtocolClass> usedProtocolClasses = null;
+ private BasicEList<ActorClass> usedActorClasses = null;
+ private BasicEList<RoomModel> usedRoomModels = null;
+
+ private void computeUsedClasses() {
+ for (RoomModel mdl : getModels()) {
+ for (DataClass dc : mdl.getDataClasses()) {
+ name2dc.put(dc.getName(), dc);
+ }
+ }
+
+ // first we collect actor classes
+ HashSet<ActorClass> actorClasses = new HashSet<ActorClass>();
+ for (SubSystemInstance ci : getSubSystems()) {
+ TreeIterator<EObject> it = ci.eAllContents();
+ while (it.hasNext()) {
+ EObject obj = it.next();
+ if (obj instanceof ActorInstance) {
+ ActorClass ac = ((ActorInstance)obj).getActorClass();
+ actorClasses.add(ac);
+ }
+ }
+ }
+
+ HashSet<DataClass> dataClasses = new HashSet<DataClass>();
+ HashSet<ProtocolClass> protocolClasses = new HashSet<ProtocolClass>();
+ HashSet<RoomModel> models = new HashSet<RoomModel>();
+
+ getReferencedClassesAndModels(dataClasses, protocolClasses,
+ actorClasses, models);
+
+ usedDataClasses = new BasicEList<DataClass>(dataClasses);
+ usedProtocolClasses = new BasicEList<ProtocolClass>(protocolClasses);
+ usedActorClasses = new BasicEList<ActorClass>(actorClasses);
+ usedRoomModels = new BasicEList<RoomModel>(models);
+ }
+
+ private void getReferencedClassesAndModels(HashSet<DataClass> dataClasses,
+ HashSet<ProtocolClass> protocolClasses,
+ HashSet<ActorClass> actorClasses, HashSet<RoomModel> models) {
+ // add actor base classes
+ LinkedList<ActorClass> tmpAc = new LinkedList<ActorClass>(actorClasses);
+ for (ActorClass ac : tmpAc) {
+ while (ac.getBase()!=null) {
+ ac = ac.getBase();
+ actorClasses.add(ac);
+ }
+ }
+
+ // determine data and protocol classes used by actor classes
+ for (ActorClass ac : actorClasses) {
+ getInterfaceItemProtocolClasses(protocolClasses, ac.getIfPorts());
+ // ExtPorts are in the interface and thus already covered
+ getInterfaceItemProtocolClasses(protocolClasses, ac.getIntPorts());
+ getInterfaceItemProtocolClasses(protocolClasses, ac.getStrSAPs());
+ for (ServiceImplementation ispp : ac.getServiceImplementations()) {
+ protocolClasses.add(ispp.getSpp().getProtocol());
+ }
+ getInterfaceItemProtocolClasses(protocolClasses, ac.getIfSPPs());
+ getAttributeDataClasses(dataClasses, ac.getAttributes());
+ getOperationDataClasses(dataClasses, ac.getOperations());
+ }
+
+ // add protocol base classes
+ LinkedList<ProtocolClass> tmpPc = new LinkedList<ProtocolClass>(protocolClasses);
+ for (ProtocolClass pc : tmpPc) {
+ while (pc.getBase()!=null) {
+ pc = pc.getBase();
+ protocolClasses.add(pc);
+ }
+ }
+
+ // add data classes used by protocols
+ for (ProtocolClass pc : protocolClasses) {
+ for (Message m : pc.getIncomingMessages()) {
+ getTypedIdDataClasses(dataClasses, m.getArguments());
+ }
+ for (Message m : pc.getOutgoingMessages()) {
+ getTypedIdDataClasses(dataClasses, m.getArguments());
+ }
+ }
+
+ // add data class base classes and data class attribute and operation classes
+ boolean repeat = true;
+ do {
+ LinkedList<DataClass> tmpDc = new LinkedList<DataClass>(dataClasses);
+ for (DataClass dc : tmpDc) {
+ getAttributeDataClasses(dataClasses, dc.getAttributes());
+ getOperationDataClasses(dataClasses, dc.getOperations());
+ while (dc.getBase()!=null) {
+ dc = dc.getBase();
+ dataClasses.add(dc);
+ }
+ }
+
+ if (tmpDc.size()==dataClasses.size())
+ // nothing changed
+ repeat = false;
+ }
+ while (repeat);
+
+ // finally compute used models
+ for (DataClass dc : dataClasses) {
+ models.add((RoomModel) dc.eContainer());
+ }
+ for (ProtocolClass pc : protocolClasses) {
+ models.add((RoomModel) pc.eContainer());
+ }
+ for (ActorClass ac : actorClasses) {
+ models.add((RoomModel) ac.eContainer());
+ }
+ }
+
+ private void getInterfaceItemProtocolClasses(
+ HashSet<ProtocolClass> protocolClasses, EList<? extends InterfaceItem> items) {
+ for (InterfaceItem ii : items) {
+ protocolClasses.add(ii.getProtocol());
+ }
+ }
+
+ private void getOperationDataClasses(HashSet<DataClass> dataClasses,
+ EList<Operation> operations) {
+ for (Operation op : operations) {
+ if (op.getReturntype()!=null) {
+ DataClass dc = name2dc.get(op.getReturntype());
+ if (dc!=null)
+ dataClasses.add(dc);
+ }
+ getFreeTypedIdDataClasses(dataClasses, op.getArguments());
+ }
+ }
+
+ private void getTypedIdDataClasses(HashSet<DataClass> dataClasses,
+ EList<TypedID> arguments) {
+ for (TypedID tid : arguments) {
+ if (tid.getType().getType()!=null)
+ dataClasses.add(tid.getType().getType());
+ }
+ }
+
+ private void getFreeTypedIdDataClasses(HashSet<DataClass> dataClasses,
+ EList<FreeTypedID> arguments) {
+ for (FreeTypedID tid : arguments) {
+ DataClass dc = name2dc.get(tid.getType());
+ if (dc!=null)
+ dataClasses.add(dc);
+ }
+ }
+
+ private void getAttributeDataClasses(HashSet<DataClass> dataClasses,
+ EList<Attribute> attributes) {
+ for (Attribute attr : attributes) {
+ if (attr.getType().getType()!=null)
+ dataClasses.add(attr.getType().getType());
+ }
+ }
+
+} //RootImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SAPInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SAPInstanceImpl.java
new file mode 100644
index 000000000..d50dc4065
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SAPInstanceImpl.java
@@ -0,0 +1,158 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.SAPInstance;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SAP Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.SAPInstanceImpl#getSap <em>Sap</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SAPInstanceImpl extends InterfaceItemInstanceImpl implements SAPInstance {
+ /**
+ * The cached value of the '{@link #getSap() <em>Sap</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSap()
+ * @generated
+ * @ordered
+ */
+ protected SAPRef sap;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SAPInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.SAP_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SAPRef getSap() {
+ if (sap != null && sap.eIsProxy()) {
+ InternalEObject oldSap = (InternalEObject)sap;
+ sap = (SAPRef)eResolveProxy(oldSap);
+ if (sap != oldSap) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.SAP_INSTANCE__SAP, oldSap, sap));
+ }
+ }
+ return sap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SAPRef basicGetSap() {
+ return sap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSap(SAPRef newSap) {
+ SAPRef oldSap = sap;
+ sap = newSap;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SAP_INSTANCE__SAP, oldSap, sap));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.SAP_INSTANCE__SAP:
+ if (resolve) return getSap();
+ return basicGetSap();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.SAP_INSTANCE__SAP:
+ setSap((SAPRef)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SAP_INSTANCE__SAP:
+ setSap((SAPRef)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SAP_INSTANCE__SAP:
+ return sap != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SAPInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SPPInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SPPInstanceImpl.java
new file mode 100644
index 000000000..12a555393
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SPPInstanceImpl.java
@@ -0,0 +1,318 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.generator.etricegen.ConnectionInstance;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.SPPInstance;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SPP Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.SPPInstanceImpl#getSpp <em>Spp</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.SPPInstanceImpl#getIncoming <em>Incoming</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.SPPInstanceImpl#getOutgoing <em>Outgoing</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SPPInstanceImpl extends InstanceBaseImpl implements SPPInstance {
+ /**
+ * The cached value of the '{@link #getSpp() <em>Spp</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpp()
+ * @generated
+ * @ordered
+ */
+ protected SPPRef spp;
+
+ /**
+ * The cached value of the '{@link #getIncoming() <em>Incoming</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncoming()
+ * @generated
+ * @ordered
+ */
+ protected EList<ConnectionInstance> incoming;
+ /**
+ * The cached value of the '{@link #getOutgoing() <em>Outgoing</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutgoing()
+ * @generated
+ * @ordered
+ */
+ protected ConnectionInstance outgoing;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SPPInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.SPP_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef getSpp() {
+ if (spp != null && spp.eIsProxy()) {
+ InternalEObject oldSpp = (InternalEObject)spp;
+ spp = (SPPRef)eResolveProxy(oldSpp);
+ if (spp != oldSpp) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.SPP_INSTANCE__SPP, oldSpp, spp));
+ }
+ }
+ return spp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SPPRef basicGetSpp() {
+ return spp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSpp(SPPRef newSpp) {
+ SPPRef oldSpp = spp;
+ spp = newSpp;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SPP_INSTANCE__SPP, oldSpp, spp));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ConnectionInstance> getIncoming() {
+ if (incoming == null) {
+ incoming = new EObjectWithInverseResolvingEList<ConnectionInstance>(ConnectionInstance.class, this, ETriceGenPackage.SPP_INSTANCE__INCOMING, ETriceGenPackage.CONNECTION_INSTANCE__TO_SPP);
+ }
+ return incoming;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConnectionInstance getOutgoing() {
+ if (outgoing != null && outgoing.eIsProxy()) {
+ InternalEObject oldOutgoing = (InternalEObject)outgoing;
+ outgoing = (ConnectionInstance)eResolveProxy(oldOutgoing);
+ if (outgoing != oldOutgoing) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.SPP_INSTANCE__OUTGOING, oldOutgoing, outgoing));
+ }
+ }
+ return outgoing;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConnectionInstance basicGetOutgoing() {
+ return outgoing;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOutgoing(ConnectionInstance newOutgoing, NotificationChain msgs) {
+ ConnectionInstance oldOutgoing = outgoing;
+ outgoing = newOutgoing;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SPP_INSTANCE__OUTGOING, oldOutgoing, newOutgoing);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOutgoing(ConnectionInstance newOutgoing) {
+ if (newOutgoing != outgoing) {
+ NotificationChain msgs = null;
+ if (outgoing != null)
+ msgs = ((InternalEObject)outgoing).eInverseRemove(this, ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP, ConnectionInstance.class, msgs);
+ if (newOutgoing != null)
+ msgs = ((InternalEObject)newOutgoing).eInverseAdd(this, ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP, ConnectionInstance.class, msgs);
+ msgs = basicSetOutgoing(newOutgoing, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SPP_INSTANCE__OUTGOING, newOutgoing, newOutgoing));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.SPP_INSTANCE__INCOMING:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getIncoming()).basicAdd(otherEnd, msgs);
+ case ETriceGenPackage.SPP_INSTANCE__OUTGOING:
+ if (outgoing != null)
+ msgs = ((InternalEObject)outgoing).eInverseRemove(this, ETriceGenPackage.CONNECTION_INSTANCE__FROM_SPP, ConnectionInstance.class, msgs);
+ return basicSetOutgoing((ConnectionInstance)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.SPP_INSTANCE__INCOMING:
+ return ((InternalEList<?>)getIncoming()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.SPP_INSTANCE__OUTGOING:
+ return basicSetOutgoing(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.SPP_INSTANCE__SPP:
+ if (resolve) return getSpp();
+ return basicGetSpp();
+ case ETriceGenPackage.SPP_INSTANCE__INCOMING:
+ return getIncoming();
+ case ETriceGenPackage.SPP_INSTANCE__OUTGOING:
+ if (resolve) return getOutgoing();
+ return basicGetOutgoing();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.SPP_INSTANCE__SPP:
+ setSpp((SPPRef)newValue);
+ return;
+ case ETriceGenPackage.SPP_INSTANCE__INCOMING:
+ getIncoming().clear();
+ getIncoming().addAll((Collection<? extends ConnectionInstance>)newValue);
+ return;
+ case ETriceGenPackage.SPP_INSTANCE__OUTGOING:
+ setOutgoing((ConnectionInstance)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SPP_INSTANCE__SPP:
+ setSpp((SPPRef)null);
+ return;
+ case ETriceGenPackage.SPP_INSTANCE__INCOMING:
+ getIncoming().clear();
+ return;
+ case ETriceGenPackage.SPP_INSTANCE__OUTGOING:
+ setOutgoing((ConnectionInstance)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SPP_INSTANCE__SPP:
+ return spp != null;
+ case ETriceGenPackage.SPP_INSTANCE__INCOMING:
+ return incoming != null && !incoming.isEmpty();
+ case ETriceGenPackage.SPP_INSTANCE__OUTGOING:
+ return outgoing != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SPPInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ServiceImplInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ServiceImplInstanceImpl.java
new file mode 100644
index 000000000..4f28acd43
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/ServiceImplInstanceImpl.java
@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Service Impl Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.ServiceImplInstanceImpl#getSvcImpl <em>Svc Impl</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ServiceImplInstanceImpl extends InterfaceItemInstanceImpl implements ServiceImplInstance {
+ /**
+ * The cached value of the '{@link #getSvcImpl() <em>Svc Impl</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSvcImpl()
+ * @generated
+ * @ordered
+ */
+ protected ServiceImplementation svcImpl;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ServiceImplInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.SERVICE_IMPL_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ServiceImplementation getSvcImpl() {
+ if (svcImpl != null && svcImpl.eIsProxy()) {
+ InternalEObject oldSvcImpl = (InternalEObject)svcImpl;
+ svcImpl = (ServiceImplementation)eResolveProxy(oldSvcImpl);
+ if (svcImpl != oldSvcImpl) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.SERVICE_IMPL_INSTANCE__SVC_IMPL, oldSvcImpl, svcImpl));
+ }
+ }
+ return svcImpl;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ServiceImplementation basicGetSvcImpl() {
+ return svcImpl;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSvcImpl(ServiceImplementation newSvcImpl) {
+ ServiceImplementation oldSvcImpl = svcImpl;
+ svcImpl = newSvcImpl;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SERVICE_IMPL_INSTANCE__SVC_IMPL, oldSvcImpl, svcImpl));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.SERVICE_IMPL_INSTANCE__SVC_IMPL:
+ if (resolve) return getSvcImpl();
+ return basicGetSvcImpl();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.SERVICE_IMPL_INSTANCE__SVC_IMPL:
+ setSvcImpl((ServiceImplementation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SERVICE_IMPL_INSTANCE__SVC_IMPL:
+ setSvcImpl((ServiceImplementation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SERVICE_IMPL_INSTANCE__SVC_IMPL:
+ return svcImpl != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ServiceImplInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/StructureInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/StructureInstanceImpl.java
new file mode 100644
index 000000000..156c63386
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/StructureInstanceImpl.java
@@ -0,0 +1,473 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.BindingInstance;
+import org.eclipse.etrice.generator.etricegen.ConnectionInstance;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
+import org.eclipse.etrice.generator.etricegen.PortInstance;
+import org.eclipse.etrice.generator.etricegen.PortKind;
+import org.eclipse.etrice.generator.etricegen.SAPInstance;
+import org.eclipse.etrice.generator.etricegen.SPPInstance;
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
+import org.eclipse.etrice.generator.etricegen.StructureInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Structure Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getInstances <em>Instances</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getPorts <em>Ports</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getSaps <em>Saps</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getSpps <em>Spps</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getServices <em>Services</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getConnections <em>Connections</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getAllContainedInstances <em>All Contained Instances</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.StructureInstanceImpl#getOrderedIfItemInstances <em>Ordered If Item Instances</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StructureInstanceImpl extends InstanceBaseImpl implements StructureInstance {
+ /**
+ * The cached value of the '{@link #getInstances() <em>Instances</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInstances()
+ * @generated
+ * @ordered
+ */
+ protected EList<ActorInstance> instances;
+ /**
+ * The cached value of the '{@link #getPorts() <em>Ports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<PortInstance> ports;
+ /**
+ * The cached value of the '{@link #getSaps() <em>Saps</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSaps()
+ * @generated
+ * @ordered
+ */
+ protected EList<SAPInstance> saps;
+ /**
+ * The cached value of the '{@link #getSpps() <em>Spps</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpps()
+ * @generated
+ * @ordered
+ */
+ protected EList<SPPInstance> spps;
+ /**
+ * The cached value of the '{@link #getServices() <em>Services</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getServices()
+ * @generated
+ * @ordered
+ */
+ protected EList<ServiceImplInstance> services;
+ /**
+ * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindings()
+ * @generated
+ * @ordered
+ */
+ protected EList<BindingInstance> bindings;
+
+ /**
+ * The cached value of the '{@link #getConnections() <em>Connections</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnections()
+ * @generated
+ * @ordered
+ */
+ protected EList<ConnectionInstance> connections;
+
+ /**
+ * The cached value of the '{@link #getOrderedIfItemInstances() <em>Ordered If Item Instances</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOrderedIfItemInstances()
+ * @generated
+ * @ordered
+ */
+ protected EList<InterfaceItemInstance> orderedIfItemInstances;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StructureInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.STRUCTURE_INSTANCE;
+ }
+
+ public HashMap<ProtocolClass, ServiceImplInstance> protocol2service = new HashMap<ProtocolClass, ServiceImplInstance>();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ActorInstance> getInstances() {
+ if (instances == null) {
+ instances = new EObjectContainmentEList<ActorInstance>(ActorInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__INSTANCES);
+ }
+ return instances;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<PortInstance> getPorts() {
+ if (ports == null) {
+ ports = new EObjectContainmentEList<PortInstance>(PortInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__PORTS);
+ }
+ return ports;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SAPInstance> getSaps() {
+ if (saps == null) {
+ saps = new EObjectContainmentEList<SAPInstance>(SAPInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__SAPS);
+ }
+ return saps;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<SPPInstance> getSpps() {
+ if (spps == null) {
+ spps = new EObjectContainmentEList<SPPInstance>(SPPInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__SPPS);
+ }
+ return spps;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ServiceImplInstance> getServices() {
+ if (services == null) {
+ services = new EObjectContainmentEList<ServiceImplInstance>(ServiceImplInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__SERVICES);
+ }
+ return services;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<BindingInstance> getBindings() {
+ if (bindings == null) {
+ bindings = new EObjectContainmentEList<BindingInstance>(BindingInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__BINDINGS);
+ }
+ return bindings;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ConnectionInstance> getConnections() {
+ if (connections == null) {
+ connections = new EObjectContainmentEList<ConnectionInstance>(ConnectionInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__CONNECTIONS);
+ }
+ return connections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<ActorInstance> getAllContainedInstances() {
+ BasicEList<ActorInstance> result = new BasicEList<ActorInstance>();
+ TreeIterator<EObject> it = eAllContents();
+ while (it.hasNext()) {
+ EObject obj = it.next();
+ if (obj instanceof ActorInstance)
+ result.add((ActorInstance) obj);
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * for each base class, super classes first, (ports, saps and services) in this order
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<InterfaceItemInstance> getOrderedIfItemInstances() {
+ if (orderedIfItemInstances == null) {
+ orderedIfItemInstances = new EObjectResolvingEList<InterfaceItemInstance>(InterfaceItemInstance.class, this, ETriceGenPackage.STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES);
+
+ if (this instanceof ActorInstance) {
+ ActorInstance ai = (ActorInstance) this;
+
+ // create a list of base classes, super first
+ LinkedList<ActorClass> classes = new LinkedList<ActorClass>();
+ ActorClass ac = ai.getActorClass();
+ while (ac!=null) {
+ classes.addFirst(ac);
+ ac = ac.getBase();
+ }
+
+ for (ActorClass a : classes) {
+ for (PortInstance p : ai.getPorts()) {
+ if (p.getKind()!=PortKind.RELAY && isInActorClass(p.getPort(), a))
+ orderedIfItemInstances.add(p);
+ }
+ for (SAPInstance sap : ai.getSaps()) {
+ if (isInActorClass(sap.getSap(), a))
+ orderedIfItemInstances.add(sap);
+ }
+ for (ServiceImplInstance svc : ai.getServices()) {
+ if (isInActorClass(svc.getSvcImpl(), a))
+ orderedIfItemInstances.add(svc);
+ }
+ }
+ }
+ }
+ return orderedIfItemInstances;
+ }
+
+ private boolean isInActorClass(EObject obj, ActorClass ac) {
+ while (obj!=null) {
+ obj = obj.eContainer();
+ if (obj instanceof ActorClass)
+ if (obj==ac)
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.STRUCTURE_INSTANCE__INSTANCES:
+ return ((InternalEList<?>)getInstances()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.STRUCTURE_INSTANCE__PORTS:
+ return ((InternalEList<?>)getPorts()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SAPS:
+ return ((InternalEList<?>)getSaps()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SPPS:
+ return ((InternalEList<?>)getSpps()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SERVICES:
+ return ((InternalEList<?>)getServices()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.STRUCTURE_INSTANCE__BINDINGS:
+ return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
+ case ETriceGenPackage.STRUCTURE_INSTANCE__CONNECTIONS:
+ return ((InternalEList<?>)getConnections()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.STRUCTURE_INSTANCE__INSTANCES:
+ return getInstances();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__PORTS:
+ return getPorts();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SAPS:
+ return getSaps();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SPPS:
+ return getSpps();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SERVICES:
+ return getServices();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__BINDINGS:
+ return getBindings();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__CONNECTIONS:
+ return getConnections();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES:
+ return getAllContainedInstances();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES:
+ return getOrderedIfItemInstances();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.STRUCTURE_INSTANCE__INSTANCES:
+ getInstances().clear();
+ getInstances().addAll((Collection<? extends ActorInstance>)newValue);
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__PORTS:
+ getPorts().clear();
+ getPorts().addAll((Collection<? extends PortInstance>)newValue);
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SAPS:
+ getSaps().clear();
+ getSaps().addAll((Collection<? extends SAPInstance>)newValue);
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SPPS:
+ getSpps().clear();
+ getSpps().addAll((Collection<? extends SPPInstance>)newValue);
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SERVICES:
+ getServices().clear();
+ getServices().addAll((Collection<? extends ServiceImplInstance>)newValue);
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__BINDINGS:
+ getBindings().clear();
+ getBindings().addAll((Collection<? extends BindingInstance>)newValue);
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__CONNECTIONS:
+ getConnections().clear();
+ getConnections().addAll((Collection<? extends ConnectionInstance>)newValue);
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES:
+ getAllContainedInstances().clear();
+ getAllContainedInstances().addAll((Collection<? extends ActorInstance>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.STRUCTURE_INSTANCE__INSTANCES:
+ getInstances().clear();
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__PORTS:
+ getPorts().clear();
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SAPS:
+ getSaps().clear();
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SPPS:
+ getSpps().clear();
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SERVICES:
+ getServices().clear();
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__BINDINGS:
+ getBindings().clear();
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__CONNECTIONS:
+ getConnections().clear();
+ return;
+ case ETriceGenPackage.STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES:
+ getAllContainedInstances().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.STRUCTURE_INSTANCE__INSTANCES:
+ return instances != null && !instances.isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__PORTS:
+ return ports != null && !ports.isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SAPS:
+ return saps != null && !saps.isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SPPS:
+ return spps != null && !spps.isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__SERVICES:
+ return services != null && !services.isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__BINDINGS:
+ return bindings != null && !bindings.isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__CONNECTIONS:
+ return connections != null && !connections.isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__ALL_CONTAINED_INSTANCES:
+ return !getAllContainedInstances().isEmpty();
+ case ETriceGenPackage.STRUCTURE_INSTANCE__ORDERED_IF_ITEM_INSTANCES:
+ return orderedIfItemInstances != null && !orderedIfItemInstances.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //StructureInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SubSystemInstanceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SubSystemInstanceImpl.java
new file mode 100644
index 000000000..901e0f714
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/SubSystemInstanceImpl.java
@@ -0,0 +1,241 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.etricegen.Counter;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sub LogicalSystem Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.SubSystemInstanceImpl#getSubSystemClass <em>Sub System Class</em>}</li>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.SubSystemInstanceImpl#getObjCounter <em>Obj Counter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SubSystemInstanceImpl extends StructureInstanceImpl implements SubSystemInstance {
+ /**
+ * The cached value of the '{@link #getSubSystemClass() <em>Sub System Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubSystemClass()
+ * @generated
+ * @ordered
+ */
+ protected SubSystemClass subSystemClass;
+
+ /**
+ * The cached value of the '{@link #getObjCounter() <em>Obj Counter</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObjCounter()
+ * @generated
+ * @ordered
+ */
+ protected Counter objCounter;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SubSystemInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.SUB_SYSTEM_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubSystemClass getSubSystemClass() {
+ if (subSystemClass != null && subSystemClass.eIsProxy()) {
+ InternalEObject oldSubSystemClass = (InternalEObject)subSystemClass;
+ subSystemClass = (SubSystemClass)eResolveProxy(oldSubSystemClass);
+ if (subSystemClass != oldSubSystemClass) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS, oldSubSystemClass, subSystemClass));
+ }
+ }
+ return subSystemClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SubSystemClass basicGetSubSystemClass() {
+ return subSystemClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSubSystemClass(SubSystemClass newSubSystemClass) {
+ SubSystemClass oldSubSystemClass = subSystemClass;
+ subSystemClass = newSubSystemClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS, oldSubSystemClass, subSystemClass));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Counter getObjCounter() {
+ return objCounter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetObjCounter(Counter newObjCounter, NotificationChain msgs) {
+ Counter oldObjCounter = objCounter;
+ objCounter = newObjCounter;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER, oldObjCounter, newObjCounter);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setObjCounter(Counter newObjCounter) {
+ if (newObjCounter != objCounter) {
+ NotificationChain msgs = null;
+ if (objCounter != null)
+ msgs = ((InternalEObject)objCounter).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER, null, msgs);
+ if (newObjCounter != null)
+ msgs = ((InternalEObject)newObjCounter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER, null, msgs);
+ msgs = basicSetObjCounter(newObjCounter, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER, newObjCounter, newObjCounter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER:
+ return basicSetObjCounter(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS:
+ if (resolve) return getSubSystemClass();
+ return basicGetSubSystemClass();
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER:
+ return getObjCounter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS:
+ setSubSystemClass((SubSystemClass)newValue);
+ return;
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER:
+ setObjCounter((Counter)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS:
+ setSubSystemClass((SubSystemClass)null);
+ return;
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER:
+ setObjCounter((Counter)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__SUB_SYSTEM_CLASS:
+ return subSystemClass != null;
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE__OBJ_COUNTER:
+ return objCounter != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SubSystemInstanceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/TransitionChainImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/TransitionChainImpl.java
new file mode 100644
index 000000000..1a74eb773
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/impl/TransitionChainImpl.java
@@ -0,0 +1,302 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.generator.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.core.naming.RoomNameProvider;
+
+import org.eclipse.etrice.core.room.CPBranchTransition;
+import org.eclipse.etrice.core.room.ChoicePoint;
+import org.eclipse.etrice.core.room.ContinuationTransition;
+import org.eclipse.etrice.core.room.EntryPoint;
+import org.eclipse.etrice.core.room.ExitPoint;
+import org.eclipse.etrice.core.room.NonInitialTransition;
+import org.eclipse.etrice.core.room.StateGraphNode;
+import org.eclipse.etrice.core.room.SubStateTrPointTerminal;
+import org.eclipse.etrice.core.room.TrPoint;
+import org.eclipse.etrice.core.room.TrPointTerminal;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TransitionPoint;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.ITransitionChainVisitor;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transition Chain</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.etrice.generator.etricegen.impl.TransitionChainImpl#getTransition <em>Transition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TransitionChainImpl extends EObjectImpl implements TransitionChain {
+ /**
+ * The cached value of the '{@link #getTransition() <em>Transition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransition()
+ * @generated
+ * @ordered
+ */
+ protected Transition transition;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TransitionChainImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ETriceGenPackage.Literals.TRANSITION_CHAIN;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Transition getTransition() {
+ if (transition != null && transition.eIsProxy()) {
+ InternalEObject oldTransition = (InternalEObject)transition;
+ transition = (Transition)eResolveProxy(oldTransition);
+ if (transition != oldTransition) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ETriceGenPackage.TRANSITION_CHAIN__TRANSITION, oldTransition, transition));
+ }
+ }
+ return transition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Transition basicGetTransition() {
+ return transition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTransition(Transition newTransition) {
+ Transition oldTransition = transition;
+ transition = newTransition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.TRANSITION_CHAIN__TRANSITION, oldTransition, transition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public State getStateContext() {
+ if (getTransition().eContainer().eContainer() instanceof State)
+ return (State) getTransition().eContainer().eContainer();
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isHandler() {
+ if (!(getTransition() instanceof TriggeredTransition))
+ return false;
+
+ TriggeredTransition trans = (TriggeredTransition)getTransition();
+ if (trans.getFrom() instanceof TrPointTerminal) {
+ TrPoint tp = ((TrPointTerminal)trans.getFrom()).getTrPoint();
+ if (tp instanceof TransitionPoint)
+ return ((TransitionPoint)tp).isHandler();
+ }
+ else if (trans.getFrom() instanceof SubStateTrPointTerminal) {
+ TrPoint tp = ((SubStateTrPointTerminal)trans.getFrom()).getTrPoint();
+ if (tp instanceof TransitionPoint)
+ return ((TransitionPoint)tp).isHandler();
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String genExecuteChain(ITransitionChainVisitor tcv) {
+ ExpandedActorClass ac = getExpandedActorClass();
+
+ StringBuilder result = new StringBuilder();
+ result.append(tcv.genTypedData());
+ genChainCode(getTransition(), ac, tcv, result);
+ return result.toString();
+ }
+
+ private void genChainCode(Transition tr,
+ ExpandedActorClass ac, ITransitionChainVisitor tcv, StringBuilder result) {
+
+ result.append(tcv.genActionOperationCall(tr));
+
+ StateGraphNode node = ac.getNode(tr.getTo());
+ EList<Transition> out = ac.getOutgoingTransitions(node);
+ if (node instanceof ChoicePoint) {
+ ContinuationTransition dflt = ac.getDefaultBranch(out);
+ assert(dflt!=null): "ChoicePoint "+RoomNameProvider.getFullPath(node)+" has no default branch!";
+
+ // generate if/else
+ for (Transition cond : out) {
+ if (cond==dflt)
+ continue;
+
+ assert(cond instanceof CPBranchTransition): "The non default ChoicePoint branch "
+ +RoomNameProvider.getFullPath(cond)+" must be of type CPBranchTransition!";
+
+ result.append(tcv.genElseIfBranch((CPBranchTransition)cond));
+
+ genChainCode(cond, ac, tcv, result);
+ }
+
+ // generate default
+ result.append(tcv.genElseBranch(dflt));
+
+ genChainCode(dflt, ac, tcv, result);
+
+ result.append(tcv.genEndIf());
+ }
+ else {
+ if (node instanceof TrPoint) {
+ assert(out.size()<=1): "TrPoint "+RoomNameProvider.getFullPath(node)
+ +" is expected to have at most one outgoing transition!";
+ if (out.size()==1) {
+ State state = (node.eContainer().eContainer() instanceof State)? (State)node.eContainer().eContainer():null;
+ if (node instanceof EntryPoint) {
+ if (state!=null && ac.isOwnObject(state) && state.getEntryCode()!=null && !state.getEntryCode().getCommands().isEmpty())
+ result.append(tcv.genEntryOperationCall(state));
+ }
+ else if (node instanceof ExitPoint) {
+ if (state!=null && ac.isOwnObject(state) && state.getExitCode()!=null && !state.getExitCode().getCommands().isEmpty())
+ result.append(tcv.genExitOperationCall(state));
+ }
+ else if (node instanceof TransitionPoint) {
+ if (node==ac.getNode(((NonInitialTransition)tr).getFrom())) {
+ result.append(tcv.genReturnState(getStateContext()));
+ return;
+ }
+ }
+ else {
+ assert(false): "unexpected sub type";
+ }
+ genChainCode(out.get(0), ac, tcv, result);
+ }
+ }
+ else {
+ // the following assertion should always hold true
+ assert(node instanceof State): "A transition target can be a ChoicePoint, a TrPoint or a State!";
+
+ result.append(tcv.genReturnState((State) node));
+ }
+ }
+ }
+
+ private ExpandedActorClass getExpandedActorClass() {
+ EObject obj = getTransition();
+ while (obj!=null) {
+ obj = obj.eContainer();
+ if (obj instanceof ExpandedActorClass)
+ return (ExpandedActorClass) obj;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.TRANSITION_CHAIN__TRANSITION:
+ if (resolve) return getTransition();
+ return basicGetTransition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.TRANSITION_CHAIN__TRANSITION:
+ setTransition((Transition)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.TRANSITION_CHAIN__TRANSITION:
+ setTransition((Transition)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.TRANSITION_CHAIN__TRANSITION:
+ return transition != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TransitionChainImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenAdapterFactory.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenAdapterFactory.java
new file mode 100644
index 000000000..faf325ea7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenAdapterFactory.java
@@ -0,0 +1,507 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.StructureClass;
+
+import org.eclipse.etrice.generator.etricegen.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage
+ * @generated
+ */
+public class ETriceGenAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ETriceGenPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ETriceGenAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ETriceGenPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ETriceGenSwitch<Adapter> modelSwitch =
+ new ETriceGenSwitch<Adapter>() {
+ @Override
+ public Adapter caseRoot(Root object) {
+ return createRootAdapter();
+ }
+ @Override
+ public Adapter caseCounter(Counter object) {
+ return createCounterAdapter();
+ }
+ @Override
+ public Adapter caseInstanceBase(InstanceBase object) {
+ return createInstanceBaseAdapter();
+ }
+ @Override
+ public Adapter caseStructureInstance(StructureInstance object) {
+ return createStructureInstanceAdapter();
+ }
+ @Override
+ public Adapter caseSubSystemInstance(SubSystemInstance object) {
+ return createSubSystemInstanceAdapter();
+ }
+ @Override
+ public Adapter caseActorInstance(ActorInstance object) {
+ return createActorInstanceAdapter();
+ }
+ @Override
+ public Adapter caseInterfaceItemInstance(InterfaceItemInstance object) {
+ return createInterfaceItemInstanceAdapter();
+ }
+ @Override
+ public Adapter casePortInstance(PortInstance object) {
+ return createPortInstanceAdapter();
+ }
+ @Override
+ public Adapter caseBindingInstance(BindingInstance object) {
+ return createBindingInstanceAdapter();
+ }
+ @Override
+ public Adapter caseSAPInstance(SAPInstance object) {
+ return createSAPInstanceAdapter();
+ }
+ @Override
+ public Adapter caseSPPInstance(SPPInstance object) {
+ return createSPPInstanceAdapter();
+ }
+ @Override
+ public Adapter caseServiceImplInstance(ServiceImplInstance object) {
+ return createServiceImplInstanceAdapter();
+ }
+ @Override
+ public Adapter caseConnectionInstance(ConnectionInstance object) {
+ return createConnectionInstanceAdapter();
+ }
+ @Override
+ public Adapter caseActiveTrigger(ActiveTrigger object) {
+ return createActiveTriggerAdapter();
+ }
+ @Override
+ public Adapter caseTransitionChain(TransitionChain object) {
+ return createTransitionChainAdapter();
+ }
+ @Override
+ public Adapter caseITransitionChainVisitor(ITransitionChainVisitor object) {
+ return createITransitionChainVisitorAdapter();
+ }
+ @Override
+ public Adapter caseIDiagnostician(IDiagnostician object) {
+ return createIDiagnosticianAdapter();
+ }
+ @Override
+ public Adapter caseExpandedActorClass(ExpandedActorClass object) {
+ return createExpandedActorClassAdapter();
+ }
+ @Override
+ public Adapter caseRoomClass(RoomClass object) {
+ return createRoomClassAdapter();
+ }
+ @Override
+ public Adapter caseStructureClass(StructureClass object) {
+ return createStructureClassAdapter();
+ }
+ @Override
+ public Adapter caseActorContainerClass(ActorContainerClass object) {
+ return createActorContainerClassAdapter();
+ }
+ @Override
+ public Adapter caseActorClass(ActorClass object) {
+ return createActorClassAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.Root <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.Root
+ * @generated
+ */
+ public Adapter createRootAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.Counter <em>Counter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.Counter
+ * @generated
+ */
+ public Adapter createCounterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.InstanceBase <em>Instance Base</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.InstanceBase
+ * @generated
+ */
+ public Adapter createInstanceBaseAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.StructureInstance <em>Structure Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.StructureInstance
+ * @generated
+ */
+ public Adapter createStructureInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.SubSystemInstance <em>Sub System Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.SubSystemInstance
+ * @generated
+ */
+ public Adapter createSubSystemInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.ActorInstance <em>Actor Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.ActorInstance
+ * @generated
+ */
+ public Adapter createActorInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.InterfaceItemInstance <em>Interface Item Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.InterfaceItemInstance
+ * @generated
+ */
+ public Adapter createInterfaceItemInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.PortInstance <em>Port Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.PortInstance
+ * @generated
+ */
+ public Adapter createPortInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.BindingInstance <em>Binding Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.BindingInstance
+ * @generated
+ */
+ public Adapter createBindingInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.SAPInstance <em>SAP Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.SAPInstance
+ * @generated
+ */
+ public Adapter createSAPInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.SPPInstance <em>SPP Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.SPPInstance
+ * @generated
+ */
+ public Adapter createSPPInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.ServiceImplInstance <em>Service Impl Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.ServiceImplInstance
+ * @generated
+ */
+ public Adapter createServiceImplInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.ConnectionInstance <em>Connection Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.ConnectionInstance
+ * @generated
+ */
+ public Adapter createConnectionInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.ActiveTrigger <em>Active Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.ActiveTrigger
+ * @generated
+ */
+ public Adapter createActiveTriggerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.TransitionChain <em>Transition Chain</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.TransitionChain
+ * @generated
+ */
+ public Adapter createTransitionChainAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link ITransitionChainVisitor <em>ITransition Chain Visitor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see ITransitionChainVisitor
+ * @generated
+ */
+ public Adapter createITransitionChainVisitorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link IDiagnostician <em>IDiagnostician</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see IDiagnostician
+ * @generated
+ */
+ public Adapter createIDiagnosticianAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.generator.etricegen.ExpandedActorClass <em>Expanded Actor Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.generator.etricegen.ExpandedActorClass
+ * @generated
+ */
+ public Adapter createExpandedActorClassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.RoomClass <em>Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.RoomClass
+ * @generated
+ */
+ public Adapter createRoomClassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.StructureClass <em>Structure Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.StructureClass
+ * @generated
+ */
+ public Adapter createStructureClassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ActorContainerClass <em>Actor Container Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ActorContainerClass
+ * @generated
+ */
+ public Adapter createActorContainerClassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.room.ActorClass <em>Actor Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.etrice.core.room.ActorClass
+ * @generated
+ */
+ public Adapter createActorClassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //ETriceGenAdapterFactory
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceFactoryImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceFactoryImpl.java
new file mode 100644
index 000000000..b3e36f4e6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceFactoryImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.util.ETriceGenResourceImpl
+ * @generated
+ */
+public class ETriceGenResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ETriceGenResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ Resource result = new ETriceGenResourceImpl(uri);
+ return result;
+ }
+
+} //ETriceGenResourceFactoryImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceImpl.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceImpl.java
new file mode 100644
index 000000000..e0cc86087
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenResourceImpl.java
@@ -0,0 +1,32 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.util.ETriceGenResourceFactoryImpl
+ * @generated
+ */
+public class ETriceGenResourceImpl extends XMIResourceImpl {
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param uri the URI of the new resource.
+ * @generated
+ */
+ public ETriceGenResourceImpl(URI uri) {
+ super(uri);
+ }
+
+} //ETriceGenResourceImpl
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenSwitch.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenSwitch.java
new file mode 100644
index 000000000..8040b4bb1
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/util/ETriceGenSwitch.java
@@ -0,0 +1,557 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.StructureClass;
+
+import org.eclipse.etrice.generator.etricegen.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.etrice.generator.etricegen.ETriceGenPackage
+ * @generated
+ */
+public class ETriceGenSwitch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ETriceGenPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ETriceGenSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ETriceGenPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ETriceGenPackage.ROOT: {
+ Root root = (Root)theEObject;
+ T result = caseRoot(root);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.COUNTER: {
+ Counter counter = (Counter)theEObject;
+ T result = caseCounter(counter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.INSTANCE_BASE: {
+ InstanceBase instanceBase = (InstanceBase)theEObject;
+ T result = caseInstanceBase(instanceBase);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.STRUCTURE_INSTANCE: {
+ StructureInstance structureInstance = (StructureInstance)theEObject;
+ T result = caseStructureInstance(structureInstance);
+ if (result == null) result = caseInstanceBase(structureInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.SUB_SYSTEM_INSTANCE: {
+ SubSystemInstance subSystemInstance = (SubSystemInstance)theEObject;
+ T result = caseSubSystemInstance(subSystemInstance);
+ if (result == null) result = caseStructureInstance(subSystemInstance);
+ if (result == null) result = caseInstanceBase(subSystemInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.ACTOR_INSTANCE: {
+ ActorInstance actorInstance = (ActorInstance)theEObject;
+ T result = caseActorInstance(actorInstance);
+ if (result == null) result = caseStructureInstance(actorInstance);
+ if (result == null) result = caseInstanceBase(actorInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.INTERFACE_ITEM_INSTANCE: {
+ InterfaceItemInstance interfaceItemInstance = (InterfaceItemInstance)theEObject;
+ T result = caseInterfaceItemInstance(interfaceItemInstance);
+ if (result == null) result = caseInstanceBase(interfaceItemInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.PORT_INSTANCE: {
+ PortInstance portInstance = (PortInstance)theEObject;
+ T result = casePortInstance(portInstance);
+ if (result == null) result = caseInterfaceItemInstance(portInstance);
+ if (result == null) result = caseInstanceBase(portInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.BINDING_INSTANCE: {
+ BindingInstance bindingInstance = (BindingInstance)theEObject;
+ T result = caseBindingInstance(bindingInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.SAP_INSTANCE: {
+ SAPInstance sapInstance = (SAPInstance)theEObject;
+ T result = caseSAPInstance(sapInstance);
+ if (result == null) result = caseInterfaceItemInstance(sapInstance);
+ if (result == null) result = caseInstanceBase(sapInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.SPP_INSTANCE: {
+ SPPInstance sppInstance = (SPPInstance)theEObject;
+ T result = caseSPPInstance(sppInstance);
+ if (result == null) result = caseInstanceBase(sppInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.SERVICE_IMPL_INSTANCE: {
+ ServiceImplInstance serviceImplInstance = (ServiceImplInstance)theEObject;
+ T result = caseServiceImplInstance(serviceImplInstance);
+ if (result == null) result = caseInterfaceItemInstance(serviceImplInstance);
+ if (result == null) result = caseInstanceBase(serviceImplInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.CONNECTION_INSTANCE: {
+ ConnectionInstance connectionInstance = (ConnectionInstance)theEObject;
+ T result = caseConnectionInstance(connectionInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.ACTIVE_TRIGGER: {
+ ActiveTrigger activeTrigger = (ActiveTrigger)theEObject;
+ T result = caseActiveTrigger(activeTrigger);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.TRANSITION_CHAIN: {
+ TransitionChain transitionChain = (TransitionChain)theEObject;
+ T result = caseTransitionChain(transitionChain);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS: {
+ ExpandedActorClass expandedActorClass = (ExpandedActorClass)theEObject;
+ T result = caseExpandedActorClass(expandedActorClass);
+ if (result == null) result = caseActorClass(expandedActorClass);
+ if (result == null) result = caseActorContainerClass(expandedActorClass);
+ if (result == null) result = caseStructureClass(expandedActorClass);
+ if (result == null) result = caseRoomClass(expandedActorClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Root</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Root</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRoot(Root object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Counter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Counter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCounter(Counter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Instance Base</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Instance Base</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInstanceBase(InstanceBase object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Structure Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Structure Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStructureInstance(StructureInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sub System Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sub System Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSubSystemInstance(SubSystemInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorInstance(ActorInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Interface Item Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Interface Item Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInterfaceItemInstance(InterfaceItemInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Port Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Port Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePortInstance(PortInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Binding Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Binding Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBindingInstance(BindingInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>SAP Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>SAP Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSAPInstance(SAPInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>SPP Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>SPP Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSPPInstance(SPPInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Service Impl Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Service Impl Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseServiceImplInstance(ServiceImplInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Connection Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Connection Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConnectionInstance(ConnectionInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Active Trigger</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Active Trigger</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActiveTrigger(ActiveTrigger object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Transition Chain</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Transition Chain</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransitionChain(TransitionChain object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>ITransition Chain Visitor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>ITransition Chain Visitor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITransitionChainVisitor(ITransitionChainVisitor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>IDiagnostician</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>IDiagnostician</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIDiagnostician(IDiagnostician object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Expanded Actor Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Expanded Actor Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExpandedActorClass(ExpandedActorClass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRoomClass(RoomClass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Structure Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Structure Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStructureClass(StructureClass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Container Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Container Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorContainerClass(ActorContainerClass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Actor Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Actor Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseActorClass(ActorClass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //ETriceGenSwitch
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActiveTriggerValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActiveTriggerValidator.java
new file mode 100644
index 000000000..d2968748c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActiveTriggerValidator.java
@@ -0,0 +1,28 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.ActiveTrigger}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ActiveTriggerValidator {
+ boolean validate();
+
+ boolean validateMsg(Message value);
+ boolean validateIfitem(InterfaceItem value);
+ boolean validateTrigger(String value);
+ boolean validateTransitions(EList<TriggeredTransition> value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActorInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActorInstanceValidator.java
new file mode 100644
index 000000000..ad41c5aeb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ActorInstanceValidator.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.ActorClass;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.ActorInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ActorInstanceValidator {
+ boolean validate();
+
+ boolean validateActorClass(ActorClass value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/BindingInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/BindingInstanceValidator.java
new file mode 100644
index 000000000..2149d9a86
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/BindingInstanceValidator.java
@@ -0,0 +1,23 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.generator.etricegen.PortInstance;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.BindingInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface BindingInstanceValidator {
+ boolean validate();
+
+ boolean validatePorts(EList<PortInstance> value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ConnectionInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ConnectionInstanceValidator.java
new file mode 100644
index 000000000..9708ba934
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ConnectionInstanceValidator.java
@@ -0,0 +1,26 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.SPPInstance;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.ConnectionInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ConnectionInstanceValidator {
+ boolean validate();
+
+ boolean validateFromAI(ActorInstance value);
+ boolean validateFromSPP(SPPInstance value);
+ boolean validateToSPP(SPPInstance value);
+ boolean validateConnection(LayerConnection value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/CounterValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/CounterValidator.java
new file mode 100644
index 000000000..8b3346e75
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/CounterValidator.java
@@ -0,0 +1,20 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.Counter}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface CounterValidator {
+ boolean validate();
+
+ boolean validateCounter(int value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ExpandedActorClassValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ExpandedActorClassValidator.java
new file mode 100644
index 000000000..93e0916de
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ExpandedActorClassValidator.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.ActorClass;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.ExpandedActorClass}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ExpandedActorClassValidator {
+ boolean validate();
+
+ boolean validateActorClass(ActorClass value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/IDiagnosticianValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/IDiagnosticianValidator.java
new file mode 100644
index 000000000..ef81d4840
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/IDiagnosticianValidator.java
@@ -0,0 +1,19 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+/**
+ * A sample validator interface for {@link IDiagnostician}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface IDiagnosticianValidator {
+ boolean validate();
+
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ITransitionChainVisitorValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ITransitionChainVisitorValidator.java
new file mode 100644
index 000000000..d8395694d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ITransitionChainVisitorValidator.java
@@ -0,0 +1,19 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+/**
+ * A sample validator interface for {@link ITransitionChainVisitor}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ITransitionChainVisitorValidator {
+ boolean validate();
+
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InstanceBaseValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InstanceBaseValidator.java
new file mode 100644
index 000000000..566d7df0c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InstanceBaseValidator.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.InstanceBase}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface InstanceBaseValidator {
+ boolean validate();
+
+ boolean validateName(String value);
+ boolean validatePath(String value);
+ boolean validateObjId(int value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InterfaceItemInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InterfaceItemInstanceValidator.java
new file mode 100644
index 000000000..9fd44a9bb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/InterfaceItemInstanceValidator.java
@@ -0,0 +1,23 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.InterfaceItemInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface InterfaceItemInstanceValidator {
+ boolean validate();
+
+ boolean validatePeers(EList<InterfaceItemInstance> value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/PortInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/PortInstanceValidator.java
new file mode 100644
index 000000000..32d3248ae
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/PortInstanceValidator.java
@@ -0,0 +1,28 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.generator.etricegen.BindingInstance;
+import org.eclipse.etrice.generator.etricegen.PortKind;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.PortInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface PortInstanceValidator {
+ boolean validate();
+
+ boolean validatePort(Port value);
+ boolean validateKind(PortKind value);
+ boolean validateBindings(EList<BindingInstance> value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/RootValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/RootValidator.java
new file mode 100644
index 000000000..9e8e83888
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/RootValidator.java
@@ -0,0 +1,37 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.Root}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface RootValidator {
+ boolean validate();
+
+ boolean validateSubSystems(EList<SubSystemInstance> value);
+
+ boolean validateComponents(EList<SubSystemInstance> value);
+ boolean validateModels(EList<RoomModel> value);
+ boolean validateXpActorClasses(EList<ExpandedActorClass> value);
+ boolean validateUsedDataClasses(EList<DataClass> value);
+ boolean validateUsedProtocolClasses(EList<ProtocolClass> value);
+ boolean validateUsedActorClasses(EList<ActorClass> value);
+ boolean validateUsedRoomModels(EList<RoomModel> value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SAPInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SAPInstanceValidator.java
new file mode 100644
index 000000000..f726a31fb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SAPInstanceValidator.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.SAPRef;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.SAPInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface SAPInstanceValidator {
+ boolean validate();
+
+ boolean validateSap(SAPRef value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SPPInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SPPInstanceValidator.java
new file mode 100644
index 000000000..ca73aeca0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SPPInstanceValidator.java
@@ -0,0 +1,27 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.generator.etricegen.ConnectionInstance;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.SPPInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface SPPInstanceValidator {
+ boolean validate();
+
+ boolean validateSpp(SPPRef value);
+ boolean validateIncoming(EList<ConnectionInstance> value);
+ boolean validateOutgoing(ConnectionInstance value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ServiceImplInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ServiceImplInstanceValidator.java
new file mode 100644
index 000000000..baeed4d7b
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/ServiceImplInstanceValidator.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.ServiceImplementation;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.ServiceImplInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ServiceImplInstanceValidator {
+ boolean validate();
+
+ boolean validateSvcImpl(ServiceImplementation value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/StructureInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/StructureInstanceValidator.java
new file mode 100644
index 000000000..ca81b4ebb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/StructureInstanceValidator.java
@@ -0,0 +1,38 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.BindingInstance;
+import org.eclipse.etrice.generator.etricegen.ConnectionInstance;
+import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
+import org.eclipse.etrice.generator.etricegen.PortInstance;
+import org.eclipse.etrice.generator.etricegen.SAPInstance;
+import org.eclipse.etrice.generator.etricegen.SPPInstance;
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.StructureInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface StructureInstanceValidator {
+ boolean validate();
+
+ boolean validateInstances(EList<ActorInstance> value);
+ boolean validatePorts(EList<PortInstance> value);
+ boolean validateSaps(EList<SAPInstance> value);
+ boolean validateSpps(EList<SPPInstance> value);
+ boolean validateServices(EList<ServiceImplInstance> value);
+ boolean validateBindings(EList<BindingInstance> value);
+ boolean validateConnections(EList<ConnectionInstance> value);
+ boolean validateAllContainedInstances(EList<ActorInstance> value);
+ boolean validateOrderedIfItemInstances(EList<InterfaceItemInstance> value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SubSystemInstanceValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SubSystemInstanceValidator.java
new file mode 100644
index 000000000..59799e6e0
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/SubSystemInstanceValidator.java
@@ -0,0 +1,23 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.etricegen.Counter;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.SubSystemInstance}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface SubSystemInstanceValidator {
+ boolean validate();
+
+ boolean validateSubSystemClass(SubSystemClass value);
+ boolean validateObjCounter(Counter value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/TransitionChainValidator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/TransitionChainValidator.java
new file mode 100644
index 000000000..20b35e916
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/etricegen/validation/TransitionChainValidator.java
@@ -0,0 +1,24 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.etrice.generator.etricegen.validation;
+
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+
+/**
+ * A sample validator interface for {@link org.eclipse.etrice.generator.etricegen.TransitionChain}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface TransitionChainValidator {
+ boolean validate();
+
+ boolean validateTransition(Transition value);
+
+ boolean validateTransition(TriggeredTransition value);
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/InstanceModelCreator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/InstanceModelCreator.java
new file mode 100644
index 000000000..834505cab
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/InstanceModelCreator.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.workflow;
+
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.mwe2.runtime.workflow.IWorkflowContext;
+
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.generator.builder.InstanceModelBuilder;
+import org.eclipse.etrice.generator.builder.ValidationException;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.util.ETriceGenResourceImpl;
+
+public class InstanceModelCreator extends WorkflowComponentWithTwoSlots {
+
+ private XtendStdlibLogger logger;
+ private InstanceModelBuilder builder;
+ private boolean debug = false;
+ private boolean save = false;
+ private String uri = "tmp.rim";
+ private WorkflowDiagnostician diagnostician;
+
+ public boolean isSave() {
+ return save;
+ }
+
+ public void setSave(boolean save) {
+ this.save = save;
+ }
+
+ public String getUri() {
+ return uri;
+ }
+
+ public void setUri(String uri) {
+ this.uri = uri;
+ }
+
+ public boolean isDebug() {
+ return debug;
+ }
+
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
+ @Override
+ public void invoke(IWorkflowContext ctx) {
+ logger = new XtendStdlibLogger();
+ diagnostician = new WorkflowDiagnostician(logger);
+ if (debug)
+ logger.setVerbose(true);
+ builder = new InstanceModelBuilder(logger, diagnostician);
+
+ List<RoomModel> models = getRoomModels(ctx);
+
+ if (models.size()>0) {
+ Root root = builder.createInstanceModel(models);
+
+ List<Root> result = new LinkedList<Root>();
+ result.add(root);
+ ctx.put(getOutSlot(), result);
+
+ if (save)
+ saveResult(root);
+ }
+ else {
+ logger.logError("InstanceModelCreator: Could not find a RoomModel in input slot "+getInSlot()+".", null);
+ }
+
+ if (logger.getErrorCount()>0)
+ throw new ValidationException("Erros detected.");
+ }
+
+ private List<RoomModel> getRoomModels(IWorkflowContext ctx) {
+ Object object = ctx.get(getInSlot());
+ @SuppressWarnings("unchecked")
+ List<RoomModel> models = (List<RoomModel>) object;
+ return models;
+ }
+
+ private void saveResult(Root root) {
+ URI uri = URI.createFileURI(this.uri);
+ Resource resource = new ETriceGenResourceImpl(uri);
+ resource.getContents().add(root);
+ try {
+ resource.save(null);
+ } catch (IOException e) {
+ throw new WrappedException(e);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowComponentWithTwoSlots.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowComponentWithTwoSlots.java
new file mode 100644
index 000000000..97ab4ac83
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowComponentWithTwoSlots.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.workflow;
+
+import org.eclipse.emf.mwe2.runtime.workflow.IWorkflowComponent;
+
+public abstract class WorkflowComponentWithTwoSlots implements IWorkflowComponent {
+
+ private String inSlot = "model";
+ private String outSlot = "outmodel";
+
+ public void setInSlot(String slot) {
+ this.inSlot = slot;
+ }
+
+ public String getInSlot() {
+ return inSlot;
+ }
+
+ public String getOutSlot() {
+ return outSlot;
+ }
+
+ public void setOutSlot(String outSlot) {
+ this.outSlot = outSlot;
+ }
+
+ public void postInvoke() {
+ }
+
+ public void preInvoke() {
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowDiagnostician.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowDiagnostician.java
new file mode 100644
index 000000000..8f885c2e9
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/WorkflowDiagnostician.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.workflow;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.naming.RoomNameProvider;
+import org.eclipse.etrice.generator.builder.ILogger;
+import org.eclipse.etrice.generator.etricegen.IDiagnostician;
+
+
+public class WorkflowDiagnostician implements IDiagnostician {
+
+ private ILogger logger;
+ private boolean failed = false;
+
+ public WorkflowDiagnostician(ILogger logger) {
+ this.logger = logger;
+ }
+
+ @Override
+ public void warning(String msg, EObject source) {
+ warning(msg, source, -1);
+ }
+
+ @Override
+ public void warning(String msg, EObject source, int feature) {
+ String location = RoomNameProvider.getLocation(source);
+ if (location==null || location.isEmpty())
+ logger.logInfo(msg);
+ else
+ logger.logInfo(msg+" @ "+location);
+ }
+
+ @Override
+ public void error(String msg, EObject source) {
+ error(msg, source, -1);
+ }
+
+ @Override
+ public void error(String msg, EObject source, int feature) {
+ failed = true;
+ String location = RoomNameProvider.getLocation(source);
+ if (location==null || location.isEmpty())
+ logger.logError(msg, source);
+ else
+ logger.logError(msg+" @ "+location, source);
+ }
+
+ @Override
+ public boolean isFailed() {
+ return failed;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/XtendStdlibLogger.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/XtendStdlibLogger.java
new file mode 100644
index 000000000..2908a2306
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/workflow/XtendStdlibLogger.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.generator.workflow;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.generator.builder.ILogger;
+import org.eclipse.xtend.util.stdlib.IOExtensions;
+
+
+public class XtendStdlibLogger implements ILogger {
+
+ private boolean verbose = false;
+ private int errorCount = 0;
+
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ @Override
+ public void logInfo(String text) {
+ if (isVerbose())
+ IOExtensions.info(text);
+ }
+
+ @Override
+ public void logError(String text, EObject obj) {
+ errorCount++;
+ IOExtensions.error(text);
+ }
+
+ public int getErrorCount() {
+ return errorCount;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.generator/text/description.txt b/plugins/org.eclipse.etrice.generator/text/description.txt
new file mode 100644
index 000000000..1cc5c05c4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator/text/description.txt
@@ -0,0 +1,120 @@
+Model eTriceGen
+
+This model description is not a real EMF artifact. It was generated by the
+org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+code generator can be extended.
+This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+
+Package etricegen <http://www.eclipse.org/etrice/generator>
+
+ Class Root
+ Reference subSystems : SubSystemInstance<<0..*>>
+ Reference models : RoomModel<<0..*>>
+ Reference xpActorClasses : ExpandedActorClass<<0..*>>
+ Reference /usedDataClasses : DataClass<<0..*>>
+ Reference /usedProtocolClasses : ProtocolClass<<0..*>>
+ Reference /usedActorClasses : ActorClass<<0..*>>
+ Reference /usedRoomModels : RoomModel<<0..*>>
+ Operation getReferencedModels(RoomClass) : RoomModel<<0..*>>
+ Operation getReferencedProtocols(ActorClass) : ProtocolClass<<0..*>>
+
+ Class Counter
+ Attribute counter : EInt
+ Operation getAndIncrementCount() : EInt
+ Operation getAndIncrementCount(EInt) : EInt
+
+ Class InstanceBase
+ Attribute name : EString
+ Attribute /path : EString
+ Attribute objId : EInt
+
+ Class StructureInstance -> InstanceBase
+ Reference instances : ActorInstance<<0..*>>
+ Reference ports : PortInstance<<0..*>>
+ Reference saps : SAPInstance<<0..*>>
+ Reference spps : SPPInstance<<0..*>>
+ Reference services : ServiceImplInstance<<0..*>>
+ Reference bindings : BindingInstance<<0..*>>
+ Reference connections : ConnectionInstance<<0..*>>
+ Reference /allContainedInstances : ActorInstance<<0..*>>
+ Reference /orderedIfItemInstances : InterfaceItemInstance<<0..*>>
+
+ Class SubSystemInstance -> StructureInstance
+ Reference subSystemClass : SubSystemClass
+ Reference objCounter : Counter
+
+ Class ActorInstance -> StructureInstance
+ Reference actorClass : ActorClass
+
+ Class InterfaceItemInstance -> InstanceBase
+ Reference peers : InterfaceItemInstance<<0..*>>
+
+ Class PortInstance -> InterfaceItemInstance
+ Reference port : Port
+ Attribute kind : PortKind
+ Reference bindings : BindingInstance<<0..*>>
+
+ Class BindingInstance
+ Reference ports : PortInstance<<0..2>>
+
+ Class SAPInstance -> InterfaceItemInstance
+ Reference sap : SAPRef
+
+ Class SPPInstance -> InstanceBase
+ Reference spp : SPPRef
+ Reference incoming : ConnectionInstance<<0..*>>
+ Reference outgoing : ConnectionInstance
+
+ Class ServiceImplInstance -> InterfaceItemInstance
+ Reference svcImpl : ServiceImplementation
+
+ Class ConnectionInstance
+ Reference fromAI : ActorInstance
+ Reference fromSPP : SPPInstance
+ Reference toSPP : SPPInstance
+ Reference connection : LayerConnection
+
+ Class ActiveTrigger
+ Reference msg : Message
+ Reference ifitem : InterfaceItem
+ Attribute trigger : EString
+ Reference transitions : TriggeredTransition<<0..*>>
+
+ Class TransitionChain
+ Reference transition : Transition
+ Operation getStateContext() : State
+ Operation isHandler() : EBoolean
+ Operation genExecuteChain(ITransitionChainVisitor) : EString
+
+ Class ITransitionChainVisitor
+
+ Class IDiagnostician
+
+ Class ExpandedActorClass -> ActorClass
+ Reference actorClass : ActorClass
+ Operation prepare(IDiagnostician) : void
+ Operation release() : void
+ Operation addOwnObject(StateGraphItem) : void
+ Operation isOwnObject(StateGraphItem) : EBoolean
+ Operation getInterfaceItemLocalId(InterfaceItem) : EInt
+ Operation hasStateMachine() : EBoolean
+ Operation getCode(DetailCode) : EString
+ Operation getTriggerCodeName(MessageFromIf) : EString
+ Operation getTriggerCodeName(EString) : EString
+ Operation getOutgoingTransitions(StateGraphNode) : Transition<<0..*>>
+ Operation getIncomingTransitions(StateGraphNode) : Transition<<0..*>>
+ Operation getActiveTriggers(State) : ActiveTrigger<<0..*>>
+ Operation getTriggers() : MessageFromIf<<0..*>>
+ Operation getOwnTriggers() : MessageFromIf<<0..*>>
+ Operation getMessageID(MessageFromIf) : EString
+ Operation getChain(Transition) : TransitionChain
+ Operation getTransitionChains() : TransitionChain<<0..*>>
+ Operation getOwnTransitionChains() : TransitionChain<<0..*>>
+ Operation getNode(TransitionTerminal) : StateGraphNode
+ Operation isMatching(Trigger, EString) : EBoolean
+ Operation getDefaultBranch(Transition<<0..*>>) : ContinuationTransition
+
+ Enum PortKind
+ Literal external = 0
+ Literal internal = 1
+ Literal relay = 2
diff --git a/plugins/org.eclipse.etrice.ui.structure/.gitignore b/plugins/org.eclipse.etrice.ui.structure/.gitignore
new file mode 100644
index 000000000..ba077a403
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/plugins/org.eclipse.etrice.ui.structure/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.etrice.ui.structure/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..244bc70d5
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Thu Oct 14 15:48:59 CEST 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..89ed8b89a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Actor Structure Diagram Editor
+Bundle-SymbolicName: org.eclipse.etrice.ui.structure;singleton:=true
+Bundle-Version: 0.1.0
+Bundle-Activator: org.eclipse.etrice.ui.structure.Activator
+Bundle-Vendor: eTrice (Incubation)
+Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0",
+ org.eclipse.graphiti;bundle-version="0.7.0",
+ org.eclipse.graphiti.ui;bundle-version="0.7.0",
+ org.eclipse.ui;bundle-version="3.6.0",
+ org.eclipse.ui.ide;bundle-version="3.6.0",
+ org.eclipse.ui.forms;bundle-version="3.5.0",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
+ org.eclipse.jface.databinding;bundle-version="1.4.0",
+ org.eclipse.core.databinding;bundle-version="1.3.100",
+ org.eclipse.core.databinding.property;bundle-version="1.3.0",
+ org.eclipse.core.databinding.beans;bundle-version="1.2.100",
+ org.eclipse.gef;bundle-version="3.6.1",
+ org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
+ org.eclipse.emf.transaction;bundle-version="1.4.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.etrice.ui.structure
diff --git a/plugins/org.eclipse.etrice.ui.structure/about.html b/plugins/org.eclipse.etrice.ui.structure/about.html
new file mode 100644
index 000000000..f47dbddbb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.ui.structure/build.properties b/plugins/org.eclipse.etrice.ui.structure/build.properties
new file mode 100644
index 000000000..6f20375d6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/plugins/org.eclipse.etrice.ui.structure/icons/ActorRef.gif b/plugins/org.eclipse.etrice.ui.structure/icons/ActorRef.gif
new file mode 100644
index 000000000..0612a135a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/icons/ActorRef.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.ui.structure/icons/Binding.gif b/plugins/org.eclipse.etrice.ui.structure/icons/Binding.gif
new file mode 100644
index 000000000..ed0f9d538
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/icons/Binding.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.ui.structure/icons/LayerConnection.gif b/plugins/org.eclipse.etrice.ui.structure/icons/LayerConnection.gif
new file mode 100644
index 000000000..e4a039931
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/icons/LayerConnection.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.ui.structure/icons/Port.gif b/plugins/org.eclipse.etrice.ui.structure/icons/Port.gif
new file mode 100644
index 000000000..0f2d60916
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/icons/Port.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.ui.structure/icons/SPP.gif b/plugins/org.eclipse.etrice.ui.structure/icons/SPP.gif
new file mode 100644
index 000000000..9ee0fb14c
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/icons/SPP.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.ui.structure/icons/Structure.gif b/plugins/org.eclipse.etrice.ui.structure/icons/Structure.gif
new file mode 100644
index 000000000..ab2f7c013
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/icons/Structure.gif
Binary files differ
diff --git a/plugins/org.eclipse.etrice.ui.structure/plugin.xml b/plugins/org.eclipse.etrice.ui.structure/plugin.xml
new file mode 100644
index 000000000..84d551c82
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/plugin.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.graphiti.ui.diagramTypes">
+ <diagramType
+ id="org.eclipse.etrice.ui.structure.diagramType"
+ name="ROOM Structure Diagram Type"
+ type="room.structure">
+ </diagramType>
+ </extension>
+ <extension
+ point="org.eclipse.graphiti.ui.diagramTypeProviders">
+ <diagramTypeProvider
+ class="org.eclipse.etrice.ui.structure.DiagramTypeProvider"
+ id="org.eclipse.etrice.ui.structure.diagramTypeProvider"
+ name="ROOM Structure Editor">
+ <diagramType
+ id="org.eclipse.etrice.ui.structure.diagramType">
+ </diagramType>
+ <imageProvider
+ id="org.eclipse.etrice.ui.structure.ImageProvider">
+ </imageProvider>
+ </diagramTypeProvider>
+ </extension>
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ class="org.eclipse.etrice.ui.structure.editor.StructureEditor"
+ contributorClass="org.eclipse.graphiti.ui.editor.DiagramEditorActionBarContributor"
+ default="true"
+ extensions="structure"
+ icon="icons/Structure.gif"
+ id="org.eclipse.etrice.ui.structure.editor.StructureEditor"
+ matchingStrategy="org.eclipse.graphiti.ui.editor.DiagramEditorFactory$DiagramEditorMatchingStrategy"
+ name="ROOM Structure Editor">
+ <contentTypeBinding
+ contentTypeId="org.eclipse.graphiti.content.diagram">
+ </contentTypeBinding>
+ </editor>
+ </extension>
+
+ <extension
+ point="org.eclipse.graphiti.ui.imageProviders">
+ <imageProvider
+ class="org.eclipse.etrice.ui.structure.ImageProvider"
+ id="org.eclipse.etrice.ui.structure.ImageProvider">
+ </imageProvider>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/Activator.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/Activator.java
new file mode 100644
index 000000000..bef54381d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/Activator.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure;
+
+import org.osgi.framework.BundleContext;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+public class Activator extends AbstractUIPlugin {
+
+ // The shared instance
+ private static Activator plugin;
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.etrice.ui.structure";
+
+ private ImageRegistry imageRegistry = new ImageRegistry();
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin.imageRegistry.dispose();
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path
+ *
+ * @param path
+ * the path
+ * @return the image descriptor
+ */
+ public static Image getImage(String path) {
+ Image img = getDefault().imageRegistry.get(path);
+ if (img==null) {
+ ImageDescriptor desc = imageDescriptorFromPlugin(PLUGIN_ID, path);
+ if (desc==null)
+ System.err.println("image not found: "+path);
+ else {
+ getDefault().imageRegistry.put(path, desc);
+ getDefault().imageRegistry.get(path);
+ }
+ }
+ return img;
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramAccess.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramAccess.java
new file mode 100644
index 000000000..6f3a95642
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramAccess.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure;
+
+import java.io.IOException;
+import java.util.Collections;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.etrice.ui.structure.commands.PopulateDiagramCommand;
+import org.eclipse.etrice.ui.structure.editor.StructureEditor;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.StructureClass;
+
+public class DiagramAccess {
+
+ private static final String DIAGRAMS_FOLDER_NAME = "diagrams";
+
+ public static Diagram getDiagram(StructureClass sc) {
+ Resource resource = sc.eResource();
+ if (resource==null)
+ return null;
+
+ URI uri = resource.getURI();
+ if (!uri.isPlatformResource())
+ return null;
+
+ uri = uri.trimSegments(1);
+ IFolder parentFolder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(uri.toPlatformString(true)));
+
+ IFolder diagramFolder = parentFolder.getFolder(DIAGRAMS_FOLDER_NAME);
+
+ RoomModel model = (RoomModel) sc.eContainer();
+
+ IFile diagramFile = diagramFolder.getFile(model.getName()+"."+sc.getName()+".structure");
+ URI diagURI = URI.createPlatformResourceURI(diagramFile.getFullPath().toString(), true);
+
+ ResourceSet rs = new ResourceSetImpl();
+ if (diagramFile.exists()) {
+ Resource diagRes = rs.getResource(diagURI, true);
+ if (diagRes.getContents().isEmpty())
+ return null;
+ if (diagRes.getContents().get(0) instanceof Diagram)
+ return (Diagram) diagRes.getContents().get(0);
+ }
+ else {
+ Resource diagRes = rs.createResource(diagURI);
+
+ Diagram diagram = Graphiti.getPeCreateService().createDiagram("room.structure", "Structure of "+sc.getName(), true);
+ diagRes.getContents().add(diagram);
+
+ populatediagram(sc, diagram);
+
+ try {
+ diagRes.save(Collections.EMPTY_MAP);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return diagram;
+ }
+
+ return null;
+ }
+
+ private static void populatediagram(StructureClass ac, Diagram diagram) {
+ ResourceSet rs = diagram.eResource().getResourceSet();
+ TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(rs);
+ if (editingDomain == null) {
+ // Not yet existing, create one
+ editingDomain = TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain(rs);
+ }
+
+ // IMPORTANT STEP: this resolves the object and creates a new resource in the resource set
+ URI boUri = EcoreUtil.getURI(ac);
+ ac = (StructureClass) editingDomain.getResourceSet().getEObject(boUri, true);
+
+ editingDomain.getCommandStack().execute(new PopulateDiagramCommand(diagram, ac, editingDomain));
+ editingDomain.dispose();
+ }
+
+ public static void openDiagramEditor(StructureClass sc) {
+ Diagram diagram = getDiagram(sc);
+
+ String platformString = diagram.eResource().getURI().toPlatformString(true);
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(platformString));
+ IFileEditorInput input = new FileEditorInput(file);
+
+ try {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(input, StructureEditor.STRUCTURE_EDITOR_ID);
+ } catch (PartInitException e) {
+ String error = "Error while opening diagram editor";
+ System.err.println(error);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramTypeProvider.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramTypeProvider.java
new file mode 100644
index 000000000..fc9fa1e7d
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/DiagramTypeProvider.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure;
+
+import org.eclipse.graphiti.dt.AbstractDiagramTypeProvider;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+
+public class DiagramTypeProvider extends AbstractDiagramTypeProvider {
+
+ private IToolBehaviorProvider[] toolBehaviorProviders;
+ private ProviderDispatcher dispatcher;
+
+ public DiagramTypeProvider() {
+ super();
+ dispatcher = new ProviderDispatcher(this);
+ setFeatureProvider(dispatcher.getFeatureProvider());
+ }
+
+ @Override
+ public IToolBehaviorProvider[] getAvailableToolBehaviorProviders() {
+ if (toolBehaviorProviders == null) {
+ toolBehaviorProviders =
+ new IToolBehaviorProvider[] {
+ dispatcher.getToolBehaviorProvider() };
+ }
+ return toolBehaviorProviders;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ImageProvider.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ImageProvider.java
new file mode 100644
index 000000000..427981d8a
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ImageProvider.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure;
+
+import org.eclipse.graphiti.ui.platform.AbstractImageProvider;
+
+public class ImageProvider extends AbstractImageProvider {
+
+ // The prefix for all identifiers of this image provider
+ protected static final String PREFIX = "org.eclipse.etrice.ui.structure.";
+
+ // The image identifier for an EReference.
+ public static final String IMG_PORT = PREFIX + "port";
+ public static final String IMG_SPP = PREFIX + "spp";
+ public static final String IMG_REF = PREFIX + "ref";
+ public static final String IMG_BINDING = PREFIX + "binding";
+ public static final String IMG_LAYER_CONNECTION = PREFIX + "layer_connection";
+
+ @Override
+ protected void addAvailableImages() {
+ addImageFilePath(IMG_PORT, "icons/Port.gif");
+ addImageFilePath(IMG_SPP, "icons/SPP.gif");
+ addImageFilePath(IMG_REF, "icons/ActorRef.gif");
+ addImageFilePath(IMG_BINDING, "icons/Binding.gif");
+ addImageFilePath(IMG_LAYER_CONNECTION, "icons/LayerConnection.gif");
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/NoResizeFeature.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/NoResizeFeature.java
new file mode 100644
index 000000000..d88dd3129
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/NoResizeFeature.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IResizeConfiguration;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.impl.DefaultResizeShapeFeature;
+
+public class NoResizeFeature extends DefaultResizeShapeFeature {
+
+ public NoResizeFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canResizeShape(IResizeShapeContext context) {
+ return false;
+ }
+
+ @Override
+ public IResizeConfiguration getResizeConfiguration() {
+ return new IResizeConfiguration() {
+
+ @Override
+ public boolean isVerticalResizeAllowed() {
+ return false;
+ }
+
+ @Override
+ public boolean isHorizantalResizeAllowed() {
+ return false;
+ }
+ };
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ProviderDispatcher.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ProviderDispatcher.java
new file mode 100644
index 000000000..03c36b772
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/ProviderDispatcher.java
@@ -0,0 +1,425 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure;
+
+import java.util.Arrays;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.naming.RoomFragmentProvider;
+import org.eclipse.etrice.ui.structure.support.ActorContainerRefSupport;
+import org.eclipse.etrice.ui.structure.support.BindingSupport;
+import org.eclipse.etrice.ui.structure.support.LayerConnectionSupport;
+import org.eclipse.etrice.ui.structure.support.PortSupport;
+import org.eclipse.etrice.ui.structure.support.SPPSupport;
+import org.eclipse.etrice.ui.structure.support.StructureClassSupport;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateConnectionFeature;
+import org.eclipse.graphiti.features.ICreateFeature;
+import org.eclipse.graphiti.features.IDeleteFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.ILayoutFeature;
+import org.eclipse.graphiti.features.IMoveShapeFeature;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.IResizeShapeFeature;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICustomContext;
+import org.eclipse.graphiti.features.context.IDeleteContext;
+import org.eclipse.graphiti.features.context.IDoubleClickContext;
+import org.eclipse.graphiti.features.context.ILayoutContext;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
+import org.eclipse.graphiti.features.context.IPictogramElementContext;
+import org.eclipse.graphiti.features.context.IRemoveContext;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.custom.ICustomFeature;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider;
+import org.eclipse.graphiti.tb.IContextButtonPadData;
+import org.eclipse.graphiti.tb.ISelectionInfo;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.graphiti.tb.SelectionInfoImpl;
+import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
+import org.eclipse.graphiti.util.IColorConstant;
+
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.core.room.util.RoomSwitch;
+
+public class ProviderDispatcher {
+
+ private class FeatureProviderSwitch extends RoomSwitch<IFeatureProvider> {
+ @Override
+ public IFeatureProvider doSwitch(EObject theEObject) {
+
+ if (theEObject==null)
+ return null;
+
+ if (theEObject.eIsProxy()) {
+ if (RoomFragmentProvider.isPort(theEObject))
+ return portSupport.getFeatureProvider();
+ if (RoomFragmentProvider.isSPP(theEObject))
+ return sppSupport.getFeatureProvider();
+ if (RoomFragmentProvider.isStructureClass(theEObject))
+ return structureClassSupport.getFeatureProvider();
+ if (RoomFragmentProvider.isBinding(theEObject))
+ return bindingSupport.getFeatureProvider();
+ if (RoomFragmentProvider.isLayerConnection(theEObject))
+ return layerConnectionSupport.getFeatureProvider();
+ if (RoomFragmentProvider.isRef(theEObject))
+ return actorContainerRefSupport.getFeatureProvider();
+ }
+ return super.doSwitch(theEObject);
+ }
+
+ @Override
+ public IFeatureProvider caseStructureClass(StructureClass object) {
+ return structureClassSupport.getFeatureProvider();
+ }
+
+ @Override
+ public IFeatureProvider casePort(Port port) {
+ return portSupport.getFeatureProvider();
+ }
+
+ @Override
+ public IFeatureProvider caseSPPRef(SPPRef object) {
+ return sppSupport.getFeatureProvider();
+ }
+ @Override
+ public IFeatureProvider caseActorContainerRef(ActorContainerRef object) {
+ return actorContainerRefSupport.getFeatureProvider();
+ }
+
+ @Override
+ public IFeatureProvider caseBinding(Binding object) {
+ return bindingSupport.getFeatureProvider();
+ }
+
+ @Override
+ public IFeatureProvider caseLayerConnection(LayerConnection object) {
+ return layerConnectionSupport.getFeatureProvider();
+ }
+
+ @Override
+ public IFeatureProvider defaultCase(EObject object) {
+ return null;
+ }
+
+ public ICreateFeature[] getCreateFeatures() {
+ return concatAll(
+ structureClassSupport.getFeatureProvider().getCreateFeatures(),
+ portSupport.getFeatureProvider().getCreateFeatures(),
+ sppSupport.getFeatureProvider().getCreateFeatures(),
+ actorContainerRefSupport.getFeatureProvider().getCreateFeatures()
+ );
+ }
+
+ public ICreateConnectionFeature[] getCreateConnectionFeatures() {
+ return concatAll(
+ bindingSupport.getFeatureProvider().getCreateConnectionFeatures(),
+ layerConnectionSupport.getFeatureProvider().getCreateConnectionFeatures()
+ );
+ }
+
+ public ICustomFeature[] getCustomFeatures(ICustomContext context) {
+ return concatAll(
+ portSupport.getFeatureProvider().getCustomFeatures(context),
+ sppSupport.getFeatureProvider().getCustomFeatures(context),
+ actorContainerRefSupport.getFeatureProvider().getCustomFeatures(context)
+ );
+ }
+ }
+
+ private class ToolBehaviorProviderSwitch extends RoomSwitch<IToolBehaviorProvider> {
+ @Override
+ public IToolBehaviorProvider doSwitch(EObject theEObject) {
+
+ if (theEObject==null)
+ return null;
+
+ if (theEObject.eIsProxy()) {
+ if (RoomFragmentProvider.isPort(theEObject))
+ return portSupport.getToolBehaviorProvider();
+ if (RoomFragmentProvider.isSPP(theEObject))
+ return sppSupport.getToolBehaviorProvider();
+ if (RoomFragmentProvider.isStructureClass(theEObject))
+ return structureClassSupport.getToolBehaviorProvider();
+ if (RoomFragmentProvider.isBinding(theEObject))
+ return bindingSupport.getToolBehaviorProvider();
+ if (RoomFragmentProvider.isLayerConnection(theEObject))
+ return layerConnectionSupport.getToolBehaviorProvider();
+ if (RoomFragmentProvider.isRef(theEObject))
+ return actorContainerRefSupport.getToolBehaviorProvider();
+ }
+
+ return super.doSwitch(theEObject);
+ }
+
+ @Override
+ public IToolBehaviorProvider caseStructureClass(StructureClass object) {
+ return structureClassSupport.getToolBehaviorProvider();
+ }
+
+ @Override
+ public IToolBehaviorProvider casePort(Port port) {
+ return portSupport.getToolBehaviorProvider();
+ }
+
+ @Override
+ public IToolBehaviorProvider caseSPPRef(SPPRef object) {
+ return sppSupport.getToolBehaviorProvider();
+ }
+
+ @Override
+ public IToolBehaviorProvider caseActorContainerRef(ActorContainerRef object) {
+ return actorContainerRefSupport.getToolBehaviorProvider();
+ }
+
+ @Override
+ public IToolBehaviorProvider caseBinding(Binding object) {
+ return bindingSupport.getToolBehaviorProvider();
+ }
+
+ @Override
+ public IToolBehaviorProvider caseLayerConnection(LayerConnection object) {
+ return layerConnectionSupport.getToolBehaviorProvider();
+ }
+
+ @Override
+ public IToolBehaviorProvider defaultCase(EObject object) {
+ return null;
+ }
+
+ }
+
+ private class DispatchingFeatureProvider extends DefaultFeatureProvider {
+
+ public DispatchingFeatureProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+
+ @Override
+ public ICreateFeature[] getCreateFeatures() {
+ return getAllCreateFeatures();
+ }
+
+ @Override
+ public ICreateConnectionFeature[] getCreateConnectionFeatures() {
+ return getAllCreateConnectionFeatures();
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IAddContext context) {
+ IFeatureProvider fp = featureSwitch.doSwitch(((EObject) context.getNewObject()));
+ if (fp==null)
+ return super.getAddFeature(context);
+ else
+ return fp.getAddFeature(context);
+ }
+
+ @Override
+ public ILayoutFeature getLayoutFeature(ILayoutContext context) {
+ IFeatureProvider fp = featureSwitch.doSwitch(getBusinessObject(context));
+ if (fp==null)
+ return super.getLayoutFeature(context);
+ else
+ return fp.getLayoutFeature(context);
+ }
+
+ @Override
+ public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context) {
+ IFeatureProvider fp = featureSwitch.doSwitch(getBusinessObject(context));
+ if (fp==null)
+ return super.getMoveShapeFeature(context);
+ else
+ return fp.getMoveShapeFeature(context);
+ }
+
+ @Override
+ public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context) {
+ IFeatureProvider fp = featureSwitch.doSwitch(getBusinessObject(context));
+ if (fp==null)
+ return super.getResizeShapeFeature(context);
+ else
+ return fp.getResizeShapeFeature(context);
+ }
+
+ @Override
+ public IUpdateFeature getUpdateFeature(IUpdateContext context) {
+ IFeatureProvider fp = featureSwitch.doSwitch(getBusinessObject(context));
+ if (fp!=null)
+ return fp.getUpdateFeature(context);
+ else
+ return super.getUpdateFeature(context);
+ }
+
+ @Override
+ public IDeleteFeature getDeleteFeature(IDeleteContext context) {
+ IFeatureProvider fp = featureSwitch.doSwitch(getBusinessObject(context));
+ if (fp!=null)
+ return fp.getDeleteFeature(context);
+ else
+ return super.getDeleteFeature(context);
+ }
+
+ @Override
+ public IRemoveFeature getRemoveFeature(IRemoveContext context) {
+ IFeatureProvider fp = featureSwitch.doSwitch(getBusinessObject(context));
+ if (fp!=null)
+ return fp.getRemoveFeature(context);
+ else
+ return super.getRemoveFeature(context);
+ }
+
+ @Override
+ public ICustomFeature[] getCustomFeatures(ICustomContext context) {
+ return getAllCustomFeatures(context);
+ }
+
+ private EObject getBusinessObject(IPictogramElementContext context) {
+ PictogramElement pictogramElement = context.getPictogramElement();
+ EObject bo = (EObject) getBusinessObjectForPictogramElement(pictogramElement);
+ return bo;
+ }
+ }
+
+ private class DispatchingToolBehaviorProvider extends DefaultToolBehaviorProvider {
+
+ public DispatchingToolBehaviorProvider(IDiagramTypeProvider diagramTypeProvider) {
+ super(diagramTypeProvider);
+ }
+
+ @Override
+ public GraphicsAlgorithm[] getClickArea(PictogramElement pe) {
+ IToolBehaviorProvider bp = getToolBehaviorProvider(pe);
+ if (bp==null)
+ return super.getClickArea(pe);
+ else
+ return bp.getClickArea(pe);
+ }
+
+ @Override
+ public GraphicsAlgorithm getSelectionBorder(PictogramElement pe) {
+ IToolBehaviorProvider bp = getToolBehaviorProvider(pe);
+ if (bp==null)
+ return super.getSelectionBorder(pe);
+ else
+ return bp.getSelectionBorder(pe);
+ }
+
+ @Override
+ public ICustomFeature getDoubleClickFeature(IDoubleClickContext context) {
+ IToolBehaviorProvider bp = getToolBehaviorProvider(context.getPictogramElements()[0]);
+ if (bp==null)
+ return super.getDoubleClickFeature(context);
+ else
+ return bp.getDoubleClickFeature(context);
+ }
+
+ protected IToolBehaviorProvider getToolBehaviorProvider(PictogramElement pe) {
+ IFeatureProvider fp = getFeatureProvider();
+ EObject bo = (EObject) fp.getBusinessObjectForPictogramElement(pe);
+ if (bo==null)
+ return null;
+
+ IToolBehaviorProvider bp = behaviorSwitch.doSwitch(bo);
+ return bp;
+ }
+
+ @Override
+ public IContextButtonPadData getContextButtonPad(IPictogramElementContext context) {
+ IToolBehaviorProvider bp = getToolBehaviorProvider(context.getPictogramElement());
+ if (bp==null)
+ return super.getContextButtonPad(context);
+ else
+ return bp.getContextButtonPad(context);
+ }
+
+ public ISelectionInfo getSelectionInfoForShape(Shape shape) {
+ ISelectionInfo si = new SelectionInfoImpl(IColorConstant.SHAPE_SELECTION_FG, IColorConstant.HANDLE_FG, IColorConstant.HANDLE_BG,
+ LineStyle.DASH);
+// si.setPrimarySelectionBackgroundColor(IColorConstant.LIGHT_GRAY);
+// si.setSecondarySelectionBackgroundColor(IColorConstant.LIGHT_GRAY);
+ return si;
+ }
+ }
+
+ private StructureClassSupport structureClassSupport;
+ private PortSupport portSupport;
+ private SPPSupport sppSupport;
+ private ActorContainerRefSupport actorContainerRefSupport;
+ private BindingSupport bindingSupport;
+ private LayerConnectionSupport layerConnectionSupport;
+
+ private FeatureProviderSwitch featureSwitch;
+ private ToolBehaviorProviderSwitch behaviorSwitch;
+
+ private DispatchingFeatureProvider dispatchingFP;
+ private DispatchingToolBehaviorProvider dispatchingBP;
+
+
+ public ProviderDispatcher(IDiagramTypeProvider dtp) {
+ // create those first before using them
+ dispatchingFP = new DispatchingFeatureProvider(dtp);
+ dispatchingBP = new DispatchingToolBehaviorProvider(dtp);
+
+ structureClassSupport = new StructureClassSupport(dtp, dispatchingFP);
+ portSupport = new PortSupport(dtp, dispatchingFP);
+ sppSupport = new SPPSupport(dtp, dispatchingFP);
+ actorContainerRefSupport = new ActorContainerRefSupport(dtp, dispatchingFP);
+ bindingSupport = new BindingSupport(dtp, dispatchingFP);
+ layerConnectionSupport = new LayerConnectionSupport(dtp, dispatchingFP);
+
+ featureSwitch = new FeatureProviderSwitch();
+ behaviorSwitch = new ToolBehaviorProviderSwitch();
+ }
+
+ public IFeatureProvider getFeatureProvider() {
+ return dispatchingFP;
+ }
+
+ public IToolBehaviorProvider getToolBehaviorProvider() {
+ return dispatchingBP;
+ }
+
+ private ICreateFeature[] getAllCreateFeatures() {
+ return featureSwitch.getCreateFeatures();
+ }
+
+ private ICreateConnectionFeature[] getAllCreateConnectionFeatures() {
+ return featureSwitch.getCreateConnectionFeatures();
+ }
+
+ private ICustomFeature[] getAllCustomFeatures(ICustomContext context) {
+ return featureSwitch.getCustomFeatures(context);
+ }
+
+ private static <T> T[] concatAll(T[] first, T[]... rest) {
+ int totalLength = first.length;
+ for (T[] array : rest) {
+ totalLength += array.length;
+ }
+ T[] result = Arrays.copyOf(first, totalLength);
+ int offset = first.length;
+ for (T[] array : rest) {
+ System.arraycopy(array, 0, result, offset, array.length);
+ offset += array.length;
+ }
+ return result;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/commands/PopulateDiagramCommand.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/commands/PopulateDiagramCommand.java
new file mode 100644
index 000000000..90bca41b6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/commands/PopulateDiagramCommand.java
@@ -0,0 +1,353 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.commands;
+
+import java.util.HashMap;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.etrice.ui.structure.DiagramAccess;
+import org.eclipse.etrice.ui.structure.support.ActorContainerRefSupport;
+import org.eclipse.etrice.ui.structure.support.PortSupport;
+import org.eclipse.etrice.ui.structure.support.StructureClassSupport;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.impl.AddConnectionContext;
+import org.eclipse.graphiti.features.context.impl.AddContext;
+import org.eclipse.graphiti.mm.pictograms.Anchor;
+import org.eclipse.graphiti.mm.pictograms.Connection;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.ui.services.GraphitiUi;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.SAPoint;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SPPoint;
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.LogicalSystem;
+
+public class PopulateDiagramCommand extends RecordingCommand {
+
+ private static final String SEP = "#";
+
+ private StructureClass sc;
+ private Diagram diagram;
+
+ public PopulateDiagramCommand(Diagram diag, StructureClass sc, TransactionalEditingDomain domain) {
+ super(domain);
+ this.diagram = diag;
+ this.sc = sc;
+ }
+
+ @Override
+ protected void doExecute() {
+ IDiagramTypeProvider dtp = GraphitiUi.getExtensionManager().createDiagramTypeProvider(diagram, "org.eclipse.etrice.ui.structure.diagramTypeProvider"); //$NON-NLS-1$
+ IFeatureProvider featureProvider = dtp.getFeatureProvider();
+
+ AddContext addContext = new AddContext();
+ addContext.setNewObject(sc);
+ addContext.setTargetContainer(diagram);
+ addContext.setX(StructureClassSupport.MARGIN);
+ addContext.setY(StructureClassSupport.MARGIN);
+
+ final HashMap<String, Anchor> ifitem2anchor = new HashMap<String, Anchor>();
+
+ IAddFeature addFeature = featureProvider.getAddFeature(addContext);
+ if (addFeature!=null && addFeature.canAdd(addContext)) {
+ ContainerShape acShape = (ContainerShape) addFeature.add(addContext);
+
+ int width = acShape.getGraphicsAlgorithm().getGraphicsAlgorithmChildren().get(0).getWidth();
+
+ addInterfaceItems(acShape, width, featureProvider, ifitem2anchor);
+
+ // actor container references
+ if (sc instanceof ActorContainerClass) {
+ ActorContainerClass acc = (ActorContainerClass) sc;
+
+ EList<? extends ActorContainerRef> actorRefs = acc.getActorRefs();
+ addRefItems(actorRefs, acShape, width, featureProvider, ifitem2anchor);
+ }
+ else if (sc instanceof LogicalSystem) {
+ LogicalSystem sys = (LogicalSystem) sc;
+
+ EList<? extends ActorContainerRef> subSystems = sys.getSubSystems();
+ addRefItems(subSystems, acShape, width, featureProvider, ifitem2anchor);
+ }
+
+ // bindings
+ for (Binding bind : sc.getBindings()) {
+ addBinding(bind, featureProvider, ifitem2anchor);
+ }
+
+ // layer connections
+ for (LayerConnection lc : sc.getConnections()) {
+ addLayerConnection(lc, featureProvider, ifitem2anchor);
+ }
+
+ // base class items
+ if (sc instanceof ActorClass) {
+ ActorClass base = ((ActorClass) sc).getBase();
+
+ // add inherited ports and refs and bindings (and preserve layout)
+ if (base!=null)
+ addInheritedItems(base, acShape, ifitem2anchor, featureProvider);
+ }
+ }
+
+ }
+
+ protected void addInterfaceItems(ContainerShape acShape, int width,
+ IFeatureProvider featureProvider,
+ final HashMap<String, Anchor> port2anchor) {
+ if (sc instanceof ActorClass) {
+ ActorClass ac = (ActorClass) sc;
+
+ // interface spps and ports
+ int n = ac.getIfPorts().size() + ac.getIfSPPs().size();
+ int delta = width/(n+1);
+ int pos = delta;
+ for (SPPRef spp : ac.getIfSPPs()) {
+ addInterfaceItem(spp, acShape, pos, featureProvider, port2anchor);
+ pos += delta;
+ }
+ for (Port port : ac.getIfPorts()) {
+ addInterfaceItem(port, acShape, pos, featureProvider, port2anchor);
+ pos += delta;
+ }
+
+ // internal ports
+ n = ac.getIntPorts().size();
+ delta = width/(n+1);
+ pos = delta;
+ addPorts(ac.getIntPorts(), acShape, width, featureProvider, port2anchor);
+ }
+ else if (sc instanceof SubSystemClass) {
+ SubSystemClass ssc = (SubSystemClass) sc;
+
+ // interface spps and ports
+ int n = ssc.getRelayPorts().size() + ssc.getIfSPPs().size();
+ int delta = width/(n+1);
+ int pos = delta;
+ for (SPPRef spp : ssc.getIfSPPs()) {
+ addInterfaceItem(spp, acShape, pos, featureProvider, port2anchor);
+ pos += delta;
+ }
+ for (Port port : ssc.getRelayPorts()) {
+ addInterfaceItem(port, acShape, pos, featureProvider, port2anchor);
+ pos += delta;
+ }
+ }
+ }
+
+ protected void addRefItems(EList<? extends ActorContainerRef> actorRefs,
+ ContainerShape acShape, int width,
+ IFeatureProvider featureProvider, final HashMap<String, Anchor> port2anchor) {
+ int n = actorRefs.size();
+ int delta = width/(n+1);
+ int pos = delta;
+ for (ActorContainerRef ar : actorRefs) {
+ addRefItem(ar, acShape, pos, featureProvider, port2anchor);
+ pos += delta;
+ }
+ }
+
+ protected void addPorts(EList<Port> ifPorts, ContainerShape acShape,
+ int width, IFeatureProvider featureProvider, final HashMap<String, Anchor> port2anchor) {
+ int n = ifPorts.size();
+ int delta = width/(n+1);
+ int pos = delta;
+ for (Port port : ifPorts) {
+ addInterfaceItem(port, acShape, pos, featureProvider, port2anchor);
+ pos += delta;
+ }
+ }
+
+ protected void addRefItem(ActorContainerRef obj, ContainerShape acShape, int pos, IFeatureProvider featureProvider, final HashMap<String, Anchor> port2anchor) {
+ AddContext addContext = new AddContext();
+ addContext.setNewObject(obj);
+ addContext.setTargetContainer(acShape);
+ addContext.setX(pos-ActorContainerRefSupport.DEFAULT_SIZE_X/2);
+ addContext.setY(4*StructureClassSupport.MARGIN);
+
+ ContainerShape refShape = (ContainerShape) featureProvider.addIfPossible(addContext);
+
+ getAnchors(obj, refShape, port2anchor);
+ }
+
+ protected void addInterfaceItem(InterfaceItem item, ContainerShape acShape, int pos, IFeatureProvider featureProvider, final HashMap<String, Anchor> port2anchor) {
+ AddContext addContext = new AddContext();
+ addContext.setNewObject(item);
+ addContext.setTargetContainer(acShape);
+ addContext.setX(pos-PortSupport.ITEM_SIZE/2);
+ addContext.setY(0);
+
+ ContainerShape pe = (ContainerShape) featureProvider.addIfPossible(addContext);
+ assert(!pe.getAnchors().isEmpty()): "interface item should have an anchor";
+ port2anchor.put(SEP+item.getName(), pe.getAnchors().get(0));
+ }
+
+ protected void addBinding(Binding bind, IFeatureProvider featureProvider,
+ final HashMap<String, Anchor> port2anchor) {
+ String ep1 = getName(bind.getEndpoint1());
+ String ep2 = getName(bind.getEndpoint2());
+ Anchor a1 = port2anchor.get(ep1);
+ Anchor a2 = port2anchor.get(ep2);
+ assert(a1!=null && a2!=null): "ports for binding must be present";
+
+ AddConnectionContext context = new AddConnectionContext(a1, a2);
+ context.setNewObject(bind);
+ featureProvider.addIfPossible(context);
+ }
+
+ protected void addLayerConnection(LayerConnection lc, IFeatureProvider featureProvider,
+ final HashMap<String, Anchor> port2anchor) {
+ String ep1 = getName(lc.getFrom());
+ String ep2 = getName(lc.getTo());
+ Anchor a1 = port2anchor.get(ep1);
+ Anchor a2 = port2anchor.get(ep2);
+ assert(a1!=null && a2!=null): "ports for layer connection must be present";
+
+ AddConnectionContext context = new AddConnectionContext(a1, a2);
+ context.setNewObject(lc);
+ featureProvider.addIfPossible(context);
+ }
+
+ private void addInheritedItems(ActorClass ac, ContainerShape acShape, HashMap<String,Anchor> port2anchor, IFeatureProvider featureProvider) {
+
+ // we don't have to recurse since the base class diagram already contains all inherited items
+
+ Diagram refDiag = DiagramAccess.getDiagram(ac);
+
+ ResourceSet rs = ac.eResource().getResourceSet();
+
+ if (!refDiag.getChildren().isEmpty()) {
+ ContainerShape refAcShape = (ContainerShape) refDiag.getChildren().get(0);
+ Object bo = featureProvider.getBusinessObjectForPictogramElement(refAcShape);
+ if (bo instanceof StructureClass) {
+ StructureClass extRefClass = (StructureClass) bo;
+ assert(extRefClass.getName().equals(ac.getName())): "actor class names must match";
+
+ int scaleX = refAcShape.getGraphicsAlgorithm().getWidth()/StructureClassSupport.DEFAULT_SIZE_X;
+ int scaleY = refAcShape.getGraphicsAlgorithm().getHeight()/StructureClassSupport.DEFAULT_SIZE_Y;
+
+ for (Shape childShape : refAcShape.getChildren()) {
+ bo = featureProvider.getBusinessObjectForPictogramElement(childShape);
+ if (bo instanceof Port) {
+ Port ownObject = (Port) getOwnObject((Port)bo, rs);
+ int x = childShape.getGraphicsAlgorithm().getX()/scaleX;
+ int y = childShape.getGraphicsAlgorithm().getY()/scaleY;
+ ContainerShape pe = addItem(ownObject, x/scaleX, y/scaleY, acShape, featureProvider);
+ assert(!pe.getAnchors().isEmpty()): "port must have an anchor";
+ port2anchor.put(SEP+ownObject.getName(), pe.getAnchors().get(0));
+ }
+ else if (bo instanceof ActorRef) {
+ ActorContainerRef ownObject = (ActorContainerRef) getOwnObject((ActorRef)bo, rs);
+ int x = childShape.getGraphicsAlgorithm().getX()/scaleX;
+ int y = childShape.getGraphicsAlgorithm().getY()/scaleY;
+ ContainerShape arShape = addItem(ownObject, x/scaleX, y/scaleY, acShape, featureProvider);
+ getAnchors(ownObject, arShape, port2anchor);
+ }
+ }
+ for (Connection conn : refDiag.getConnections()) {
+ bo = featureProvider.getBusinessObjectForPictogramElement(conn);
+ if (bo instanceof Binding) {
+ Binding bind = (Binding)getOwnObject((Binding)bo, rs);
+ addBinding(bind, featureProvider, port2anchor);
+ }
+ }
+ }
+ }
+ }
+
+ private ContainerShape addItem(EObject obj, int x, int y, ContainerShape container, IFeatureProvider featureProvider) {
+ AddContext addContext = new AddContext();
+
+ addContext.setNewObject(obj);
+ addContext.setTargetContainer(container);
+ addContext.setX(x);
+ addContext.setY(y);
+ ContainerShape newShape = (ContainerShape) featureProvider.addIfPossible(addContext);
+ assert(newShape!=null): "shape creation must succeed";
+ return newShape;
+ }
+
+ private EObject getOwnObject(EObject obj, ResourceSet rs) {
+ URI uri = EcoreUtil.getURI(obj);
+ EObject own = rs.getEObject(uri, true);
+ assert(own!=null): "own object must exist";
+ return own;
+ }
+
+ protected void getAnchors(ActorContainerRef acr, PictogramElement refShape,
+ final HashMap<String, Anchor> port2anchor) {
+
+ if (refShape instanceof ContainerShape) {
+ port2anchor.put(acr.getName()+SEP, ((ContainerShape)refShape).getAnchors().get(0));
+ for (Shape child : ((ContainerShape) refShape).getChildren()) {
+ if (child instanceof ContainerShape) {
+ ContainerShape childShape = (ContainerShape) child;
+ if (!childShape.getAnchors().isEmpty()) {
+ if (!childShape.getLink().getBusinessObjects().isEmpty()) {
+ EObject obj = childShape.getLink().getBusinessObjects().get(0);
+ if (obj instanceof Port) {
+ port2anchor.put(acr.getName()+SEP+((Port)obj).getName(), childShape.getAnchors().get(0));
+ }
+ if (obj instanceof SPPRef) {
+ port2anchor.put(acr.getName()+SEP+((SPPRef)obj).getName(), childShape.getAnchors().get(0));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private String getName(BindingEndPoint ep) {
+ String ar = ep.getActorRef()==null? "":ep.getActorRef().getName();
+ String p = ep.getPort().getName();
+ return ar+SEP+p;
+ }
+
+ private String getName(SAPoint sapt) {
+ if (sapt instanceof RelaySAPoint) {
+ return SEP+((RelaySAPoint)sapt).getRelay().getName();
+ }
+ else if (sapt instanceof RefSAPoint) {
+ RefSAPoint rpt = (RefSAPoint) sapt;
+ return rpt.getRef().getName()+SEP;
+ }
+ assert(false): "unexpected sub type";
+ return null;
+ }
+
+ private String getName(SPPoint sppt) {
+ return sppt.getRef().getName()+SEP+sppt.getService().getName();
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/AbstractPropertyDialog.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/AbstractPropertyDialog.java
new file mode 100644
index 000000000..f1bfc524f
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/AbstractPropertyDialog.java
@@ -0,0 +1,267 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.dialogs;
+
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.databinding.AggregateValidationStatus;
+import org.eclipse.core.databinding.Binding;
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.UpdateValueStrategy;
+import org.eclipse.core.databinding.beans.PojoObservables;
+import org.eclipse.core.databinding.conversion.Converter;
+import org.eclipse.core.databinding.observable.ChangeEvent;
+import org.eclipse.core.databinding.observable.IChangeListener;
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.etrice.ui.structure.Activator;
+import org.eclipse.jface.databinding.swt.ISWTObservable;
+import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.jface.fieldassist.FieldDecoration;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.FormDialog;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.widgets.Form;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+
+public abstract class AbstractPropertyDialog extends FormDialog {
+
+ static class Reference2StringConverter extends Converter {
+
+ private EAttribute nameAttr;
+
+ Reference2StringConverter(Object type, EAttribute nameAttr) {
+ super(type, String.class);
+ this.nameAttr = nameAttr;
+ }
+
+ @Override
+ public Object convert(Object fromObject) {
+ return ((EObject)fromObject).eGet(nameAttr);
+ }
+
+ }
+
+ static class String2ReferenceConverter extends Converter {
+ private List<? extends EObject> candidates;
+ private EAttribute nameAttr;
+
+ String2ReferenceConverter(Object type, List<? extends EObject> candidates, EAttribute nameAttr) {
+ super(String.class, type);
+ this.candidates = candidates;
+ this.nameAttr = nameAttr;
+ }
+
+ @Override
+ public Object convert(Object fromObject) {
+ for (EObject obj : candidates) {
+ if (obj.eGet(nameAttr).equals(fromObject))
+ return obj;
+ }
+ return null;
+ }
+ }
+
+ private String title;
+ private FormToolkit toolkit;
+ private DataBindingContext bindingContext;
+ private HashMap<Control, ControlDecoration> decoratorMap = new HashMap<Control, ControlDecoration>();
+
+ public AbstractPropertyDialog(Shell shell, String title) {
+ super(shell);
+ this.title = title;
+ }
+
+ @Override
+ protected void createFormContent(IManagedForm mform) {
+ toolkit = mform.getToolkit();
+ bindingContext = new DataBindingContext();
+
+ Form form = mform.getForm().getForm();
+ form.setText(title);
+
+ form.setImage(Activator.getImage("icons/Structure.gif"));
+ mform.getToolkit().decorateFormHeading(form);
+
+ Composite body = form.getBody();
+ body.setLayout(new GridLayout(2, false));
+ body.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ toolkit.createLabel(body, "", SWT.NONE)
+ .setText("Validation Status:");
+
+ Label validationErrorLabel = toolkit.createLabel(
+ body, "", SWT.NONE);
+ validationErrorLabel
+ .setLayoutData(new GridData(
+ GridData.FILL_HORIZONTAL));
+
+ createContent(mform, body, bindingContext);
+
+ AggregateValidationStatus aggregateValidationStatus = new AggregateValidationStatus(
+ bindingContext.getBindings(),
+ AggregateValidationStatus.MAX_SEVERITY);
+
+ aggregateValidationStatus.addChangeListener(new IChangeListener() {
+ public void handleChange(ChangeEvent event) {
+
+ boolean ok = true;
+ for (Object o : bindingContext.getBindings()) {
+ Binding binding = (Binding) o;
+ IStatus status = (IStatus) binding.getValidationStatus()
+ .getValue();
+ Control control = null;
+ if (binding.getTarget() instanceof ISWTObservable) {
+ ISWTObservable swtObservable = (ISWTObservable) binding
+ .getTarget();
+ control = (Control) swtObservable.getWidget();
+ }
+ ControlDecoration decoration = decoratorMap.get(control);
+ if (decoration != null) {
+ if (status.isOK()) {
+ decoration.hide();
+ } else {
+ ok = false;
+ decoration.setDescriptionText(status.getMessage());
+ decoration.show();
+ }
+ }
+ }
+ Button okButton = getButton(IDialogConstants.OK_ID);
+ if (okButton!=null)
+ okButton.setEnabled(ok);
+ }
+ });
+
+ bindingContext.bindValue(SWTObservables
+ .observeText(validationErrorLabel),
+ aggregateValidationStatus, null,
+ null);
+
+ }
+
+ protected abstract void createContent(IManagedForm mform, Composite body,
+ DataBindingContext bindingContext);
+
+ protected Text createText(Composite parent, String label, EObject obj, EAttribute att) {
+ return createText(parent, label, obj, att, null);
+ }
+
+ protected Text createText(Composite parent, String label, EObject obj, EAttribute att, IValidator validator) {
+ Label l = toolkit.createLabel(parent, label, SWT.NONE);
+ l.setLayoutData(new GridData(SWT.NONE));
+
+ Text text = toolkit.createText(parent, "", SWT.BORDER);
+ text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ UpdateValueStrategy t2m = null;
+ UpdateValueStrategy m2t = null;
+ if (validator!=null) {
+ t2m = new UpdateValueStrategy();
+ t2m.setAfterConvertValidator(validator);
+ t2m.setBeforeSetValidator(validator);
+ m2t = new UpdateValueStrategy();
+ m2t.setAfterConvertValidator(validator);
+ m2t.setBeforeSetValidator(validator);
+ }
+ bindingContext.bindValue(SWTObservables.observeText(text, SWT.Modify), PojoObservables.observeValue(
+ obj, att.getName()), t2m, m2t);
+
+ return text;
+ }
+
+ protected Button createCheck(Composite parent, String label, EObject obj, EAttribute att) {
+ return createCheck(parent, label, obj, att, null);
+ }
+
+ protected Button createCheck(Composite parent, String label, EObject obj, EAttribute att, IValidator validator) {
+ Label l = toolkit.createLabel(parent, label, SWT.NONE);
+ l.setLayoutData(new GridData(SWT.NONE));
+
+ Button check = toolkit.createButton(parent, "", SWT.CHECK);
+ check.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ UpdateValueStrategy t2m = null;
+ UpdateValueStrategy m2t = null;
+ if (validator!=null) {
+ t2m = new UpdateValueStrategy();
+ t2m.setAfterConvertValidator(validator);
+ t2m.setBeforeSetValidator(validator);
+ m2t = new UpdateValueStrategy();
+ m2t.setAfterConvertValidator(validator);
+ m2t.setBeforeSetValidator(validator);
+ }
+ bindingContext.bindValue(SWTObservables.observeSelection(check), PojoObservables.observeValue(
+ obj, att.getName()), t2m, m2t);
+
+ return check;
+ }
+
+ protected Combo createCombo(Composite parent, String label, EObject obj, Object type, EReference ref, List<? extends EObject> candidates, EAttribute nameAttr) {
+ return createCombo(parent, label, obj, type, ref, candidates, nameAttr, null);
+ }
+
+ protected Combo createCombo(Composite parent, String label, EObject obj, Object type, EReference ref, List<? extends EObject> candidates, EAttribute nameAttr, IValidator validator) {
+ Label l = toolkit.createLabel(parent, label, SWT.NONE);
+ l.setLayoutData(new GridData(SWT.NONE));
+
+ Combo combo = new Combo(parent, SWT.READ_ONLY);
+ combo.setLayoutData(new GridData(SWT.HORIZONTAL));
+ combo.setVisibleItemCount(10);
+ toolkit.adapt(combo, true, true);
+
+ Reference2StringConverter r2s = new Reference2StringConverter(type, nameAttr);
+ for (EObject o : candidates) {
+ combo.add((String) r2s.convert(o));
+ }
+
+ String2ReferenceConverter s2r = new String2ReferenceConverter(type, candidates, nameAttr);
+ UpdateValueStrategy t2m = new UpdateValueStrategy().setConverter(s2r);
+ UpdateValueStrategy m2t = new UpdateValueStrategy().setConverter(r2s);
+ if (validator!=null) {
+ t2m.setAfterConvertValidator(validator);
+ t2m.setBeforeSetValidator(validator);
+ m2t.setAfterConvertValidator(validator);
+ m2t.setBeforeSetValidator(validator);
+ }
+ bindingContext.bindValue(SWTObservables.observeText(combo), PojoObservables.observeValue(obj, ref.getName()), t2m, m2t);
+
+ return combo;
+ }
+
+ protected ControlDecoration createDecorator(Control ctrl, String message) {
+ ControlDecoration controlDecoration = new ControlDecoration(ctrl, SWT.LEFT | SWT.TOP);
+ controlDecoration.setDescriptionText(message);
+ FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault().getFieldDecoration(
+ FieldDecorationRegistry.DEC_ERROR);
+ controlDecoration.setImage(fieldDecoration.getImage());
+ controlDecoration.hide();
+
+ decoratorMap.put(ctrl, controlDecoration);
+
+ return controlDecoration;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/ActorContainerRefPropertyDialog.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/ActorContainerRefPropertyDialog.java
new file mode 100644
index 000000000..07c9e0492
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/ActorContainerRefPropertyDialog.java
@@ -0,0 +1,150 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.dialogs;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.databinding.validation.ValidationStatus;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IManagedForm;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+import org.eclipse.etrice.core.room.LogicalSystem;
+
+public class ActorContainerRefPropertyDialog extends AbstractPropertyDialog {
+
+ class NameValidator implements IValidator {
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value instanceof String) {
+ String name = (String) value;
+
+ if (name.isEmpty())
+ return ValidationStatus.error("name must not be empty");
+
+ // TODOHRR: check valid identifier
+ // TODOHRR: use ValidationUtil
+
+ if (sc instanceof ActorClass) {
+ if (nameExists((ActorClass) sc, name))
+ return ValidationStatus.error("name already exists");
+ }
+ else if (sc instanceof SubSystemClass) {
+ SubSystemClass ssc = (SubSystemClass) sc;
+ for (ActorRef ar : ssc.getActorRefs()) {
+ if (ar!=ref && ar.getName().equals(name))
+ return ValidationStatus.error("name already exists");
+ }
+ }
+ else if (sc instanceof LogicalSystem) {
+ LogicalSystem ssc = (LogicalSystem) sc;
+ for (SubSystemRef ssr : ssc.getSubSystems()) {
+ if (ssr!=ref && ssr.getName().equals(name))
+ return ValidationStatus.error("name already exists");
+ }
+ }
+ else {
+ assert(false): "unexpected type";
+ }
+ return Status.OK_STATUS;
+ }
+ return Status.OK_STATUS;
+ }
+
+ private boolean nameExists(ActorClass ac, String name) {
+ for (ActorRef ar : ac.getActorRefs()) {
+ if (ar!=ref && ar.getName().equals(name))
+ return true;
+ }
+ if (ac.getBase()!=null)
+ return nameExists(ac.getBase(), name);
+
+ return false;
+ }
+ }
+
+ class ProtocolValidator implements IValidator {
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value==null)
+ return ValidationStatus.error("select a class");
+
+ return Status.OK_STATUS;
+ }
+ }
+
+ private ActorContainerRef ref;
+ private StructureClass sc;
+ private boolean newRef;
+
+ public ActorContainerRefPropertyDialog(Shell shell, ActorContainerRef ref, StructureClass sc, boolean newRef) {
+ super(shell, "Edit Reference");
+ this.ref = ref;
+ this.sc = sc;
+ this.newRef = newRef;
+ }
+
+ @Override
+ protected void initializeBounds() {
+ getShell().setSize(300, 300);
+ }
+
+ private RoomModel getRoomModel() {
+ EObject obj = sc;
+ while (obj!=null) {
+ if (obj instanceof RoomModel)
+ return (RoomModel) obj;
+ obj = obj.eContainer();
+ }
+ return null;
+ }
+
+ @Override
+ protected void createContent(IManagedForm mform, Composite body,
+ DataBindingContext bindingContext) {
+
+ RoomModel model = getRoomModel();
+
+ NameValidator nv = new NameValidator();
+ ProtocolValidator pv = new ProtocolValidator();
+
+ boolean isActor = sc instanceof ActorContainerClass;
+
+ Text name = createText(body, "Name:", ref, RoomPackage.eINSTANCE.getActorContainerRef_Name(), nv);
+ Combo refClass = isActor?
+ createCombo(body, "Actor Class:", ref, ActorClass.class, RoomPackage.eINSTANCE.getActorRef_Type(), model.getActorClasses(), RoomPackage.eINSTANCE.getRoomClass_Name(), pv)
+ : createCombo(body, "SubSystem Class:", ref, SubSystemClass.class, RoomPackage.eINSTANCE.getSubSystemRef_Type(), model.getSubSystemClasses(), RoomPackage.eINSTANCE.getRoomClass_Name(), pv);
+
+ createDecorator(name, "invalid name");
+ createDecorator(refClass, "no class selected");
+
+ if (!newRef) {
+ refClass.setEnabled(false);
+ }
+
+ name.setFocus();
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/PortPropertyDialog.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/PortPropertyDialog.java
new file mode 100644
index 000000000..c28443336
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/PortPropertyDialog.java
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.dialogs;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.databinding.validation.ValidationStatus;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SubSystemClass;
+
+public class PortPropertyDialog extends AbstractPropertyDialog {
+
+ class NameValidator implements IValidator {
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value instanceof String) {
+ String name = (String) value;
+
+ if (name.isEmpty())
+ return ValidationStatus.error("name must not be empty");
+
+ // TODOHRR: check valid identifier
+ // TODOHRR: use ValidationUtil
+
+ if (acc instanceof ActorClass) {
+ if (nameExists((ActorClass) acc, name))
+ return ValidationStatus.error("name already exists");
+ }
+ else if (acc instanceof SubSystemClass) {
+ SubSystemClass ssc = (SubSystemClass) acc;
+ for (Port p : ssc.getRelayPorts()) {
+ if (p!=port && p.getName().equals(name))
+ return ValidationStatus.error("name already exists");
+ }
+ }
+ else {
+ assert(false): "unexpected type";
+ }
+ return Status.OK_STATUS;
+ }
+ return Status.OK_STATUS;
+ }
+
+ private boolean nameExists(ActorClass ac, String name) {
+ for (Port p : ac.getIfPorts()) {
+ if (p!=port && p.getName().equals(name))
+ return true;
+ }
+ for (Port p : ac.getIntPorts()) {
+ if (p!=port && p.getName().equals(name))
+ return true;
+ }
+ if (ac.getBase()!=null)
+ return nameExists(ac.getBase(), name);
+
+ return false;
+ }
+ }
+
+ class ProtocolValidator implements IValidator {
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value==null)
+ return ValidationStatus.error("select a protocol");
+
+ return Status.OK_STATUS;
+ }
+ }
+
+ class MultiplicityValidator implements IValidator {
+
+ private boolean mayChange;
+ private int old;
+
+ public MultiplicityValidator(boolean mayChange, int old) {
+ this.mayChange = mayChange;
+ this.old = old;
+ }
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value instanceof Integer) {
+ int m = (Integer) value;
+ if (m<=0)
+ return ValidationStatus.error("multiplicity must be positive");
+ if (!mayChange) {
+ if (old==1 && m>1)
+ return ValidationStatus.error("cannot make connected port replicated");
+ if (old>1 && m==1)
+ return ValidationStatus.error("cannot make connected port not replicated");
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ }
+
+ private Port port;
+ private ActorContainerClass acc;
+ private boolean newPort;
+ private boolean refitem;
+ private boolean internal;
+ private Button relayCheck = null;
+ private boolean relay;
+
+ public PortPropertyDialog(Shell shell, Port port, ActorContainerClass acc, boolean newPort, boolean refitem, boolean internal) {
+ super(shell, "Edit Port");
+ this.port = port;
+ this.acc = acc;
+ this.newPort = newPort;
+ this.refitem = refitem;
+ this.internal = internal;
+
+ relay = isPortRelay();
+ }
+
+ private boolean isPortRelay() {
+ if (newPort)
+ return false;
+ if (internal)
+ return false;
+
+ if (acc instanceof SubSystemClass)
+ return true;
+ else if (acc instanceof ActorClass) {
+ for (ExternalPort xp : ((ActorClass) acc).getExtPorts()) {
+ if (xp.getIfport()==port)
+ return false;
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ protected void initializeBounds() {
+ getShell().setSize(300, 300);
+ }
+
+ @Override
+ protected void createContent(IManagedForm mform, Composite body, DataBindingContext bindingContext) {
+ boolean connected = ValidationUtil.isConnected(port, null, acc);
+ NameValidator nv = new NameValidator();
+ ProtocolValidator pv = new ProtocolValidator();
+ MultiplicityValidator mv = new MultiplicityValidator(newPort || !connected, port.getMultiplicity());
+
+ ArrayList<ProtocolClass> protocols = new ArrayList<ProtocolClass>();
+ if (acc.eResource()!=null) {
+ for (Resource r: acc.eResource().getResourceSet().getResources()) {
+ if (!r.getContents().isEmpty()) {
+ if (r.getContents().get(0) instanceof RoomModel) {
+ protocols.addAll(((RoomModel)r.getContents().get(0)).getProtocolClasses());
+ }
+ }
+ }
+ }
+
+ Text name = createText(body, "Name:", port, RoomPackage.eINSTANCE.getInterfaceItem_Name(), nv);
+ Combo protocol = createCombo(body, "Protocol:", port, ProtocolClass.class, RoomPackage.eINSTANCE.getInterfaceItem_Protocol(), protocols, RoomPackage.eINSTANCE.getRoomClass_Name(), pv);
+ Button conj = createCheck(body, "Conjugated:", port, RoomPackage.eINSTANCE.getPort_Conjugated());
+ if (!internal && !refitem && (acc instanceof ActorClass))
+ createRelayCheck(body, mform.getToolkit());
+ Text multi = createText(body, "Multiplicity:", port, RoomPackage.eINSTANCE.getPort_Multiplicity(), mv);
+
+ if (!newPort) {
+ // TODOHRR: check whether port is used externally?
+ if (connected) {
+ protocol.setEnabled(false);
+ conj.setEnabled(false);
+ if (port.getMultiplicity()==1)
+ multi.setEnabled(false);
+ }
+
+ if (refitem) {
+ name.setEnabled(false);
+ protocol.setEnabled(false);
+ conj.setEnabled(false);
+ multi.setEnabled(false);
+ }
+ }
+
+ createDecorator(name, "invalid name");
+ createDecorator(protocol, "no protocol selected");
+ createDecorator(multi, "multiplicity must be greater 1");
+
+ name.setFocus();
+ }
+
+ private void createRelayCheck(Composite parent, FormToolkit toolkit) {
+ Label l = toolkit.createLabel(parent, "Is Relay Port:", SWT.NONE);
+ l.setLayoutData(new GridData(SWT.NONE));
+
+ relayCheck = toolkit.createButton(parent, "", SWT.CHECK);
+ relayCheck.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ relayCheck.setSelection(relay);
+
+ if (ValidationUtil.isConnected(port, null, acc))
+ relayCheck.setEnabled(false);
+ }
+
+ @Override
+ protected void okPressed() {
+ if (relayCheck!=null) {
+ if (relay!=relayCheck.getSelection()) {
+ relay = relayCheck.getSelection();
+
+ // we know it's an ActorClass if we created the relayCheck in the first place
+ ActorClass ac = (ActorClass) acc;
+
+ if (relay) {
+ for (ExternalPort xp : ac.getExtPorts()) {
+ if (xp.getIfport()==port) {
+ ac.getExtPorts().remove(xp);
+ break;
+ }
+ }
+ }
+ else {
+ ExternalPort xp = RoomFactory.eINSTANCE.createExternalPort();
+ xp.setIfport(port);
+ ac.getExtPorts().add(xp);
+ }
+ }
+ }
+
+ super.okPressed();
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/SPPPropertyDialog.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/SPPPropertyDialog.java
new file mode 100644
index 000000000..0986c4114
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/dialogs/SPPPropertyDialog.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.dialogs;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.databinding.validation.ValidationStatus;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.IManagedForm;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SPPRef;
+
+public class SPPPropertyDialog extends AbstractPropertyDialog {
+
+ class NameValidator implements IValidator {
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value instanceof String) {
+ String name = (String) value;
+
+ if (name.isEmpty())
+ return ValidationStatus.error("name must not be empty");
+
+ // TODOHRR: check valid identifier
+ // TODOHRR: use ValidationUtil
+
+ if (nameExists(acc, name))
+ return ValidationStatus.error("name already exists");
+
+ return Status.OK_STATUS;
+ }
+ return Status.OK_STATUS;
+ }
+
+ private boolean nameExists(ActorContainerClass ac, String name) {
+ for (SPPRef s : ac.getIfSPPs()) {
+ if (s!=spp && s.getName().equals(name))
+ return true;
+ }
+
+ if (ac instanceof ActorClass)
+ if (((ActorClass)ac).getBase()!=null)
+ return nameExists(((ActorClass)ac).getBase(), name);
+
+ return false;
+ }
+ }
+
+ class ProtocolValidator implements IValidator {
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value==null)
+ return ValidationStatus.error("select a protocol");
+
+ return Status.OK_STATUS;
+ }
+ }
+
+ private SPPRef spp;
+ private ActorContainerClass acc;
+ private boolean newSPP;
+ private boolean refitem;
+
+ public SPPPropertyDialog(Shell shell, SPPRef spp, ActorContainerClass acc, boolean newSPP, boolean refitem) {
+ super(shell, "Edit SPP");
+ this.spp = spp;
+ this.acc = acc;
+ this.newSPP = newSPP;
+ this.refitem = refitem;
+ }
+
+ @Override
+ protected void initializeBounds() {
+ getShell().setSize(300, 300);
+ }
+
+ @Override
+ protected void createContent(IManagedForm mform, Composite body, DataBindingContext bindingContext) {
+ boolean connected = ValidationUtil.isConnectedSrc(spp, acc);
+ NameValidator nv = new NameValidator();
+ ProtocolValidator pv = new ProtocolValidator();
+
+ ArrayList<ProtocolClass> protocols = new ArrayList<ProtocolClass>();
+ if (acc.eResource()!=null) {
+ for (Resource r: acc.eResource().getResourceSet().getResources()) {
+ if (!r.getContents().isEmpty()) {
+ if (r.getContents().get(0) instanceof RoomModel) {
+ protocols.addAll(((RoomModel)r.getContents().get(0)).getProtocolClasses());
+ }
+ }
+ }
+ }
+
+ Text name = createText(body, "Name:", spp, RoomPackage.eINSTANCE.getInterfaceItem_Name(), nv);
+ Combo protocol = createCombo(body, "Protocol:", spp, ProtocolClass.class, RoomPackage.eINSTANCE.getInterfaceItem_Protocol(), protocols, RoomPackage.eINSTANCE.getRoomClass_Name(), pv);
+
+ if (!newSPP) {
+ // TODOHRR: check whether spp is used externally?
+ if (connected) {
+ protocol.setEnabled(false);
+ }
+ if (refitem) {
+ name.setEnabled(false);
+ protocol.setEnabled(false);
+ }
+ }
+
+ createDecorator(name, "invalid name");
+ createDecorator(protocol, "no protocol selected");
+
+ name.setFocus();
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/editor/StructureEditor.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/editor/StructureEditor.java
new file mode 100644
index 000000000..7414cf520
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/editor/StructureEditor.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.editor;
+
+import org.eclipse.etrice.ui.structure.Activator;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
+import org.eclipse.swt.graphics.Image;
+
+
+public class StructureEditor extends DiagramEditor {
+
+ public static final String STRUCTURE_EDITOR_ID = "org.eclipse.etrice.ui.structure.editor.StructureEditor";
+
+ public StructureEditor() {
+ super();
+ }
+
+ @Override
+ public Image getDefaultImage() {
+ return Activator.getImage("icons/Structure.gif");
+ }
+
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/ActorContainerRefSupport.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/ActorContainerRefSupport.java
new file mode 100644
index 000000000..37c5f95f7
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/ActorContainerRefSupport.java
@@ -0,0 +1,751 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.etrice.ui.structure.DiagramAccess;
+import org.eclipse.etrice.ui.structure.ImageProvider;
+import org.eclipse.etrice.ui.structure.dialogs.ActorContainerRefPropertyDialog;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.ILayoutFeature;
+import org.eclipse.graphiti.features.IMoveShapeFeature;
+import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.IResizeShapeFeature;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICreateContext;
+import org.eclipse.graphiti.features.context.ICustomContext;
+import org.eclipse.graphiti.features.context.IDoubleClickContext;
+import org.eclipse.graphiti.features.context.ILayoutContext;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
+import org.eclipse.graphiti.features.context.IRemoveContext;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.RemoveContext;
+import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
+import org.eclipse.graphiti.features.custom.ICustomFeature;
+import org.eclipse.graphiti.features.impl.AbstractAddFeature;
+import org.eclipse.graphiti.features.impl.AbstractCreateFeature;
+import org.eclipse.graphiti.features.impl.AbstractLayoutFeature;
+import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;
+import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
+import org.eclipse.graphiti.features.impl.DefaultResizeShapeFeature;
+import org.eclipse.graphiti.features.impl.Reason;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Rectangle;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.mm.algorithms.styles.Color;
+import org.eclipse.graphiti.mm.algorithms.styles.Orientation;
+import org.eclipse.graphiti.mm.pictograms.ChopboxAnchor;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.graphiti.ui.features.AbstractDrillDownFeature;
+import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+
+public class ActorContainerRefSupport {
+
+ private static final int LINE_WIDTH = 1;
+ public static final int DEFAULT_SIZE_X = 200;
+ public static final int DEFAULT_SIZE_Y = 120;
+ public static final int MIN_SIZE_X = 100;
+ public static final int MIN_SIZE_Y = 60;
+ protected static final int MARGIN = 20;
+
+ private static final IColorConstant LINE_COLOR = new ColorConstant(0, 0, 0);
+ private static final IColorConstant INHERITED_COLOR = new ColorConstant(100, 100, 100);
+ private static final IColorConstant BACKGROUND = new ColorConstant(200, 200, 200);
+
+ private static class FeatureProvider extends DefaultFeatureProvider {
+
+ private class CreateFeature extends AbstractCreateFeature {
+
+ private boolean actorRef;
+
+ public CreateFeature(IFeatureProvider fp, boolean actorRef) {
+ super(fp, actorRef?"ActorRef":"SubSystemRef", "create "+(actorRef?"ActorRef":"SubSystemRef"));
+ this.actorRef = actorRef;
+ }
+
+ @Override
+ public String getCreateImageId() {
+ return ImageProvider.IMG_REF;
+ }
+
+ @Override
+ public boolean canCreate(ICreateContext context) {
+ if (context.getTargetContainer().getLink()!=null)
+ if (context.getTargetContainer().getLink().getBusinessObjects().size()==1) {
+ EObject obj = context.getTargetContainer().getLink().getBusinessObjects().get(0);
+ if (obj instanceof ActorContainerClass) {
+ return actorRef;
+ }
+ if (obj instanceof LogicalSystem) {
+ return !actorRef;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public Object[] create(ICreateContext context) {
+
+ StructureClass sc = (StructureClass) context.getTargetContainer().getLink().getBusinessObjects().get(0);
+
+ ActorContainerRef newRef = null;
+ if (sc instanceof ActorContainerClass) {
+ ActorContainerClass acc = (ActorContainerClass) sc;
+
+ // create ActorRef
+ ActorRef ar = RoomFactory.eINSTANCE.createActorRef();
+ ar.setName("");
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ ActorContainerRefPropertyDialog dlg = new ActorContainerRefPropertyDialog(shell, ar, sc, true);
+ if (dlg.open()!=Window.OK)
+ // find a method to abort creation
+ //throw new RuntimeException();
+ return EMPTY;
+
+ acc.getActorRefs().add(ar);
+ newRef = ar;
+
+ }
+ else if (sc instanceof LogicalSystem) {
+ LogicalSystem sys = (LogicalSystem) sc;
+
+ // create ActorRef
+ SubSystemRef ssr = RoomFactory.eINSTANCE.createSubSystemRef();
+ ssr.setName("");
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ ActorContainerRefPropertyDialog dlg = new ActorContainerRefPropertyDialog(shell, ssr, sc, true);
+ if (dlg.open()!=Window.OK)
+ // find a method to abort creation
+ //throw new RuntimeException();
+ return EMPTY;
+
+ sys.getSubSystems().add(ssr);
+ newRef = ssr;
+ }
+
+ addGraphicalRepresentation(context, newRef);
+
+ // return newly created business object(s)
+ return new Object[] { newRef };
+ }
+ }
+
+ private class AddFeature extends AbstractAddFeature {
+
+ public AddFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canAdd(IAddContext context) {
+ if (context.getNewObject() instanceof ActorContainerRef) {
+ if (context.getTargetContainer().getLink().getBusinessObjects().size()==1) {
+ EObject obj = context.getTargetContainer().getLink().getBusinessObjects().get(0);
+ if (obj instanceof StructureClass) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public PictogramElement add(IAddContext context) {
+ ActorContainerRef ar = (ActorContainerRef) context.getNewObject();
+ ContainerShape acShape = context.getTargetContainer();
+
+ // CONTAINER SHAPE WITH RECTANGLE
+ IPeCreateService peCreateService = Graphiti.getPeCreateService();
+ ContainerShape containerShape =
+ peCreateService.createContainerShape(acShape, true);
+
+ Graphiti.getPeService().setPropertyValue(containerShape, Constants.TYPE_KEY, Constants.REF_TYPE);
+
+ int width = context.getWidth() <= 0 ? DEFAULT_SIZE_X : context.getWidth();
+ int height = context.getHeight() <= 0 ? DEFAULT_SIZE_Y : context.getHeight();
+
+ EObject parent = acShape.getLink().getBusinessObjects().get(0);
+ boolean inherited = isInherited(ar, parent);
+ Color lineColor = manageColor(inherited?INHERITED_COLOR:LINE_COLOR);
+ IGaService gaService = Graphiti.getGaService();
+ {
+ final Rectangle invisibleRectangle = gaService.createInvisibleRectangle(containerShape);
+ gaService.setLocationAndSize(invisibleRectangle,
+ context.getX(), context.getY(), width + 2*MARGIN, height + 2*MARGIN);
+
+ Rectangle rect = gaService.createRectangle(invisibleRectangle);
+ rect.setForeground(lineColor);
+ rect.setBackground(manageColor(BACKGROUND));
+ rect.setLineWidth(LINE_WIDTH);
+ gaService.setLocationAndSize(rect, MARGIN, MARGIN, width, height);
+
+ addSubStructureHint(ar, rect, lineColor);
+
+ // anchor for layer connections
+ ChopboxAnchor anchor = peCreateService.createChopboxAnchor(containerShape);
+ anchor.setReferencedGraphicsAlgorithm(rect);
+
+ // create link and wire it
+ link(containerShape, ar);
+
+ if (inherited) {
+ InterfaceItemSupport.createInheritedRefItems(ar, containerShape, fp);
+ }
+ else {
+ InterfaceItemSupport.createRefItems(ar, containerShape, fp);
+ }
+ }
+
+ {
+ Shape labelShape = peCreateService.createShape(containerShape, false);
+ Text label = gaService.createDefaultText(labelShape, getLabel(ar));
+ label.setForeground(lineColor);
+ label.setBackground(lineColor);
+ label.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
+ label.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);
+ gaService.setLocationAndSize(label, MARGIN, MARGIN, width, height);
+ }
+
+ // call the layout feature
+ layoutPictogramElement(containerShape);
+
+ return containerShape;
+ }
+
+ }
+
+ private class LayoutFeature extends AbstractLayoutFeature {
+
+ public LayoutFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canLayout(ILayoutContext context) {
+ // return true, if pictogram element is linked to an ActorContainerRef
+ PictogramElement pe = context.getPictogramElement();
+ if (!(pe instanceof ContainerShape))
+ return false;
+
+ EList<EObject> businessObjects = pe.getLink().getBusinessObjects();
+ return businessObjects.size() == 1
+ && businessObjects.get(0) instanceof ActorContainerRef;
+ }
+
+ @Override
+ public boolean layout(ILayoutContext context) {
+ boolean anythingChanged = false;
+ ContainerShape containerShape = (ContainerShape) context
+ .getPictogramElement();
+
+ // our invisible rectangle
+ GraphicsAlgorithm containerGa = containerShape.getGraphicsAlgorithm();
+
+ int w = containerGa.getWidth();
+ int h = containerGa.getHeight();
+
+ if (containerGa.getGraphicsAlgorithmChildren().size()==1) {
+ // the visible outer frame
+ GraphicsAlgorithm ga = containerGa.getGraphicsAlgorithmChildren().get(0);
+
+ int nw = w-2*MARGIN;
+ int nh = h-2*MARGIN;
+
+ ga.setWidth(nw);
+ ga.setHeight(nh);
+
+ Object bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof ActorContainerRef) {
+ ActorContainerRef acr = (ActorContainerRef) bo;
+ ga.getGraphicsAlgorithmChildren().clear();
+ EObject parent = containerShape.getContainer().getLink().getBusinessObjects().get(0);
+ Color lineColor = manageColor(isInherited(acr, parent)?INHERITED_COLOR:LINE_COLOR);
+ addSubStructureHint(acr, (Rectangle) ga, lineColor);
+ }
+
+ int last = containerShape.getChildren().size()-1;
+ if (last>=0) {
+ GraphicsAlgorithm childGA = containerShape.getChildren().get(last).getGraphicsAlgorithm();
+ childGA.setWidth(nw);
+ childGA.setHeight(nh);
+ }
+
+ anythingChanged = true;
+ }
+
+ return anythingChanged;
+ }
+ }
+
+ private static class PropertyFeature extends AbstractCustomFeature {
+
+ public PropertyFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public String getName() {
+ return "Edit Reference...";
+ }
+
+ @Override
+ public String getDescription() {
+ return "Edit Reference Properties";
+ }
+
+ @Override
+ public boolean canExecute(ICustomContext context) {
+ PictogramElement[] pes = context.getPictogramElements();
+ if (pes != null && pes.length == 1) {
+ Object bo = getBusinessObjectForPictogramElement(pes[0]);
+ if (bo instanceof ActorContainerRef) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void execute(ICustomContext context) {
+ ActorContainerRef acr = (ActorContainerRef) getBusinessObjectForPictogramElement(context.getPictogramElements()[0]);
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ StructureClass sc = (StructureClass)acr.eContainer();
+
+ ActorContainerRefPropertyDialog dlg = new ActorContainerRefPropertyDialog(shell, acr, sc, false);
+ if (dlg.open()!=Window.OK)
+ // TODOHRR: introduce a method to revert changes
+ throw new RuntimeException();
+
+ updateFigure(acr, context);
+ }
+
+ private void updateFigure(ActorContainerRef acr, ICustomContext context) {
+ PictogramElement pe = context.getPictogramElements()[0];
+ ContainerShape container = (ContainerShape)pe;
+
+ // we clear the figure and rebuild it
+// GraphicsAlgorithm invisibleRect = pe.getGraphicsAlgorithm();
+// invisibleRect.getGraphicsAlgorithmChildren().clear();
+
+// createPortFigure(acr, false, container, invisibleRect, manageColor(DARK_COLOR), manageColor(BRIGHT_COLOR));
+
+ GraphicsAlgorithm ga = container.getChildren().get(1).getGraphicsAlgorithm();
+ if (ga instanceof Text) {
+ ((Text)ga).setValue(acr.getName());
+ }
+
+ }
+
+ }
+
+ private static class DrillDownFeature extends AbstractDrillDownFeature {
+
+ private ActorContainerRef ref = null;
+
+ public DrillDownFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public String getName() {
+ return "Open associated diagram";
+ }
+
+ @Override
+ public boolean canExecute(ICustomContext context) {
+ PictogramElement[] pes = context.getPictogramElements();
+ if (pes != null && pes.length == 1) {
+ Object bo = getBusinessObjectForPictogramElement(pes[0]);
+ if (bo instanceof ActorContainerRef) {
+ ref = (ActorContainerRef) bo;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected Collection<Diagram> getDiagrams() {
+ ArrayList<Diagram> result = new ArrayList<Diagram>();
+ if (ref!=null) {
+ if (ref instanceof ActorRef) {
+ result.add(DiagramAccess.getDiagram(((ActorRef) ref).getType()));
+ }
+ else if (ref instanceof SubSystemRef) {
+ result.add(DiagramAccess.getDiagram(((SubSystemRef) ref).getType()));
+ }
+ }
+ return result;
+ }
+ @Override
+ protected Collection<Diagram> getLinkedDiagrams(PictogramElement pe) {
+ return getDiagrams();
+ }
+ }
+
+ private class UpdateFeature extends AbstractUpdateFeature {
+
+ public UpdateFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canUpdate(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy())
+ return true;
+
+ return bo instanceof ActorContainerRef;
+ }
+
+ @Override
+ public IReason updateNeeded(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ return Reason.createTrueReason("Ref deleted from model");
+ }
+ ActorContainerRef acr = (ActorContainerRef) bo;
+
+ // check if ref still owned/inherited anymore
+ ContainerShape containerShape = (ContainerShape)context.getPictogramElement();
+ bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof ActorClass) {
+ ActorClass ac = (ActorClass) bo;
+ boolean found = false;
+ do {
+ if (ac==acr.eContainer())
+ found = true;
+ ac = ac.getBase();
+ }
+ while (!found && ac!=null);
+
+ if (!found)
+ return Reason.createTrueReason("Ref not inherited anymore");
+ }
+
+ // check sub structure hint
+ {
+ boolean hasSubStruct = hasSubStructure(acr);
+ GraphicsAlgorithm invisibleRect = containerShape.getGraphicsAlgorithm();
+ if (!invisibleRect.getGraphicsAlgorithmChildren().isEmpty()) {
+
+ GraphicsAlgorithm borderRect = invisibleRect.getGraphicsAlgorithmChildren().get(0);
+ if (hasSubStruct && borderRect.getGraphicsAlgorithmChildren().isEmpty())
+ return Reason.createTrueReason("Ref has sub structure now");
+ if (!hasSubStruct && !borderRect.getGraphicsAlgorithmChildren().isEmpty())
+ return Reason.createTrueReason("Ref has no sub structure anymore");
+ }
+ }
+
+ // check class name
+ int last = containerShape.getChildren().size()-1;
+ if (last>=0) {
+ GraphicsAlgorithm ga = containerShape.getChildren().get(last).getGraphicsAlgorithm();
+ if (ga instanceof Text) {
+ if (bo instanceof ActorContainerRef) {
+ String label = getLabel((ActorContainerRef) bo);
+ if (!((Text)ga).getValue().equals(label))
+ return Reason.createTrueReason("Class name is out of date");
+ }
+ }
+ }
+
+ // TODOHRR: check interface ports and spps added to model not present in diagram
+
+ return Reason.createFalseReason();
+ }
+
+ @Override
+ public boolean update(IUpdateContext context) {
+ ContainerShape containerShape = (ContainerShape)context.getPictogramElement();
+ Object bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ IRemoveContext rc = new RemoveContext(containerShape);
+ IFeatureProvider featureProvider = getFeatureProvider();
+ IRemoveFeature removeFeature = featureProvider.getRemoveFeature(rc);
+ if (removeFeature != null) {
+ removeFeature.remove(rc);
+ }
+ EcoreUtil.delete((EObject) bo);
+ return true;
+ }
+
+ {
+ ActorContainerRef acr = (ActorContainerRef) bo;
+ boolean hasSubStruct = hasSubStructure(acr);
+ if (hasSubStruct && containerShape.getGraphicsAlgorithm().getGraphicsAlgorithmChildren().isEmpty()) {
+ EObject parent = containerShape.getContainer().getLink().getBusinessObjects().get(0);
+ Color lineColor = manageColor(isInherited(acr, parent)?INHERITED_COLOR:LINE_COLOR);
+ addSubStructureHint(acr, (Rectangle) containerShape.getGraphicsAlgorithm(), lineColor);
+ }
+ else if (!hasSubStruct && !containerShape.getGraphicsAlgorithm().getGraphicsAlgorithmChildren().isEmpty())
+ containerShape.getGraphicsAlgorithm().getGraphicsAlgorithmChildren().clear();
+ }
+
+ int last = containerShape.getChildren().size()-1;
+ if (last>=0) {
+ GraphicsAlgorithm ga = containerShape.getChildren().get(last).getGraphicsAlgorithm();
+ if (ga instanceof Text) {
+ if (bo instanceof ActorContainerRef) {
+ ((Text)ga).setValue(getLabel((ActorContainerRef) bo));
+ }
+ }
+ }
+
+ // TODOHRR: add interface ports and spps added to model not present in diagram
+
+ return true;
+ }
+ }
+
+ private class MoveShapeFeature extends DefaultMoveShapeFeature {
+
+ public MoveShapeFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canMoveShape(IMoveShapeContext context) {
+ boolean canMove = super.canMoveShape(context);
+
+ if (canMove) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+
+ if (bo instanceof ActorContainerRef) {
+ ActorContainerRef ar = (ActorContainerRef) bo;
+ ContainerShape acShape = context.getTargetContainer();
+ EObject parent = acShape.getLink().getBusinessObjects().get(0);
+
+ // TODOHRR: also check coordinates (no overlap with actor boundaries)
+
+ return !isInherited(ar, parent);
+ }
+ }
+
+ return canMove;
+ }
+ }
+
+ private class ResizeFeature extends DefaultResizeShapeFeature {
+
+ public ResizeFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canResizeShape(IResizeShapeContext context) {
+ if (!super.canResizeShape(context))
+ return false;
+
+ int width = context.getWidth()-MARGIN;
+ int height = context.getHeight()-MARGIN;
+ if (width>0 && height>0)
+ if (width < MIN_SIZE_X+MARGIN || height < MIN_SIZE_Y+MARGIN)
+ return false;
+
+ // TODOHRR: check interface ports and saps
+
+ int xmax = 0;
+ int ymax = 0;
+ for (Shape childShape : ((ContainerShape)context.getShape()).getChildren()) {
+ GraphicsAlgorithm ga = childShape.getGraphicsAlgorithm();
+
+ // don't consider Text
+ if (!(ga instanceof Text)) {
+ // ga is the invisible rect of the port
+ int x = ga.getX()+ga.getWidth()-ActorContainerRefSupport.MARGIN;
+ int y = ga.getY()+ga.getHeight()-ActorContainerRefSupport.MARGIN;
+ if (x>xmax)
+ xmax = x;
+ if (y>ymax)
+ ymax = y;
+ }
+ }
+ if (width>0 && width<xmax)
+ return false;
+ if (height>0 && height<ymax)
+ return false;
+
+ return true;
+ }
+ }
+
+ private IFeatureProvider fp;
+
+ public FeatureProvider(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ super(dtp);
+ this.fp = fp;
+ }
+
+ @Override
+ public ICreateFeature[] getCreateFeatures() {
+ return new ICreateFeature[] { new CreateFeature(fp, true), new CreateFeature(fp, false) };
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IAddContext context) {
+ return new AddFeature(fp);
+ }
+
+ @Override
+ public ILayoutFeature getLayoutFeature(ILayoutContext context) {
+ return new LayoutFeature(fp);
+ }
+
+ @Override
+ public IUpdateFeature getUpdateFeature(IUpdateContext context) {
+ return new UpdateFeature(fp);
+ }
+
+ @Override
+ public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context) {
+ return new MoveShapeFeature(fp);
+ }
+
+ @Override
+ public IResizeShapeFeature getResizeShapeFeature(
+ IResizeShapeContext context) {
+ return new ResizeFeature(fp);
+ }
+
+ @Override
+ public ICustomFeature[] getCustomFeatures(ICustomContext context) {
+ return new ICustomFeature[] { new PropertyFeature(fp), new DrillDownFeature(fp) };
+ }
+
+ protected static String getLabel(ActorContainerRef acr) {
+ String className = "<unknown>";
+ if (acr instanceof ActorRef) {
+ if (((ActorRef)acr).getType()!=null)
+ className = ((ActorRef)acr).getType().getName();
+ }
+ else if (acr instanceof SubSystemRef) {
+ if (((SubSystemRef)acr).getType()!=null)
+ className = ((SubSystemRef)acr).getType().getName();
+ }
+ return acr.getName()+"\n("+className+")";
+ }
+
+ protected static boolean isInherited(ActorContainerRef ar, EObject parent) {
+ return ar.eContainer()!=parent;
+ }
+
+ private static boolean hasSubStructure(ActorContainerRef acr) {
+ if (acr instanceof ActorRef) {
+ if (!((ActorRef) acr).getType().getActorRefs().isEmpty())
+ return true;
+ }
+ else if (acr instanceof SubSystemRef) {
+ if (!((SubSystemRef)acr).getType().getActorRefs().isEmpty())
+ return true;
+ }
+ return false;
+ }
+
+ private static void addSubStructureHint(ActorContainerRef acr,
+ Rectangle rect, Color lineColor) {
+
+ if (hasSubStructure(acr)) {
+ int x = rect.getWidth()-35;
+ int y = rect.getHeight()-30;
+ IGaService gaService = Graphiti.getGaService();
+ Rectangle hint1 = gaService.createRectangle(rect);
+ hint1.setForeground(lineColor);
+ hint1.setFilled(false);
+ hint1.setLineWidth(LINE_WIDTH);
+ gaService.setLocationAndSize(hint1, x+5, y, 20, 10);
+ Rectangle hint2 = gaService.createRectangle(rect);
+ hint2.setForeground(lineColor);
+ hint2.setFilled(false);
+ hint2.setLineWidth(LINE_WIDTH);
+ gaService.setLocationAndSize(hint2, x, y+15, 20, 10);
+ }
+ }
+ }
+
+ private class BehaviorProvider extends DefaultToolBehaviorProvider {
+
+ public BehaviorProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+
+ @Override
+ public GraphicsAlgorithm[] getClickArea(PictogramElement pe) {
+ GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
+ GraphicsAlgorithm rectangle =
+ invisible.getGraphicsAlgorithmChildren().get(0);
+ return new GraphicsAlgorithm[] { rectangle };
+ }
+
+ @Override
+ public GraphicsAlgorithm getSelectionBorder(PictogramElement pe) {
+ GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
+
+ GraphicsAlgorithm rectangle =
+ invisible.getGraphicsAlgorithmChildren().get(0);
+ return rectangle;
+ }
+
+ @Override
+ public ICustomFeature getDoubleClickFeature(IDoubleClickContext context) {
+ return new FeatureProvider.DrillDownFeature(getDiagramTypeProvider().getFeatureProvider());
+ }
+ }
+
+ private FeatureProvider pfp;
+ private BehaviorProvider tbp;
+
+ public ActorContainerRefSupport(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ pfp = new FeatureProvider(dtp,fp);
+ tbp = new BehaviorProvider(dtp);
+ }
+
+ public IFeatureProvider getFeatureProvider() {
+ return pfp;
+ }
+
+ public IToolBehaviorProvider getToolBehaviorProvider() {
+ return tbp;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/BindingSupport.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/BindingSupport.java
new file mode 100644
index 000000000..19d916fbb
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/BindingSupport.java
@@ -0,0 +1,337 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.etrice.ui.structure.ImageProvider;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateConnectionFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IAddConnectionContext;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICreateConnectionContext;
+import org.eclipse.graphiti.features.context.IRemoveContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.AddConnectionContext;
+import org.eclipse.graphiti.features.context.impl.RemoveContext;
+import org.eclipse.graphiti.features.impl.AbstractAddFeature;
+import org.eclipse.graphiti.features.impl.AbstractCreateConnectionFeature;
+import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;
+import org.eclipse.graphiti.features.impl.Reason;
+import org.eclipse.graphiti.mm.algorithms.Polyline;
+import org.eclipse.graphiti.mm.pictograms.Anchor;
+import org.eclipse.graphiti.mm.pictograms.Connection;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.Binding;
+import org.eclipse.etrice.core.room.BindingEndPoint;
+import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.StructureClass;
+import org.eclipse.etrice.core.room.SubSystemClass;
+
+public class BindingSupport {
+
+ private static final IColorConstant LINE_COLOR = new ColorConstant(0, 0, 0);
+
+ class FeatureProvider extends DefaultFeatureProvider {
+
+ private class CreateFeature extends AbstractCreateConnectionFeature {
+
+ private boolean justStarted = false;
+
+ public CreateFeature(IFeatureProvider fp) {
+ super(fp, "Binding", "create Binding");
+ }
+
+ @Override
+ public String getCreateImageId() {
+ return ImageProvider.IMG_BINDING;
+ }
+
+ @Override
+ public boolean canCreate(ICreateConnectionContext context) {
+ Port src = getPort(context.getSourceAnchor());
+ Port tgt = getPort(context.getTargetAnchor());
+ ActorContainerRef srcRef = getRef(context.getSourceAnchor());
+
+ if (justStarted) {
+ justStarted = false;
+ beginHighLightMatches(src, srcRef);
+ }
+
+ if (src==null || tgt==null) {
+ return false;
+ }
+
+ StructureClass ac = getParent(context);
+ if (ac==null) {
+ return false;
+ }
+
+ ActorContainerRef tgtRef = getRef(context.getTargetAnchor());
+
+ return ValidationUtil.isConnectable(src, srcRef, tgt, tgtRef, ac);
+ }
+
+ public boolean canStartConnection(ICreateConnectionContext context) {
+ Port src = getPort(context.getSourceAnchor());
+ boolean canStart = src!=null;
+ if (canStart) {
+ ActorContainerRef ref = getRef(context.getSourceAnchor());
+ if (ref==null) {
+ // this port is local, i.e. owned by the parent itself
+ ActorContainerClass acc = (ActorContainerClass) src.eContainer();
+ if (!ValidationUtil.isConnectable(src, null, acc))
+ canStart = false;
+ }
+ else {
+ ActorContainerClass acc = (ActorContainerClass) ref.eContainer();
+ if (!ValidationUtil.isConnectable(src, ref, acc))
+ canStart = false;
+ }
+ }
+ if (canStart)
+ justStarted = true;
+ return canStart;
+ }
+
+ private Port getPort(Anchor anchor) {
+ if (anchor != null) {
+ Object obj = getBusinessObjectForPictogramElement(anchor.getParent());
+ if (obj instanceof Port) {
+ return (Port) obj;
+ }
+ }
+ return null;
+ }
+
+ public StructureClass getParent(ICreateConnectionContext context) {
+ ContainerShape shape = (ContainerShape) context.getSourcePictogramElement().eContainer();
+ Object bo = getBusinessObjectForPictogramElement(shape);
+ if (bo instanceof StructureClass)
+ return (StructureClass) bo;
+
+ shape = (ContainerShape) shape.eContainer();
+ bo = getBusinessObjectForPictogramElement(shape);
+ if (bo instanceof StructureClass)
+ return (StructureClass) bo;
+
+ return null;
+ }
+
+ public ActorContainerRef getRef(Anchor anchor) {
+ ContainerShape shape = (ContainerShape) anchor.getParent().eContainer();
+ Object bo = getBusinessObjectForPictogramElement(shape);
+ if (bo instanceof ActorContainerRef)
+ return (ActorContainerRef) bo;
+
+ return null;
+ }
+
+ @Override
+ public Connection create(ICreateConnectionContext context) {
+ Connection newConnection = null;
+
+ endHighLightMatches();
+
+ Port src = getPort(context.getSourceAnchor());
+ Port dst = getPort(context.getTargetAnchor());
+ StructureClass ac = getParent(context);
+ if (src!=null && dst!=null && ac!=null) {
+ Binding bind = RoomFactory.eINSTANCE.createBinding();
+ BindingEndPoint ep1 = RoomFactory.eINSTANCE.createBindingEndPoint();
+ ActorContainerRef ar1 = getRef(context.getSourceAnchor());
+ ep1.setPort(src);
+ ep1.setActorRef(ar1);
+ BindingEndPoint ep2 = RoomFactory.eINSTANCE.createBindingEndPoint();
+ ActorContainerRef ar2 = getRef(context.getTargetAnchor());
+ ep2.setPort(dst);
+ ep2.setActorRef(ar2);
+ bind.setEndpoint1(ep1);
+ bind.setEndpoint2(ep2);
+ ac.getBindings().add(bind);
+
+ AddConnectionContext addContext = new AddConnectionContext(context.getSourceAnchor(), context.getTargetAnchor());
+ addContext.setNewObject(bind);
+ newConnection = (Connection) getFeatureProvider().addIfPossible(addContext);
+ }
+
+ return newConnection;
+ }
+
+ private void beginHighLightMatches(Port port, ActorContainerRef ref) {
+ if (port==null)
+ return;
+
+ StructureClass acc = (ActorContainerClass) ((ref!=null)? ref.eContainer():port.eContainer());
+ if (acc instanceof ActorClass) {
+
+ }
+ else if (acc instanceof SubSystemClass) {
+
+ }
+ else if (acc instanceof LogicalSystem) {
+
+ }
+ else {
+ assert(false): "unknown kind of StructureClass";
+ }
+ }
+
+ private void endHighLightMatches() {
+ }
+ }
+
+ private class AddFeature extends AbstractAddFeature {
+
+ public AddFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canAdd(IAddContext context) {
+ if (context instanceof IAddConnectionContext && context.getNewObject() instanceof Binding) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public PictogramElement add(IAddContext context) {
+ IAddConnectionContext addConContext = (IAddConnectionContext) context;
+ Binding addedEReference = (Binding) context.getNewObject();
+
+ IPeCreateService peCreateService = Graphiti.getPeCreateService();
+ // CONNECTION WITH POLYLINE
+ Connection connection = peCreateService.createFreeFormConnection(getDiagram());
+ connection.setStart(addConContext.getSourceAnchor());
+ connection.setEnd(addConContext.getTargetAnchor());
+
+ Graphiti.getPeService().setPropertyValue(connection, Constants.TYPE_KEY, Constants.BIND_TYPE);
+
+ IGaService gaService = Graphiti.getGaService();
+ Polyline polyline = gaService.createPolyline(connection);
+ polyline.setForeground(manageColor(LINE_COLOR));
+
+ // create link and wire it
+ link(connection, addedEReference);
+
+ return connection;
+ }
+
+ }
+
+ private class UpdateFeature extends AbstractUpdateFeature {
+
+ public UpdateFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canUpdate(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy())
+ return true;
+
+ return false;
+ }
+
+ @Override
+ public IReason updateNeeded(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ return Reason.createTrueReason("Binding deleted from model");
+ }
+ return Reason.createFalseReason();
+ }
+
+ @Override
+ public boolean update(IUpdateContext context) {
+ ContainerShape containerShape = (ContainerShape)context.getPictogramElement();
+ Object bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ IRemoveContext rc = new RemoveContext(containerShape);
+ IFeatureProvider featureProvider = getFeatureProvider();
+ IRemoveFeature removeFeature = featureProvider.getRemoveFeature(rc);
+ if (removeFeature != null) {
+ removeFeature.remove(rc);
+ }
+ EcoreUtil.delete((EObject) bo);
+ return true;
+ }
+ return false;
+ }
+ }
+
+ private IFeatureProvider fp;
+
+ public FeatureProvider(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ super(dtp);
+ this.fp = fp;
+ }
+
+ @Override
+ public ICreateConnectionFeature[] getCreateConnectionFeatures() {
+ return new ICreateConnectionFeature[] { new CreateFeature(fp) };
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IAddContext context) {
+ return new AddFeature(fp);
+ }
+
+ @Override
+ public IUpdateFeature getUpdateFeature(IUpdateContext context) {
+ return new UpdateFeature(fp);
+ }
+ }
+
+ class BehaviorProvider extends DefaultToolBehaviorProvider {
+
+ public BehaviorProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+ }
+
+ private FeatureProvider pfp;
+ private BehaviorProvider tbp;
+
+ public BindingSupport(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ pfp = new FeatureProvider(dtp,fp);
+ tbp = new BehaviorProvider(dtp);
+ }
+
+ public IFeatureProvider getFeatureProvider() {
+ return pfp;
+ }
+
+ public IToolBehaviorProvider getToolBehaviorProvider() {
+ return tbp;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/Constants.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/Constants.java
new file mode 100644
index 000000000..645dd4834
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/Constants.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+public interface Constants {
+
+ static final String TYPE_KEY = "obj-type";
+
+ static final String CLS_TYPE = "cls";
+ static final String PORT_TYPE = "port";
+ static final String SPP_TYPE = "spp";
+ static final String REF_TYPE = "ref";
+ static final String BIND_TYPE = "bind";
+ static final String CONN_TYPE = "conn";
+
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/InterfaceItemSupport.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/InterfaceItemSupport.java
new file mode 100644
index 000000000..f4263ce49
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/InterfaceItemSupport.java
@@ -0,0 +1,743 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.etrice.ui.structure.DiagramAccess;
+import org.eclipse.etrice.ui.structure.NoResizeFeature;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IDeleteFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IMoveShapeFeature;
+import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.IResizeShapeFeature;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICreateContext;
+import org.eclipse.graphiti.features.context.ICustomContext;
+import org.eclipse.graphiti.features.context.IDeleteContext;
+import org.eclipse.graphiti.features.context.ILocationContext;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
+import org.eclipse.graphiti.features.context.IRemoveContext;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.context.ITargetContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.AddContext;
+import org.eclipse.graphiti.features.context.impl.RemoveContext;
+import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
+import org.eclipse.graphiti.features.impl.AbstractAddFeature;
+import org.eclipse.graphiti.features.impl.AbstractCreateFeature;
+import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;
+import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
+import org.eclipse.graphiti.features.impl.DefaultRemoveFeature;
+import org.eclipse.graphiti.features.impl.Reason;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Rectangle;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.mm.algorithms.styles.Color;
+import org.eclipse.graphiti.mm.algorithms.styles.Orientation;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider;
+import org.eclipse.graphiti.ui.features.DefaultDeleteFeature;
+import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.ActorRef;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.core.room.SubSystemRef;
+
+public class InterfaceItemSupport {
+
+ public static final int ITEM_SIZE = StructureClassSupport.MARGIN;
+ public static final int ITEM_SIZE_SMALL = ActorContainerRefSupport.MARGIN;
+
+ protected static final int LINE_WIDTH = 2;
+ protected static final IColorConstant DARK_COLOR = new ColorConstant(0, 0, 0);
+ protected static final IColorConstant INHERITED_COLOR = new ColorConstant(100, 100, 100);
+ protected static final IColorConstant BRIGHT_COLOR = new ColorConstant(255, 255, 255);
+ protected static final String PROP_KIND = "item-kind";
+
+ protected static class FeatureProvider extends DefaultFeatureProvider {
+
+ protected abstract static class CreateFeature extends AbstractCreateFeature {
+
+ protected boolean internal;
+ protected boolean doneChanges = false;
+
+ public CreateFeature(IFeatureProvider fp, boolean internal, String name, String description) {
+ super(fp, name, description);
+ this.internal = internal;
+ }
+
+ @Override
+ public boolean canCreate(ICreateContext context) {
+ if (context.getTargetContainer().getLink()!=null)
+ if (context.getTargetContainer().getLink().getBusinessObjects().size()==1) {
+ EObject obj = context.getTargetContainer().getLink().getBusinessObjects().get(0);
+ if (obj instanceof ActorContainerClass) {
+ if (obj instanceof ActorClass)
+ return isValidPosition(context, context, internal, StructureClassSupport.MARGIN);
+ else
+ return !internal;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean hasDoneChanges() {
+ return doneChanges;
+ }
+ }
+
+ protected abstract static class AddFeature extends AbstractAddFeature {
+
+ public AddFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canAdd(IAddContext context) {
+ if (context.getNewObject() instanceof InterfaceItem) {
+ if (context.getTargetContainer().getLink().getBusinessObjects().size()==1) {
+ EObject obj = context.getTargetContainer().getLink().getBusinessObjects().get(0);
+ if (obj instanceof ActorContainerClass) {
+ return true;
+ }
+ if (obj instanceof ActorContainerRef) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public PictogramElement add(IAddContext context) {
+ InterfaceItem port = (InterfaceItem) context.getNewObject();
+ boolean internal = isInternal(port);
+ ContainerShape acShape = context.getTargetContainer();
+ Object bo = getBusinessObjectForPictogramElement(acShape);
+ boolean inherited = isInherited(port, bo, acShape);
+ boolean refport = (bo instanceof ActorContainerRef);
+
+ int margin = refport?ITEM_SIZE_SMALL:ITEM_SIZE;
+ int size = refport?ITEM_SIZE_SMALL:ITEM_SIZE;
+
+ // CONTAINER SHAPE WITH RECTANGLE
+ IPeCreateService peCreateService = Graphiti.getPeCreateService();
+ ContainerShape containerShape =
+ peCreateService.createContainerShape(acShape, true);
+
+ Graphiti.getPeService().setPropertyValue(containerShape, Constants.TYPE_KEY, Constants.PORT_TYPE);
+
+ String kind = getItemKind(port);
+ Graphiti.getPeService().setPropertyValue(containerShape, PROP_KIND, kind);
+
+ // we have relative coordinates here
+ int x = context.getX();
+ int y = context.getY();
+ int width = acShape.getGraphicsAlgorithm().getWidth();
+ int height = acShape.getGraphicsAlgorithm().getHeight();
+ if (internal) {
+ if (x<2*margin)
+ x = 2*margin;
+ else if (x>width-3*margin)
+ x = width-3*margin;
+ if (y<2*margin)
+ y = 2*margin;
+ else if (y>height-3*margin)
+ y = height-3*margin;
+ }
+ else {
+ int dx = (x<=width/2)? x:width-x;
+ int dy = (y<=height/2)? y:height-y;
+ if (dx>dy) {
+ // keep x, project y
+ if (y<=height/2)
+ y = 0;
+ else
+ y = height-2*margin;
+ }
+ else {
+ // keep y, project x
+ if (x<=width/2)
+ x = 0;
+ else
+ x = width-2*margin;
+ }
+ }
+
+ Color dark = manageColor(inherited? INHERITED_COLOR:DARK_COLOR);
+ IGaService gaService = Graphiti.getGaService();
+ {
+ final Rectangle invisibleRectangle = gaService.createInvisibleRectangle(containerShape);
+ gaService.setLocationAndSize(invisibleRectangle, x, y, 2*size, 2*size);
+
+ createItemFigure(port, refport,
+ containerShape,
+ invisibleRectangle,
+ dark,
+ manageColor(BRIGHT_COLOR));
+
+ // create link and wire it
+ link(containerShape, port);
+ }
+
+ {
+ Shape labelShape = peCreateService.createShape(containerShape, false);
+ Text label = gaService.createDefaultText(labelShape, port.getName());
+ label.setForeground(dark);
+ label.setBackground(dark);
+ label.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
+ label.setVerticalAlignment(Orientation.ALIGNMENT_CENTER);
+ gaService.setLocationAndSize(label, 0, 3*size/2, 2*size, size/2);
+ adjustLabel(label, x, y, width, margin, size);
+ }
+
+ // call the layout feature
+ layoutPictogramElement(containerShape);
+
+ return containerShape;
+
+ }
+
+ protected abstract String getItemKind(InterfaceItem item);
+ protected abstract void createItemFigure(InterfaceItem item, boolean refitem,
+ ContainerShape containerShape,
+ GraphicsAlgorithm invisibleRectangle, Color darkColor, Color brightDolor);
+ }
+
+ protected class MoveShapeFeature extends DefaultMoveShapeFeature {
+
+ public MoveShapeFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canMoveShape(IMoveShapeContext context) {
+ boolean canMove = super.canMoveShape(context);
+
+ if (canMove) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof InterfaceItem) {
+ InterfaceItem item = (InterfaceItem) bo;
+
+ ContainerShape acShape = context.getTargetContainer();
+ Object parentBO = getBusinessObjectForPictogramElement(acShape);
+ if (isInherited(item, parentBO, acShape))
+ return false;
+
+ boolean refport = (parentBO instanceof ActorContainerRef);
+ int margin = refport?ActorContainerRefSupport.MARGIN:StructureClassSupport.MARGIN;
+ return isValidPosition(context, context, isInternal(item), margin);
+ }
+ return false;
+ }
+
+ return canMove;
+ }
+
+ @Override
+ protected void postMoveShape(IMoveShapeContext context) {
+ ContainerShape shapeToMove = (ContainerShape) context.getShape();
+
+ InterfaceItem item = (InterfaceItem) getBusinessObjectForPictogramElement(shapeToMove);
+ boolean internal = isInternal(item);
+ ContainerShape acShape = context.getTargetContainer();
+ boolean refport = (getBusinessObjectForPictogramElement(acShape) instanceof ActorContainerRef);
+
+ int margin = refport?ActorContainerRefSupport.MARGIN:StructureClassSupport.MARGIN;
+ int size = refport?ActorContainerRefSupport.MARGIN:ITEM_SIZE;
+
+ int x = context.getX();
+ int y = context.getY();
+ int width = context.getTargetContainer().getGraphicsAlgorithm().getGraphicsAlgorithmChildren().get(0).getWidth();
+ int height = context.getTargetContainer().getGraphicsAlgorithm().getGraphicsAlgorithmChildren().get(0).getHeight();
+
+ if (internal) {
+ // nothing to do
+ }
+ else {
+ // project onto boundary
+ if (x<=margin)
+ x = 0;
+ if (y<=margin)
+ y = 0;
+ if ((width-margin)<=x)
+ x = width;
+ if ((height-margin)<=y)
+ y = height;
+ }
+
+ Graphiti.getGaService().setLocation(shapeToMove.getGraphicsAlgorithm(), x, y, avoidNegativeCoordinates());
+
+ GraphicsAlgorithm ga = shapeToMove.getChildren().get(0).getGraphicsAlgorithm();
+ if (ga instanceof Text) {
+ adjustLabel((Text) ga, x, y, width, margin, size);
+ }
+ }
+ }
+
+ protected abstract class UpdateFeature extends AbstractUpdateFeature {
+
+ public UpdateFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canUpdate(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy())
+ return true;
+
+ return bo instanceof InterfaceItem;
+ }
+
+ @Override
+ public IReason updateNeeded(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ return Reason.createTrueReason("InterfaceItem deleted from model");
+ }
+ InterfaceItem port = (InterfaceItem) bo;
+
+ // check if port still owned/inherited
+ ContainerShape containerShape = (ContainerShape)context.getPictogramElement();
+ bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof ActorClass) {
+ ActorClass ac = (ActorClass) bo;
+ boolean found = false;
+ do {
+ if (ac==port.eContainer())
+ found = true;
+ ac = ac.getBase();
+ }
+ while (!found && ac!=null);
+
+ if (!found)
+ return Reason.createTrueReason("InterfaceItem not inherited anymore");
+ }
+
+ GraphicsAlgorithm ga = containerShape.getChildren().get(0).getGraphicsAlgorithm();
+ if (ga instanceof Text) {
+ if (!port.getName().equals(((Text)ga).getValue()))
+ return Reason.createTrueReason("Name is out of date");
+
+ String kind = getItemKind(port);
+ if (!kind.equals(Graphiti.getPeService().getPropertyValue(context.getPictogramElement(), PROP_KIND)))
+ return Reason.createTrueReason("Figure is out of date");
+ }
+ return Reason.createFalseReason();
+ }
+
+ @Override
+ public boolean update(IUpdateContext context) {
+ ContainerShape containerShape = (ContainerShape)context.getPictogramElement();
+ Object bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ IRemoveContext rc = new RemoveContext(containerShape);
+ IFeatureProvider featureProvider = getFeatureProvider();
+ IRemoveFeature removeFeature = featureProvider.getRemoveFeature(rc);
+ if (removeFeature != null) {
+ removeFeature.remove(rc);
+ }
+ EcoreUtil.delete((EObject) bo);
+ return true;
+ }
+ InterfaceItem port = (InterfaceItem) bo;
+
+ boolean inherited = isInherited(port, bo, containerShape);
+
+ Color dark = manageColor(inherited? INHERITED_COLOR:DARK_COLOR);
+ updateFigure(port, containerShape, dark, manageColor(BRIGHT_COLOR));
+ String kind = getItemKind(port);
+ Graphiti.getPeService().setPropertyValue(containerShape, PROP_KIND, kind);
+ return true;
+ }
+
+ protected abstract String getItemKind(InterfaceItem item);
+ protected abstract void updateFigure(InterfaceItem item, PictogramElement pe, Color dark, Color bright);
+ }
+
+
+ protected static abstract class PropertyFeature extends AbstractCustomFeature {
+
+ private String name;
+ private String description;
+
+ public PropertyFeature(IFeatureProvider fp, String name, String description) {
+ super(fp);
+ this.name = name;
+ this.description = description;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public boolean canExecute(ICustomContext context) {
+ PictogramElement[] pes = context.getPictogramElements();
+ if (pes != null && pes.length == 1 && pes[0] instanceof ContainerShape) {
+ Object bo = getBusinessObjectForPictogramElement(pes[0]);
+ if (bo instanceof InterfaceItem) {
+ ContainerShape container = (ContainerShape)pes[0];
+ bo = getBusinessObjectForPictogramElement(container);
+ if (bo instanceof ActorContainerRef)
+ return false;
+
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ protected static class RemoveFeature extends DefaultRemoveFeature {
+
+ public RemoveFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ public boolean canRemove(IRemoveContext context) {
+ return !isRefItem(context.getPictogramElement());
+ }
+ }
+
+ protected static class DeleteFeature extends DefaultDeleteFeature {
+
+ public DeleteFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canDelete(IDeleteContext context) {
+ return !isRefItem(context.getPictogramElement());
+ }
+ }
+
+ protected IFeatureProvider fp;
+
+ protected FeatureProvider(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ super(dtp);
+ this.fp = fp;
+ }
+
+ protected static boolean isRefItem(PictogramElement pe) {
+ if (!(pe instanceof ContainerShape))
+ return false;
+
+ ContainerShape acShape = ((ContainerShape)pe).getContainer();
+
+ if (acShape.getLink()==null || acShape.getLink().getBusinessObjects().isEmpty())
+ return false;
+
+ Object parent = acShape.getLink().getBusinessObjects().get(0);
+
+ return (parent instanceof ActorContainerRef);
+ }
+
+ protected static boolean isInternal(InterfaceItem item) {
+ if (item instanceof Port) {
+ Port port = (Port) item;
+
+ // NB: the port's container might be a base class of the depicted actor class
+ ActorContainerClass acc = (ActorContainerClass) port.eContainer();
+ if (acc instanceof ActorClass) {
+ ActorClass ac = (ActorClass) acc;
+ if (ac.getIntPorts().contains(port))
+ return true;
+ }
+ }
+ else if (item instanceof SPPRef) {
+ return false;
+ }
+ else {
+ assert(false): "unexpected sub type";
+ }
+
+ return false;
+ }
+
+ protected static boolean isInherited(InterfaceItem item, Object container, ContainerShape cs) {
+ if (container instanceof ActorClass) {
+ ActorClass ac = (ActorClass) container;
+ return item.eContainer()!=ac;
+ }
+ else if (container instanceof ActorRef) {
+ // have to check whether the ActorRef is inherited
+ ActorRef ar = (ActorRef) container;
+ ContainerShape arCont = cs.getContainer();
+ EObject cls = arCont.getLink().getBusinessObjects().get(0);
+ if (cls instanceof ActorClass)
+ return ar.eContainer()!=cls;
+
+ // cls is a SubSystemClass
+ return false;
+ }
+ else if (container instanceof SubSystemRef) {
+ // SubSystemRefs only occur in LogicalSystems, no inheritance
+ return false;
+ }
+
+ return false;
+ }
+
+ protected static boolean isValidPosition(ILocationContext loc, ITargetContext tgt, boolean internal, int margin) {
+ //System.out.println("isValidPosition "+tgt.getTargetContainer());
+ if (tgt.getTargetContainer().getGraphicsAlgorithm()==null)
+ return false;
+ if (tgt.getTargetContainer().getGraphicsAlgorithm().getGraphicsAlgorithmChildren().isEmpty())
+ return false;
+
+ int x = loc.getX();
+ int y = loc.getY();
+ if (loc instanceof ICreateContext) {
+ // adjust position as relative to visible rectangle
+ x -= margin;
+ y -= margin;
+ }
+ int width = tgt.getTargetContainer().getGraphicsAlgorithm().getGraphicsAlgorithmChildren().get(0).getWidth();
+ int height = tgt.getTargetContainer().getGraphicsAlgorithm().getGraphicsAlgorithmChildren().get(0).getHeight();
+
+ boolean inStripe = false;
+
+ // may move in a stripe along the actor class border
+ int stripe = margin/2;
+ if (x<=stripe)
+ inStripe = true;
+ else if (y<=stripe)
+ inStripe = true;
+ else if ((width-stripe)<=x)
+ inStripe = true;
+ else if ((height-stripe)<=y)
+ inStripe = true;
+
+ //System.out.println("w:"+width+" h:"+height+" x:"+x+" y:"+y+" in stripe "+inStripe);
+
+ if (internal)
+ return !inStripe;
+ else
+ return inStripe;
+ }
+
+ @Override
+ public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context) {
+ return new MoveShapeFeature(fp);
+ }
+
+ @Override
+ public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context) {
+ return new NoResizeFeature(fp);
+ }
+
+ @Override
+ public IRemoveFeature getRemoveFeature(IRemoveContext context) {
+ return new RemoveFeature(fp);
+ }
+
+ @Override
+ public IDeleteFeature getDeleteFeature(IDeleteContext context) {
+ return new DeleteFeature(fp);
+ }
+
+ protected static void adjustLabel(Text label, int x, int y, int width, int margin, int size) {
+ Orientation align = Orientation.ALIGNMENT_CENTER;
+ label.setHorizontalAlignment(align);
+
+ int pos = 3*size/2;
+
+ if (x<=margin)
+ align = Orientation.ALIGNMENT_LEFT;
+ else if ((width-margin)<=x)
+ align = Orientation.ALIGNMENT_RIGHT;
+ if (y<=margin)
+ pos = 0;
+
+ if (align!=label.getHorizontalAlignment()) {
+ label.setHorizontalAlignment(align);
+ }
+ if (pos!=label.getY()) {
+ IGaService gaService = Graphiti.getGaService();
+ gaService.setLocationAndSize(label, 0, pos, 2*size, size/2);
+ }
+ }
+
+ }
+
+ protected static class BehaviorProvider extends DefaultToolBehaviorProvider {
+
+ public BehaviorProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+
+ @Override
+ public GraphicsAlgorithm[] getClickArea(PictogramElement pe) {
+ GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
+ GraphicsAlgorithm rectangle =
+ invisible.getGraphicsAlgorithmChildren().get(0);
+ return new GraphicsAlgorithm[] { rectangle };
+ }
+
+ @Override
+ public GraphicsAlgorithm getSelectionBorder(PictogramElement pe) {
+ GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
+
+ GraphicsAlgorithm rectangle =
+ invisible.getGraphicsAlgorithmChildren().get(0);
+ return rectangle;
+ }
+ }
+
+ private static List<InterfaceItem> getInterfaceItems(ActorContainerClass acc) {
+ ArrayList<InterfaceItem> result = new ArrayList<InterfaceItem>();
+
+ result.addAll(acc.getIfSPPs());
+
+ if (acc instanceof ActorClass) {
+ result.addAll(((ActorClass) acc).getIfPorts());
+ }
+ else if (acc instanceof SubSystemClass) {
+ result.addAll(((SubSystemClass) acc).getRelayPorts());
+ }
+ else {
+ assert(false): "unexpected sub type";
+ }
+ return result;
+ }
+
+ public static void createRefItems(ActorContainerRef acr, ContainerShape refShape, IFeatureProvider featureProvider) {
+
+ ActorContainerClass refClass = (acr instanceof ActorRef)?((ActorRef)acr).getType():((SubSystemRef)acr).getType();
+ List<? extends InterfaceItem> refItems = getInterfaceItems(refClass);
+
+ if (refShape!=null && refClass!=null &&!refItems.isEmpty()) {
+
+ // the diagram will be created and initialized if not present
+ // TODOHRR: how to proceed if diagram not up to date?
+ Diagram refDiag = DiagramAccess.getDiagram(refClass);
+
+ ResourceSet rs = acr.eResource().getResourceSet();
+
+ if (!refDiag.getChildren().isEmpty()) {
+ ContainerShape refAcShape = (ContainerShape) refDiag.getChildren().get(0);
+ Object bo = featureProvider.getBusinessObjectForPictogramElement(refAcShape);
+ if (bo instanceof ActorContainerClass) {
+ ActorContainerClass extRefClass = (ActorContainerClass) bo;
+ assert(extRefClass.getName().equals(refClass.getName())): "structure class names must match";
+
+ List<? extends InterfaceItem> extRefItems = getInterfaceItems(extRefClass);
+
+ int scaleX = refAcShape.getGraphicsAlgorithm().getWidth()/ActorContainerRefSupport.DEFAULT_SIZE_X;
+ int scaleY = refAcShape.getGraphicsAlgorithm().getHeight()/ActorContainerRefSupport.DEFAULT_SIZE_Y;
+ for (Shape childShape : refAcShape.getChildren()) {
+ bo = featureProvider.getBusinessObjectForPictogramElement(childShape);
+ if (bo instanceof InterfaceItem) {
+ if (extRefItems.contains(bo)) {
+ // this is an interface item, insert it
+
+ EObject ownObject = getOwnObject((InterfaceItem)bo, rs);
+ int x = childShape.getGraphicsAlgorithm().getX()/scaleX;
+ int y = childShape.getGraphicsAlgorithm().getY()/scaleY;
+ addItem(ownObject, x, y, (ContainerShape)refShape, featureProvider);
+ }
+ }
+ }
+ }
+ }
+ else {
+ assert(false): "empty referenced structure class diagram";
+ }
+ }
+ }
+
+ public static void createInheritedRefItems(ActorContainerRef acr, ContainerShape arShape, IFeatureProvider featureProvider) {
+
+ ActorClass ac = (ActorClass) acr.eContainer();
+ Diagram refDiag = DiagramAccess.getDiagram(ac);
+
+ ResourceSet rs = ac.eResource().getResourceSet();
+
+ if (!refDiag.getChildren().isEmpty()) {
+ ContainerShape refAcShape = (ContainerShape) refDiag.getChildren().get(0);
+ Object bo = featureProvider.getBusinessObjectForPictogramElement(refAcShape);
+ if (bo instanceof ActorClass) {
+ ActorClass extRefClass = (ActorClass) bo;
+ assert(extRefClass.getName().equals(ac.getName())): "actor class names must match";
+
+ for (Shape childShape : refAcShape.getChildren()) {
+ bo = featureProvider.getBusinessObjectForPictogramElement(childShape);
+ if (bo instanceof ActorRef) {
+ EObject ownObject = getOwnObject((ActorRef)bo, rs);
+ if (ownObject==acr) {
+ int subScaleX = arShape.getGraphicsAlgorithm().getWidth()/ActorContainerRefSupport.DEFAULT_SIZE_X;
+ int subScaleY = arShape.getGraphicsAlgorithm().getHeight()/ActorContainerRefSupport.DEFAULT_SIZE_Y;
+
+ // add items of actor ref
+ for (Shape grandChildShape : ((ContainerShape)childShape).getChildren()) {
+ bo = featureProvider.getBusinessObjectForPictogramElement(grandChildShape);
+ if (bo instanceof InterfaceItem) {
+ ownObject = getOwnObject((Port)bo, rs);
+ int x = grandChildShape.getGraphicsAlgorithm().getX()/subScaleX;
+ int y = grandChildShape.getGraphicsAlgorithm().getY()/subScaleY;
+ addItem(ownObject, x, y, arShape, featureProvider);
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private static void addItem(EObject ownObject, int x, int y,
+ ContainerShape refShape, IFeatureProvider featureProvider) {
+ AddContext addContext = new AddContext();
+ addContext.setNewObject(ownObject);
+ addContext.setTargetContainer(refShape);
+ addContext.setX(x);
+ addContext.setY(y);
+ ContainerShape pe = (ContainerShape) featureProvider.addIfPossible(addContext);
+ assert(!pe.getAnchors().isEmpty()): "port must have an anchor";
+ }
+
+ private static EObject getOwnObject(EObject obj, ResourceSet rs) {
+ URI uri = EcoreUtil.getURI(obj);
+ EObject own = rs.getEObject(uri, true);
+ assert(own!=null): "own object must exist";
+ return own;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/LayerConnectionSupport.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/LayerConnectionSupport.java
new file mode 100644
index 000000000..7cf1baa66
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/LayerConnectionSupport.java
@@ -0,0 +1,317 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.etrice.ui.structure.ImageProvider;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateConnectionFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IAddConnectionContext;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICreateConnectionContext;
+import org.eclipse.graphiti.features.context.IRemoveContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.AddConnectionContext;
+import org.eclipse.graphiti.features.context.impl.RemoveContext;
+import org.eclipse.graphiti.features.impl.AbstractAddFeature;
+import org.eclipse.graphiti.features.impl.AbstractCreateConnectionFeature;
+import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;
+import org.eclipse.graphiti.features.impl.Reason;
+import org.eclipse.graphiti.mm.GraphicsAlgorithmContainer;
+import org.eclipse.graphiti.mm.algorithms.Polyline;
+import org.eclipse.graphiti.mm.pictograms.Anchor;
+import org.eclipse.graphiti.mm.pictograms.Connection;
+import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.ManhattanConnection;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.PictogramsFactory;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+
+import org.eclipse.etrice.core.room.ActorContainerRef;
+import org.eclipse.etrice.core.room.LayerConnection;
+import org.eclipse.etrice.core.room.RefSAPoint;
+import org.eclipse.etrice.core.room.RelaySAPoint;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.SAPoint;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.SPPoint;
+import org.eclipse.etrice.core.room.StructureClass;
+
+public class LayerConnectionSupport {
+
+ private static final IColorConstant LINE_COLOR = new ColorConstant(0, 0, 0);
+ private static final int LINE_WIDTH = 2;
+
+ class FeatureProvider extends DefaultFeatureProvider {
+
+ private class CreateFeature extends AbstractCreateConnectionFeature {
+
+ public CreateFeature(IFeatureProvider fp) {
+ super(fp, "LayerConnection", "create LayerConnection");
+ }
+
+ @Override
+ public String getCreateImageId() {
+ return ImageProvider.IMG_LAYER_CONNECTION;
+ }
+
+ @Override
+ public boolean canCreate(ICreateConnectionContext context) {
+ SPPRef src = getSPPRef(context.getSourceAnchor());
+ ActorContainerRef srcRef = getRef(context.getSourceAnchor());
+ SPPRef tgt = getSPPRef(context.getTargetAnchor());
+ ActorContainerRef tgtRef = getRef(context.getTargetAnchor());
+ StructureClass sc = getParent(context);
+
+ return ValidationUtil.isConnectable(src, srcRef, tgt, tgtRef, sc);
+ }
+
+ public boolean canStartConnection(ICreateConnectionContext context) {
+ SPPRef src = getSPPRef(context.getSourceAnchor());
+ ActorContainerRef ref = getRef(context.getSourceAnchor());
+ StructureClass sc = getParent(context);
+ return ValidationUtil.isConnectableSrc(src, ref, sc);
+ }
+
+ private SPPRef getSPPRef(Anchor anchor) {
+ if (anchor != null) {
+ Object obj = getBusinessObjectForPictogramElement(anchor.getParent());
+ if (obj instanceof SPPRef) {
+ return (SPPRef) obj;
+ }
+ }
+ return null;
+ }
+
+ public ActorContainerRef getRef(Anchor anchor) {
+ if (anchor != null) {
+ ContainerShape shape = (ContainerShape) anchor.getParent().eContainer();
+ Object bo = getBusinessObjectForPictogramElement(shape);
+ if (bo instanceof ActorContainerRef)
+ return (ActorContainerRef) bo;
+ }
+ return null;
+ }
+
+ public StructureClass getParent(ICreateConnectionContext context) {
+ ContainerShape shape = (ContainerShape) context.getSourcePictogramElement().eContainer();
+ Object bo = getBusinessObjectForPictogramElement(shape);
+ if (bo instanceof StructureClass)
+ return (StructureClass) bo;
+
+ shape = (ContainerShape) shape.eContainer();
+ bo = getBusinessObjectForPictogramElement(shape);
+ if (bo instanceof StructureClass)
+ return (StructureClass) bo;
+
+ return null;
+ }
+
+ @Override
+ public Connection create(ICreateConnectionContext context) {
+ SPPRef src = getSPPRef(context.getSourceAnchor());
+ ActorContainerRef srcRef = getRef(context.getSourceAnchor());
+ SPPRef dst = getSPPRef(context.getTargetAnchor());
+ ActorContainerRef dstRef = getRef(context.getTargetAnchor());
+
+ LayerConnection lc = RoomFactory.eINSTANCE.createLayerConnection();
+ SAPoint sapt = null;
+ if (src!=null) {
+ sapt = RoomFactory.eINSTANCE.createRelaySAPoint();
+ ((RelaySAPoint)sapt).setRelay(src);
+ }
+ else if (srcRef!=null) {
+ sapt = RoomFactory.eINSTANCE.createRefSAPoint();
+ ((RefSAPoint)sapt).setRef(srcRef);
+ }
+ lc.setFrom(sapt);
+
+ SPPoint sppt = RoomFactory.eINSTANCE.createSPPoint();
+ sppt.setRef(dstRef);
+ sppt.setService(dst);
+ lc.setTo(sppt);
+
+ AddConnectionContext addContext = new AddConnectionContext(context.getSourceAnchor(), context.getTargetAnchor());
+ addContext.setNewObject(lc);
+ return (Connection) getFeatureProvider().addIfPossible(addContext);
+ }
+ }
+
+ private class AddFeature extends AbstractAddFeature {
+
+ public AddFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canAdd(IAddContext context) {
+ if (context instanceof IAddConnectionContext && context.getNewObject() instanceof LayerConnection) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public PictogramElement add(IAddContext context) {
+ IAddConnectionContext addConContext = (IAddConnectionContext) context;
+ LayerConnection addedEReference = (LayerConnection) context.getNewObject();
+
+ IPeCreateService peCreateService = Graphiti.getPeCreateService();
+
+ Connection connection = createConnection();
+ connection.setStart(addConContext.getSourceAnchor());
+ connection.setEnd(addConContext.getTargetAnchor());
+
+ Graphiti.getPeService().setPropertyValue(connection, Constants.TYPE_KEY, Constants.CONN_TYPE);
+
+ IGaService gaService = Graphiti.getGaService();
+ Polyline polyline = gaService.createPolyline(connection);
+ polyline.setForeground(manageColor(LINE_COLOR));
+ polyline.setLineWidth(LINE_WIDTH);
+
+ ConnectionDecorator cd = peCreateService
+ .createConnectionDecorator(connection, false, 1.0, true);
+ createArrow(cd);
+
+
+ // create link and wire it
+ link(connection, addedEReference);
+
+ return connection;
+ }
+
+ private Connection createConnection() {
+// IPeCreateService peCreateService = Graphiti.getPeCreateService();
+// Connection ret = peCreateService.createManhattanConnection(getDiagram());
+ //peCreateService.createFreeFormConnection(getDiagram());
+ ManhattanConnection ret = PictogramsFactory.eINSTANCE.createManhattanConnection();
+ ret.setVisible(true);
+ ret.setActive(true);
+ ret.setParent(getDiagram());
+ return ret;
+ }
+
+ private Polyline createArrow(GraphicsAlgorithmContainer gaContainer) {
+
+ IGaService gaService = Graphiti.getGaService();
+ Polyline polyline =
+ gaService.createPolyline(gaContainer, new int[] { -15, 10, 0, 0, -15, -10 });
+
+ polyline.setForeground(manageColor(LINE_COLOR));
+ polyline.setLineWidth(LINE_WIDTH);
+
+ return polyline;
+
+ }
+
+ }
+
+ private class UpdateFeature extends AbstractUpdateFeature {
+
+ public UpdateFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canUpdate(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy())
+ return true;
+
+ return false;
+ }
+
+ @Override
+ public IReason updateNeeded(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ return Reason.createTrueReason("LayerConnection deleted from model");
+ }
+ return Reason.createFalseReason();
+ }
+
+ @Override
+ public boolean update(IUpdateContext context) {
+ ContainerShape containerShape = (ContainerShape)context.getPictogramElement();
+ Object bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ IRemoveContext rc = new RemoveContext(containerShape);
+ IFeatureProvider featureProvider = getFeatureProvider();
+ IRemoveFeature removeFeature = featureProvider.getRemoveFeature(rc);
+ if (removeFeature != null) {
+ removeFeature.remove(rc);
+ }
+ EcoreUtil.delete((EObject) bo);
+ return true;
+ }
+ return false;
+ }
+ }
+
+ private IFeatureProvider fp;
+
+ public FeatureProvider(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ super(dtp);
+ this.fp = fp;
+ }
+
+ @Override
+ public ICreateConnectionFeature[] getCreateConnectionFeatures() {
+ return new ICreateConnectionFeature[] { new CreateFeature(fp) };
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IAddContext context) {
+ return new AddFeature(fp);
+ }
+
+ @Override
+ public IUpdateFeature getUpdateFeature(IUpdateContext context) {
+ return new UpdateFeature(fp);
+ }
+ }
+
+ class BehaviorProvider extends DefaultToolBehaviorProvider {
+
+ public BehaviorProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+ }
+
+ private FeatureProvider pfp;
+ private BehaviorProvider tbp;
+
+ public LayerConnectionSupport(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ pfp = new FeatureProvider(dtp,fp);
+ tbp = new BehaviorProvider(dtp);
+ }
+
+ public IFeatureProvider getFeatureProvider() {
+ return pfp;
+ }
+
+ public IToolBehaviorProvider getToolBehaviorProvider() {
+ return tbp;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/PortSupport.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/PortSupport.java
new file mode 100644
index 000000000..7f4214085
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/PortSupport.java
@@ -0,0 +1,376 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.etrice.ui.structure.ImageProvider;
+import org.eclipse.etrice.ui.structure.dialogs.PortPropertyDialog;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateConnectionFeature;
+import org.eclipse.graphiti.features.ICreateFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICreateContext;
+import org.eclipse.graphiti.features.context.ICustomContext;
+import org.eclipse.graphiti.features.context.IDoubleClickContext;
+import org.eclipse.graphiti.features.context.IPictogramElementContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.CreateConnectionContext;
+import org.eclipse.graphiti.features.custom.ICustomFeature;
+import org.eclipse.graphiti.mm.algorithms.Ellipse;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Rectangle;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.mm.algorithms.styles.Color;
+import org.eclipse.graphiti.mm.pictograms.Anchor;
+import org.eclipse.graphiti.mm.pictograms.AnchorContainer;
+import org.eclipse.graphiti.mm.pictograms.ChopboxAnchor;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.tb.ContextButtonEntry;
+import org.eclipse.graphiti.tb.IContextButtonPadData;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.SubSystemClass;
+
+public class PortSupport extends InterfaceItemSupport {
+
+ private static final int REPL_OFFSET = ITEM_SIZE/8;
+ private static final int REPL_OFFSET_SMALL = ITEM_SIZE_SMALL/8;
+
+ private static class FeatureProvider extends InterfaceItemSupport.FeatureProvider {
+
+ private class CreateFeature extends InterfaceItemSupport.FeatureProvider.CreateFeature {
+
+ public CreateFeature(IFeatureProvider fp, boolean internal) {
+ super(fp, internal, internal?"Internal Port":"Interface Port", internal?"create internal Port":"create interface Port");
+ }
+
+ @Override
+ public String getCreateImageId() {
+ return ImageProvider.IMG_PORT;
+ }
+
+ @Override
+ public Object[] create(ICreateContext context) {
+ // create Port
+ Port port = RoomFactory.eINSTANCE.createPort();
+ port.setName("");
+
+ ActorContainerClass acc = (ActorContainerClass) context.getTargetContainer().getLink().getBusinessObjects().get(0);
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ PortPropertyDialog dlg = new PortPropertyDialog(shell, port, acc, true, false, internal);
+ if (dlg.open()!=Window.OK)
+ // find a method to abort creation
+ //throw new RuntimeException();
+ return EMPTY;
+
+ doneChanges = true;
+
+ if (acc instanceof ActorClass) {
+ ActorClass ac = (ActorClass) acc;
+ if (internal)
+ ac.getIntPorts().add(port);
+ else
+ ac.getIfPorts().add(port);
+ }
+ else if (acc instanceof SubSystemClass) {
+ SubSystemClass ssc = (SubSystemClass) acc;
+ ssc.getRelayPorts().add(port);
+ }
+ else {
+ assert(false): "ActorClass or SubSystemClass expected";
+ }
+
+ // do the add
+ addGraphicalRepresentation(context, port);
+
+ // return newly created business object(s)
+ return new Object[] { port };
+ }
+ }
+
+ private static class AddFeature extends InterfaceItemSupport.FeatureProvider.AddFeature {
+
+ public AddFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ protected String getItemKind(InterfaceItem item) {
+ if (item instanceof Port)
+ return getPortKind((Port) item);
+
+ return "";
+ }
+
+ @Override
+ protected void createItemFigure(InterfaceItem item,
+ boolean refitem, ContainerShape containerShape,
+ GraphicsAlgorithm invisibleRectangle, Color darkColor,
+ Color brightDolor) {
+
+ if (item instanceof Port)
+ createPortFigure((Port) item, refitem, containerShape, invisibleRectangle, darkColor, brightDolor);
+ }
+
+ }
+
+ private static class PropertyFeature extends InterfaceItemSupport.FeatureProvider.PropertyFeature {
+
+ public PropertyFeature(IFeatureProvider fp) {
+ super(fp, "Edit Port...", "Edit Port Properties");
+ }
+
+ @Override
+ public void execute(ICustomContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElements()[0]);
+ if (bo instanceof Port) {
+ Port port = (Port) bo;
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ ActorContainerClass acc = (ActorContainerClass)port.eContainer();
+ boolean internal = isInternal(port);
+ boolean refport = isRefItem(context.getPictogramElements()[0]);
+
+ PortPropertyDialog dlg = new PortPropertyDialog(shell, port, acc, false, refport, internal);
+ if (dlg.open()!=Window.OK)
+ // TODOHRR: introduce a method to revert changes
+ //throw new RuntimeException();
+ return;
+
+ updatePortFigure(port, context.getPictogramElements()[0], manageColor(DARK_COLOR), manageColor(BRIGHT_COLOR));
+ }
+ }
+
+ }
+
+ private class UpdateFeature extends InterfaceItemSupport.FeatureProvider.UpdateFeature {
+
+ public UpdateFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ protected String getItemKind(InterfaceItem item) {
+ if (item instanceof Port)
+ return getPortKind((Port)item);
+
+ return "";
+ }
+
+ @Override
+ protected void updateFigure(InterfaceItem item,
+ PictogramElement pe, Color dark, Color bright) {
+ updatePortFigure((Port)item, pe, dark, bright);
+ }
+
+ }
+
+ public FeatureProvider(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ super(dtp, fp);
+ }
+
+ @Override
+ public ICreateFeature[] getCreateFeatures() {
+ return new ICreateFeature[] { new CreateFeature(fp, true), new CreateFeature(fp, false) };
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IAddContext context) {
+ return new AddFeature(fp);
+ }
+
+ @Override
+ public ICustomFeature[] getCustomFeatures(ICustomContext context) {
+ return new ICustomFeature[] { new PropertyFeature(fp) };
+ }
+
+ @Override
+ public IUpdateFeature getUpdateFeature(IUpdateContext context) {
+ return new UpdateFeature(fp);
+ }
+
+ protected static void createPortFigure(Port port, boolean refport,
+ ContainerShape containerShape,
+ GraphicsAlgorithm invisibleRectangle, Color darkColor, Color brightDolor) {
+
+ boolean relay = ValidationUtil.isRelay(port);
+
+ int size = refport?ITEM_SIZE_SMALL:ITEM_SIZE;
+ int offset = refport?REPL_OFFSET_SMALL:REPL_OFFSET;
+ int line = refport?LINE_WIDTH/2:LINE_WIDTH;
+
+ Color bg = brightDolor;
+ if (refport) {
+ if (port.isConjugated())
+ bg = brightDolor;
+ else
+ bg = darkColor;
+ }
+ else {
+ if (!port.isConjugated() && !relay)
+ bg = darkColor;
+ else
+ bg = brightDolor;
+ }
+
+ IGaService gaService = Graphiti.getGaService();
+ if (port.getMultiplicity()>1) {
+ Rectangle rect = gaService.createRectangle(invisibleRectangle);
+ rect.setForeground(darkColor);
+ rect.setBackground(brightDolor);
+ rect.setLineWidth(line);
+ gaService.setLocationAndSize(rect, size/2+offset, size/2-offset, size, size);
+ }
+
+ Rectangle rect = gaService.createRectangle(invisibleRectangle);
+ rect.setForeground(darkColor);
+ rect.setBackground(bg);
+ rect.setLineWidth(line);
+ gaService.setLocationAndSize(rect, size/2, size/2, size, size);
+
+ if (containerShape.getAnchors().isEmpty()) {
+ // here we place our anchor
+ IPeCreateService peCreateService = Graphiti.getPeCreateService();
+ ChopboxAnchor anchor = peCreateService.createChopboxAnchor(containerShape);
+ anchor.setReferencedGraphicsAlgorithm(rect);
+ }
+ else {
+ // we just set the referenced GA
+ containerShape.getAnchors().get(0).setReferencedGraphicsAlgorithm(rect);
+ }
+
+ if (!refport) {
+ if (port.isConjugated() || !relay) {
+ // we have more details
+
+ if (relay) {
+ // conjugated relay
+ Rectangle inset = gaService.createRectangle(invisibleRectangle);
+ inset.setForeground(darkColor);
+ inset.setBackground(darkColor);
+ inset.setLineWidth(LINE_WIDTH);
+ gaService.setLocationAndSize(inset, 3*size/4, 3*size/4, size/2, size/2);
+ }
+ else {
+ Color fill = port.isConjugated()?darkColor:brightDolor;
+
+ Ellipse inset = gaService.createEllipse(invisibleRectangle);
+ inset.setForeground(fill);
+ inset.setBackground(fill);
+ inset.setLineWidth(LINE_WIDTH);
+ gaService.setLocationAndSize(inset, 3*size/4, 3*size/4, size/2, size/2);
+ }
+ }
+ }
+ }
+
+ private static void updatePortFigure(Port port, PictogramElement pe, Color dark, Color bright) {
+ ContainerShape container = (ContainerShape)pe;
+
+ // we clear the figure and rebuild it
+ GraphicsAlgorithm invisibleRect = pe.getGraphicsAlgorithm();
+ invisibleRect.getGraphicsAlgorithmChildren().clear();
+
+ createPortFigure(port, false, container, invisibleRect, dark, bright);
+
+ GraphicsAlgorithm ga = container.getChildren().get(0).getGraphicsAlgorithm();
+ if (ga instanceof Text) {
+ ((Text)ga).setValue(port.getName());
+ }
+
+ }
+
+ }
+
+ private class BehaviorProvider extends InterfaceItemSupport.BehaviorProvider {
+
+ public BehaviorProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+
+ @Override
+ public ICustomFeature getDoubleClickFeature(IDoubleClickContext context) {
+ return new FeatureProvider.PropertyFeature(getDiagramTypeProvider().getFeatureProvider());
+ }
+
+ @Override
+ public IContextButtonPadData getContextButtonPad(
+ IPictogramElementContext context) {
+
+ IContextButtonPadData data = super.getContextButtonPad(context);
+ PictogramElement pe = context.getPictogramElement();
+
+ CreateConnectionContext ccc = new CreateConnectionContext();
+ ccc.setSourcePictogramElement(pe);
+ Anchor anchor = null;
+ if (pe instanceof AnchorContainer) {
+ // our port has a chopbox anchor
+ anchor = Graphiti.getPeService().getChopboxAnchor((AnchorContainer) pe);
+ }
+ ccc.setSourceAnchor(anchor);
+
+ ContextButtonEntry button = new ContextButtonEntry(null, context);
+ button.setText("Create Binding");
+ button.setIconId(ImageProvider.IMG_BINDING);
+ ICreateConnectionFeature[] features = getFeatureProvider().getCreateConnectionFeatures();
+ for (ICreateConnectionFeature feature : features) {
+ if (feature.isAvailable(ccc) && feature.canStartConnection(ccc))
+ button.addDragAndDropFeature(feature);
+ }
+
+ if (button.getDragAndDropFeatures().size() > 0) {
+ data.getDomainSpecificContextButtons().add(button);
+ }
+
+ return data;
+ }
+ }
+
+ private FeatureProvider pfp;
+ private BehaviorProvider tbp;
+
+ public PortSupport(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ pfp = new FeatureProvider(dtp,fp);
+ tbp = new BehaviorProvider(dtp);
+ }
+
+ public IFeatureProvider getFeatureProvider() {
+ return pfp;
+ }
+
+ public IToolBehaviorProvider getToolBehaviorProvider() {
+ return tbp;
+ }
+
+ private static String getPortKind(Port port) {
+ String kind = "";
+ if (port.isConjugated())
+ kind += "C";
+ if (ValidationUtil.isRelay(port))
+ kind += "R";
+ if (port.getMultiplicity()>1)
+ kind += "M";
+ return kind;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/SPPSupport.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/SPPSupport.java
new file mode 100644
index 000000000..ff3f8b8df
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/SPPSupport.java
@@ -0,0 +1,355 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+import org.eclipse.etrice.core.validation.ValidationUtil;
+import org.eclipse.etrice.ui.structure.ImageProvider;
+import org.eclipse.etrice.ui.structure.NoResizeFeature;
+import org.eclipse.etrice.ui.structure.dialogs.SPPPropertyDialog;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateConnectionFeature;
+import org.eclipse.graphiti.features.ICreateFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IMoveShapeFeature;
+import org.eclipse.graphiti.features.IResizeShapeFeature;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICreateContext;
+import org.eclipse.graphiti.features.context.ICustomContext;
+import org.eclipse.graphiti.features.context.IDoubleClickContext;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
+import org.eclipse.graphiti.features.context.IPictogramElementContext;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.CreateConnectionContext;
+import org.eclipse.graphiti.features.custom.ICustomFeature;
+import org.eclipse.graphiti.mm.algorithms.Ellipse;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.mm.algorithms.styles.Color;
+import org.eclipse.graphiti.mm.pictograms.Anchor;
+import org.eclipse.graphiti.mm.pictograms.AnchorContainer;
+import org.eclipse.graphiti.mm.pictograms.ChopboxAnchor;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.tb.ContextButtonEntry;
+import org.eclipse.graphiti.tb.IContextButtonPadData;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.etrice.core.room.ActorContainerClass;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.RoomFactory;
+import org.eclipse.etrice.core.room.SPPRef;
+
+public class SPPSupport extends InterfaceItemSupport {
+
+ private static class FeatureProvider extends InterfaceItemSupport.FeatureProvider {
+
+ private static class CreateFeature extends InterfaceItemSupport.FeatureProvider.CreateFeature {
+
+ private boolean doneChanges = false;
+
+ public CreateFeature(IFeatureProvider fp) {
+ super(fp, false, "SPP", "create SPP");
+ }
+
+ @Override
+ public String getCreateImageId() {
+ return ImageProvider.IMG_SPP;
+ }
+
+ @Override
+ public Object[] create(ICreateContext context) {
+ // create SPP
+ SPPRef spp = RoomFactory.eINSTANCE.createSPPRef();
+ spp.setName("");
+
+ ActorContainerClass acc = (ActorContainerClass) context.getTargetContainer().getLink().getBusinessObjects().get(0);
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ SPPPropertyDialog dlg = new SPPPropertyDialog(shell, spp, acc, true, false);
+ if (dlg.open()!=Window.OK)
+ // find a method to abort creation
+ //throw new RuntimeException();
+ return EMPTY;
+
+ doneChanges = true;
+
+ acc.getIfSPPs().add(spp);
+
+ // do the add
+ addGraphicalRepresentation(context, spp);
+
+ // return newly created business object(s)
+ return new Object[] { spp };
+ }
+
+ @Override
+ public boolean hasDoneChanges() {
+ return doneChanges;
+ }
+ }
+
+ private class AddFeature extends InterfaceItemSupport.FeatureProvider.AddFeature {
+
+ public AddFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ protected String getItemKind(InterfaceItem item) {
+ if (item instanceof SPPRef)
+ return getSPPKind((SPPRef)item);
+
+ return "";
+ }
+
+ @Override
+ protected void createItemFigure(InterfaceItem item,
+ boolean refitem, ContainerShape containerShape,
+ GraphicsAlgorithm invisibleRectangle, Color darkColor,
+ Color brightDolor) {
+
+ if (item instanceof SPPRef)
+ createSPPFigure((SPPRef) item, refitem, containerShape, invisibleRectangle, darkColor, brightDolor);
+ }
+
+ }
+
+ private static class PropertyFeature extends InterfaceItemSupport.FeatureProvider.PropertyFeature {
+
+ public PropertyFeature(IFeatureProvider fp) {
+ super(fp, "Edit SPP...", "Edit SPP Properties");
+ }
+
+ @Override
+ public void execute(ICustomContext context) {
+ SPPRef spp = (SPPRef) getBusinessObjectForPictogramElement(context.getPictogramElements()[0]);
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ ActorContainerClass acc = (ActorContainerClass)spp.eContainer();
+ boolean refport = isRefItem(context.getPictogramElements()[0]);
+
+ SPPPropertyDialog dlg = new SPPPropertyDialog(shell, spp, acc, false, refport);
+ if (dlg.open()!=Window.OK)
+ // TODOHRR: introduce a method to revert changes, does hasDoneChanges=false roll back changes?
+ //throw new RuntimeException();
+ return;
+
+ updateSPPFigure(spp, context.getPictogramElements()[0], manageColor(DARK_COLOR), manageColor(BRIGHT_COLOR));
+ }
+
+ }
+
+ private class UpdateFeature extends InterfaceItemSupport.FeatureProvider.UpdateFeature {
+
+ public UpdateFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ protected String getItemKind(InterfaceItem item) {
+ if (item instanceof SPPRef)
+ return getSPPKind((SPPRef)item);
+
+ return "";
+ }
+
+ @Override
+ protected void updateFigure(InterfaceItem item,
+ PictogramElement pe, Color dark, Color bright) {
+ updateSPPFigure((SPPRef)item, pe, dark, bright);
+ }
+
+ }
+
+ public FeatureProvider(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ super(dtp, fp);
+ }
+
+ @Override
+ public ICreateFeature[] getCreateFeatures() {
+ return new ICreateFeature[] { new CreateFeature(fp) };
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IAddContext context) {
+ return new AddFeature(fp);
+ }
+
+ @Override
+ public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context) {
+ return new MoveShapeFeature(fp);
+ }
+
+ @Override
+ public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context) {
+ return new NoResizeFeature(fp);
+ }
+
+ @Override
+ public ICustomFeature[] getCustomFeatures(ICustomContext context) {
+ return new ICustomFeature[] { new PropertyFeature(fp) };
+ }
+
+ @Override
+ public IUpdateFeature getUpdateFeature(IUpdateContext context) {
+ return new UpdateFeature(fp);
+ }
+
+ protected static void createSPPFigure(SPPRef spp, boolean refspp,
+ ContainerShape containerShape,
+ GraphicsAlgorithm invisibleRectangle, Color darkColor, Color brightDolor) {
+
+ boolean relay = ValidationUtil.isRelay(spp);
+
+ int size = refspp?ITEM_SIZE_SMALL:ITEM_SIZE;
+ int line = refspp?LINE_WIDTH/2:LINE_WIDTH;
+
+ Color bg = brightDolor;
+ if (refspp) {
+ bg = darkColor;
+ }
+ else {
+ if (relay)
+ bg = brightDolor;
+ else
+ bg = darkColor;
+ }
+
+ IGaService gaService = Graphiti.getGaService();
+
+ // TODOHRR: depicting SPPs as diamond using polygon didn't work
+// int s2 = size/2;
+// int xy[] = new int[] { s2, 0, size, s2, s2, size, 0, s2};
+// Polygon rect = gaService.createPolygon(invisibleRectangle, xy);
+// rect.setForeground(darkColor);
+// rect.setBackground(bg);
+// rect.setLineWidth(line);
+// gaService.setLocation(rect, s2, s2);
+ //Rectangle rect = gaService.createRectangle(invisibleRectangle);
+
+ Ellipse rect = gaService.createEllipse(invisibleRectangle);
+ rect.setForeground(darkColor);
+ rect.setBackground(bg);
+ rect.setLineWidth(line);
+ gaService.setLocationAndSize(rect, size/2, size/2, size, size);
+
+ if (containerShape.getAnchors().isEmpty()) {
+ // here we place our anchor
+ IPeCreateService peCreateService = Graphiti.getPeCreateService();
+// FixPointAnchor anchor = peCreateService.createFixPointAnchor(containerShape);
+// anchor.setLocation(gaService.createPoint(xy[0], xy[1]));
+// anchor = peCreateService.createFixPointAnchor(containerShape);
+// anchor.setLocation(gaService.createPoint(xy[2], xy[3]));
+// anchor = peCreateService.createFixPointAnchor(containerShape);
+// anchor.setLocation(gaService.createPoint(xy[4], xy[5]));
+// anchor = peCreateService.createFixPointAnchor(containerShape);
+// anchor.setLocation(gaService.createPoint(xy[6], xy[7]));
+ // TODOHRR: EllipseAnchor would be nice
+ ChopboxAnchor anchor = peCreateService.createChopboxAnchor(containerShape);
+ anchor.setReferencedGraphicsAlgorithm(rect);
+ }
+ else {
+ // we just set the referenced GA
+ //containerShape.getAnchors().get(0).setReferencedGraphicsAlgorithm(rect);
+ }
+ }
+
+ private static void updateSPPFigure(SPPRef spp, PictogramElement pe, Color dark, Color bright) {
+ ContainerShape container = (ContainerShape)pe;
+
+ // we clear the figure and rebuild it
+ GraphicsAlgorithm invisibleRect = pe.getGraphicsAlgorithm();
+ invisibleRect.getGraphicsAlgorithmChildren().clear();
+
+ createSPPFigure(spp, false, container, invisibleRect, dark, bright);
+
+ GraphicsAlgorithm ga = container.getChildren().get(0).getGraphicsAlgorithm();
+ if (ga instanceof Text) {
+ ((Text)ga).setValue(spp.getName());
+ }
+
+ }
+
+ }
+
+ private class BehaviorProvider extends InterfaceItemSupport.BehaviorProvider {
+
+ public BehaviorProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+
+ @Override
+ public ICustomFeature getDoubleClickFeature(IDoubleClickContext context) {
+ return new FeatureProvider.PropertyFeature(getDiagramTypeProvider().getFeatureProvider());
+ }
+
+ @Override
+ public IContextButtonPadData getContextButtonPad(
+ IPictogramElementContext context) {
+
+ IContextButtonPadData data = super.getContextButtonPad(context);
+ PictogramElement pe = context.getPictogramElement();
+
+ CreateConnectionContext ccc = new CreateConnectionContext();
+ ccc.setSourcePictogramElement(pe);
+ Anchor anchor = null;
+ if (pe instanceof AnchorContainer) {
+ // our spp has four fixed point anchor - we choose the first one
+ anchor = ((ContainerShape)pe).getAnchors().get(0);
+ }
+ ccc.setSourceAnchor(anchor);
+
+ ContextButtonEntry button = new ContextButtonEntry(null, context);
+ button.setText("Create Binding");
+ button.setIconId(ImageProvider.IMG_BINDING);
+ ICreateConnectionFeature[] features = getFeatureProvider().getCreateConnectionFeatures();
+ for (ICreateConnectionFeature feature : features) {
+ if (feature.isAvailable(ccc) && feature.canStartConnection(ccc))
+ button.addDragAndDropFeature(feature);
+ }
+
+ if (button.getDragAndDropFeatures().size() > 0) {
+ data.getDomainSpecificContextButtons().add(button);
+ }
+
+ return data;
+ }
+ }
+
+ private FeatureProvider pfp;
+ private BehaviorProvider tbp;
+
+ public SPPSupport(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ pfp = new FeatureProvider(dtp,fp);
+ tbp = new BehaviorProvider(dtp);
+ }
+
+ public IFeatureProvider getFeatureProvider() {
+ return pfp;
+ }
+
+ public IToolBehaviorProvider getToolBehaviorProvider() {
+ return tbp;
+ }
+
+ protected static String getSPPKind(SPPRef spp) {
+ String kind = "";
+ if (ValidationUtil.isRelay(spp))
+ kind += "R";
+ return kind;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/StructureClassSupport.java b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/StructureClassSupport.java
new file mode 100644
index 000000000..62a39d2e4
--- /dev/null
+++ b/plugins/org.eclipse.etrice.ui.structure/src/org/eclipse/etrice/ui/structure/support/StructureClassSupport.java
@@ -0,0 +1,334 @@
+/*******************************************************************************
+ * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.etrice.ui.structure.support;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.ILayoutFeature;
+import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.IResizeShapeFeature;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ILayoutContext;
+import org.eclipse.graphiti.features.context.IRemoveContext;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.RemoveContext;
+import org.eclipse.graphiti.features.impl.AbstractAddFeature;
+import org.eclipse.graphiti.features.impl.AbstractLayoutFeature;
+import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;
+import org.eclipse.graphiti.features.impl.DefaultResizeShapeFeature;
+import org.eclipse.graphiti.features.impl.Reason;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Rectangle;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+
+import org.eclipse.etrice.core.room.StructureClass;
+
+public class StructureClassSupport {
+
+ public static final int MARGIN = 40;
+
+ private static final int LINE_WIDTH = 4;
+ public static final int DEFAULT_SIZE_X = 800;
+ public static final int DEFAULT_SIZE_Y = 500;
+ private static final IColorConstant LINE_COLOR = new ColorConstant(0, 0, 0);
+ private static final IColorConstant BACKGROUND = new ColorConstant(255, 255, 255);
+
+ private class FeatureProvider extends DefaultFeatureProvider {
+
+ private class AddFeature extends AbstractAddFeature {
+
+ public AddFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canAdd(IAddContext context) {
+ if (context.getNewObject() instanceof StructureClass) {
+ if (context.getTargetContainer() instanceof Diagram) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public PictogramElement add(IAddContext context) {
+ StructureClass ac = (StructureClass) context.getNewObject();
+ Diagram diag = (Diagram) context.getTargetContainer();
+
+ // CONTAINER SHAPE WITH RECTANGLE
+ IPeCreateService peCreateService = Graphiti.getPeCreateService();
+ ContainerShape containerShape =
+ peCreateService.createContainerShape(diag, true);
+
+ Graphiti.getPeService().setPropertyValue(containerShape, Constants.TYPE_KEY, Constants.CLS_TYPE);
+
+ // check whether the context has a size (e.g. from a create feature)
+ // otherwise define a default size for the shape
+ int width = context.getWidth() <= 0 ? DEFAULT_SIZE_X : context.getWidth();
+ int height = context.getHeight() <= 0 ? DEFAULT_SIZE_Y : context.getHeight();
+
+ Rectangle rect; // need to access it later
+ IGaService gaService = Graphiti.getGaService();
+ {
+ // create invisible outer rectangle expanded by
+ // the width needed for the ports
+ Rectangle invisibleRectangle =
+ gaService.createInvisibleRectangle(containerShape);
+
+ gaService.setLocationAndSize(invisibleRectangle,
+ context.getX(), context.getY(), width + 2*MARGIN, height + 2*MARGIN);
+
+ // create and set visible rectangle inside invisible rectangle
+ rect = gaService.createRectangle(invisibleRectangle);
+ rect.setForeground(manageColor(LINE_COLOR));
+ rect.setBackground(manageColor(BACKGROUND));
+ rect.setLineWidth(LINE_WIDTH);
+ gaService.setLocationAndSize(rect, MARGIN, MARGIN, width, height);
+
+ // create link and wire it
+ link(containerShape, ac);
+ link(getDiagram(), ac);
+ }
+
+ // call the layout feature
+ layoutPictogramElement(containerShape);
+
+ return containerShape;
+
+ }
+
+ }
+
+ private class LayoutFeature extends AbstractLayoutFeature {
+
+ private static final int MIN_HEIGHT = 100;
+ private static final int MIN_WIDTH = 250;
+
+ public LayoutFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canLayout(ILayoutContext context) {
+ // return true, if pictogram element is linked to an ActorClass
+ PictogramElement pe = context.getPictogramElement();
+ if (!(pe instanceof ContainerShape))
+ return false;
+
+ EList<EObject> businessObjects = pe.getLink().getBusinessObjects();
+ return businessObjects.size() == 1
+ && businessObjects.get(0) instanceof StructureClass;
+ }
+
+ @Override
+ public boolean layout(ILayoutContext context) {
+ boolean anythingChanged = false;
+ ContainerShape containerShape = (ContainerShape) context
+ .getPictogramElement();
+
+ GraphicsAlgorithm containerGa = containerShape.getGraphicsAlgorithm();
+
+ // height
+ if (containerGa.getHeight() < MIN_HEIGHT) {
+ containerGa.setHeight(MIN_HEIGHT);
+ anythingChanged = true;
+ }
+
+ // width
+ if (containerGa.getWidth() < MIN_WIDTH) {
+ containerGa.setWidth(MIN_WIDTH);
+ anythingChanged = true;
+ }
+
+ int w = containerGa.getWidth();
+ int h = containerGa.getHeight();
+
+ if (containerGa.getGraphicsAlgorithmChildren().size()==1) {
+ GraphicsAlgorithm ga = containerGa.getGraphicsAlgorithmChildren().get(0);
+ ga.setWidth(w-2*MARGIN);
+ ga.setHeight(h-2*MARGIN);
+ anythingChanged = true;
+ }
+
+ return anythingChanged;
+ }
+
+ }
+
+ private class UpdateFeature extends AbstractUpdateFeature {
+
+ public UpdateFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canUpdate(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy())
+ return true;
+
+ return bo instanceof StructureClass;
+ }
+
+ @Override
+ public IReason updateNeeded(IUpdateContext context) {
+ Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ return Reason.createTrueReason("Structure class deleted from model");
+ }
+
+ // TODOHRR: check for refs added in model not present in diagram
+ // also inherited
+
+ return Reason.createFalseReason();
+ }
+
+ @Override
+ public boolean update(IUpdateContext context) {
+ ContainerShape containerShape = (ContainerShape)context.getPictogramElement();
+ Object bo = getBusinessObjectForPictogramElement(containerShape);
+ if (bo instanceof EObject && ((EObject)bo).eIsProxy()) {
+ IRemoveContext rc = new RemoveContext(containerShape);
+ IFeatureProvider featureProvider = getFeatureProvider();
+ IRemoveFeature removeFeature = featureProvider.getRemoveFeature(rc);
+ if (removeFeature != null) {
+ removeFeature.remove(rc);
+ }
+ EcoreUtil.delete((EObject) bo);
+ return true;
+ }
+
+ // TODOHRR: check for refs added in model not present in diagram
+ // also add bindings and layer connections
+
+ return true;
+ }
+ }
+
+ private class ResizeFeature extends DefaultResizeShapeFeature {
+
+ public ResizeFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canResizeShape(IResizeShapeContext context) {
+ if (!super.canResizeShape(context))
+ return false;
+
+ int width = context.getWidth()-MARGIN;
+ int height = context.getHeight()-MARGIN;
+ int xmax = 0;
+ int ymax = 0;
+ for (Shape childShape : ((ContainerShape)context.getShape()).getChildren()) {
+ GraphicsAlgorithm ga = childShape.getGraphicsAlgorithm();
+ int x = ga.getX()+ga.getWidth()-ActorContainerRefSupport.MARGIN;
+ int y = ga.getY()+ga.getHeight()-ActorContainerRefSupport.MARGIN;
+ if (x>xmax)
+ xmax = x;
+ if (y>ymax)
+ ymax = y;
+ }
+ if (width>0 && width<xmax)
+ return false;
+ if (height>0 && height<ymax)
+ return false;
+
+ return true;
+ }
+ }
+
+ private IFeatureProvider fp;
+
+ public FeatureProvider(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ super(dtp);
+ this.fp = fp;
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IAddContext context) {
+ return new AddFeature(fp);
+ }
+
+ @Override
+ public ILayoutFeature getLayoutFeature(ILayoutContext context) {
+ return new LayoutFeature(fp);
+ }
+
+ @Override
+ public IUpdateFeature getUpdateFeature(IUpdateContext context) {
+ return new UpdateFeature(fp);
+ }
+
+ @Override
+ public IResizeShapeFeature getResizeShapeFeature(
+ IResizeShapeContext context) {
+ return new ResizeFeature(fp);
+ }
+ }
+
+ private class BehaviorProvider extends DefaultToolBehaviorProvider {
+
+ public BehaviorProvider(IDiagramTypeProvider dtp) {
+ super(dtp);
+ }
+
+ @Override
+ public GraphicsAlgorithm[] getClickArea(PictogramElement pe) {
+ GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
+ GraphicsAlgorithm rectangle =
+ invisible.getGraphicsAlgorithmChildren().get(0);
+ return new GraphicsAlgorithm[] { rectangle };
+ }
+
+ @Override
+ public GraphicsAlgorithm getSelectionBorder(PictogramElement pe) {
+ GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
+
+ GraphicsAlgorithm rectangle =
+ invisible.getGraphicsAlgorithmChildren().get(0);
+ return rectangle;
+ }
+ }
+
+ private FeatureProvider afp;
+ private BehaviorProvider tbp;
+
+ public StructureClassSupport(IDiagramTypeProvider dtp, IFeatureProvider fp) {
+ afp = new FeatureProvider(dtp, fp);
+ tbp = new BehaviorProvider(dtp);
+ }
+
+ public IFeatureProvider getFeatureProvider() {
+ return afp;
+ }
+
+ public IToolBehaviorProvider getToolBehaviorProvider() {
+ return tbp;
+ }
+}

Back to the top