@@ -0,0 +1,2257 @@
+package prm4j;%0A%0Aimport java.util.Collection;%0Aimport java.util.Iterator;%0Aimport java.util.Map;%0A%0Aimport prm4j.api.Alphabet;%0A/*%0A * Copyright (c) 2012 Mateusz Parzonka, Eric Bodden%0A * All rights reserved. This program and the accompanying materials%0A * are made available under the terms of the Eclipse Public License v1.0%0A * which accompanies this distribution, and is available at%0A * http://www.eclipse.org/legal/epl-v10.html%0A *%0A * Contributors:%0A * Mateusz Parzonka - initial API and implementation%0A */%0Aimport prm4j.api.MatchHandler1;%0Aimport prm4j.api.Parameter;%0Aimport prm4j.api.Symbol1;%0Aimport prm4j.api.Symbol2;%0Aimport prm4j.api.fsm.FSM;%0Aimport prm4j.api.fsm.FSMState;%0A%0A/**%0A * Provides utilities for testing.%0A */%0Apublic abstract class AbstractTest %7B%0A%0A    @SuppressWarnings(%22rawtypes%22)%0A    public static class FSM_unsafeMapIterator %7B%0A%0A%09public final Alphabet alphabet = new Alphabet();%0A%0A%09public final Parameter%3CMap%3E m = alphabet.createParameter(%22m%22, Map.class);%0A%09public final Parameter%3CCollection%3E c = alphabet.createParameter(%22c%22, Collection.class);%0A%09public final Parameter%3CIterator%3E i = alphabet.createParameter(%22i%22, Iterator.class);%0A%0A%09public final Symbol2%3CMap, Collection%3E createColl = alphabet.createSymbol2(%22createColl%22, m, c);%0A%09public final Symbol2%3CCollection, Iterator%3E createIter = alphabet.createSymbol2(%22createIter%22, c, i);%0A%09public final Symbol1%3CMap%3E updateMap = alphabet.createSymbol1(%22updateMap%22, m);%0A%09public final Symbol1%3CIterator%3E useIter = alphabet.createSymbol1(%22useIter%22, i);%0A%0A%09public final FSM%3CVoid%3E fsm = new FSM%3CVoid%3E(alphabet);%0A%0A%09public final FSMState%3CVoid%3E initial = fsm.createInitialState();%0A%09public final FSMState%3CVoid%3E s1 = fsm.createState();%0A%09public final FSMState%3CVoid%3E s2 = fsm.createState();%0A%09public final FSMState%3CVoid%3E s3 = fsm.createState();%0A%09public final FSMState%3CVoid%3E error = fsm.createFinalState(new MatchHandler1%3CIterator%3E(i) %7B%0A%09    @Override%0A%09    public void handleMatch(Iterator obj1) %7B%0A%0A%09    %7D%0A%09%7D);%0A%0A%09public FSM_unsafeMapIterator() %7B%0A%09    initial.addTransition(createColl, s1);%0A%09    s1.addTransition(updateMap, s1);%0A%09    s1.addTransition(createIter, s2);%0A%09    s2.addTransition(useIter, s2);%0A%09    s2.addTransition(updateMap, s3);%0A%09    s3.addTransition(updateMap, s3);%0A%09    s3.addTransition(useIter, error);%0A%09%7D%0A%0A    %7D%0A%0A%7D%0A

Add AbstractTest containing FSM_unsafeMapIterator