@Override
			public ClusteringOperation next()
			{
				byte opCode = this.opCodes.get(++opIndex);
				ClusteringOperation result = null;
				if (opCode == 0)
				{
					result = ClusteringOperation.newNextStepOp();
				}
				else if (opCode == 1 || opCode == 2 || opCode == 3 || opCode == 4)
				{
					int arg0 = this.intArgs.get(++argIndex);
					int arg1 = this.intArgs.get(++argIndex);
					int arg2 = this.intArgs.get(++argIndex);

					switch (opCode)
					{
						case ((byte) 1):
							result = ClusteringOperation.newMergeOp(arg0, arg1, arg2);
							break;
						case ((byte) 2):
							result = ClusteringOperation.newSplitOp(arg0, arg1, arg2);
							break;
						case ((byte) 3):
							result = ClusteringOperation.newMergeDoneOp(arg0, arg1, arg2);
							break;
						case ((byte) 4):
							result = ClusteringOperation.newSplitDoneOp(arg0, arg1, arg2);
							break;
					}
				}
				return result;

			}