Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:617) at java.util.LinkedList$ListItr.next(LinkedList.java:552) at A31$Relation.standardForm(A31.java:698) at A31$Relation.minimalCover(A31.java:741) at A31$Relation.do3NFSynthesis(A31.java:812) at A31.actionPerformed(A31.java:192) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:5501) at javax.swing.JComponent.processMouseEvent(JComponent.java:3135) at java.awt.Component.processEvent(Component.java:5266) at java.awt.Container.processEvent(Container.java:1966) at java.awt.Component.dispatchEventImpl(Component.java:3968) at java.awt.Container.dispatchEventImpl(Container.java:2024) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) at java.awt.Container.dispatchEventImpl(Container.java:2010) at java.awt.Window.dispatchEventImpl(Window.java:1778) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)full code: public boolean standardForm() { for (Iterator<FunctionalDependency> i = this.FDs.iterator(); i.hasNext(); ) { FunctionalDependency fd = i.next(); if (fd.getRHS().size() > 1) { // for each attribute in each RHS // which is longer than 1 attribute for (String a: fd.getRHS()){ // create a new RHS with a single attribute in the RHS LinkedList<String> atomicRHS = new LinkedList<String>(); atomicRHS.add(a); // add it as a new FD to the relation addFD(new FunctionalDependency(fd.getLHS(), atomicRHS)); } // remove the original, non-standard FD removeFD(fd); } } return false; }