Create two transitions, connect them with two arcs (the same direction). Try to copy and paste these connections together with the transitions. The following exception is thrown:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: An implicit place cannot have more that one transition in its preset or postset.
at org.workcraft.plugins.stg.STG.getNodeReference(STG.java:276)
at org.workcraft.plugins.serialisation.XMLModelSerialiser$1.getReference(XMLModelSerialiser.java:77)
at org.workcraft.serialisation.xml.DefaultNodeSerialiser.serialise(DefaultNodeSerialiser.java:136)
at org.workcraft.serialisation.xml.XMLSerialisationManager.serialise(XMLSerialisationManager.java:67)
at org.workcraft.serialisation.xml.XMLSerialisationManager.serialise(XMLSerialisationManager.java:72)
at org.workcraft.plugins.serialisation.XMLModelSerialiser.serialise(XMLModelSerialiser.java:91)
at org.workcraft.Framework.save(Framework.java:779)
at org.workcraft.Framework.save(Framework.java:831)
at org.workcraft.workspace.WorkspaceEntry.paste(WorkspaceEntry.java:296)
at org.workcraft.gui.MainWindow.paste(MainWindow.java:1200)
at org.workcraft.gui.MainWindowActions$16.run(MainWindowActions.java:165)
at org.workcraft.gui.MainWindow$1.actionPerformed(MainWindow.java:108)
at org.workcraft.gui.actions.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:58)
at org.workcraft.gui.actions.ActionMenuItem.access$0(ActionMenuItem.java:55)
at org.workcraft.gui.actions.ActionMenuItem$ActionForwarder.actionPerformed(ActionMenuItem.java:34)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(BasicMenuItemUI.java:802)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1662)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2878)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:689)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:697)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:697)
at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:668)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:307)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:293)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2970)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2962)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2841)
at java.awt.Component.processEvent(Component.java:6282)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727)
at java.awt.Component.dispatchEventImpl(Component.java:4731)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
The same exception is thrown is you try to modify the shape of one of the connections.
The reason for this behaviour is that both implicit places on the connecting arcs have the same name: transition_ name;second_ transition_ name> and the reference manager gets confused between them.
<first_
The fix is to forbid multiple arcs between transitions, thus avoiding implicit places with the same name.