Newer
Older
MagnetRON / src / org / ntlab / deltaViewer / DeltaViewerSample.java
Aki Hongo on 11 May 2020 50 KB #7 Testing ArgoUML shape selection trace.
package org.ntlab.deltaViewer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import org.ntlab.deltaExtractor.Alias;
import org.ntlab.deltaExtractor.DeltaExtractorJSON;
import org.ntlab.deltaExtractor.ExtractedStructure;
import org.ntlab.trace.FieldAccess;
import org.ntlab.trace.FieldUpdate;
import org.ntlab.trace.IStatementVisitor;
import org.ntlab.trace.MethodExecution;
import org.ntlab.trace.MethodInvocation;
import org.ntlab.trace.Reference;
import org.ntlab.trace.Statement;
import org.ntlab.trace.ThreadInstance;
import org.ntlab.trace.Trace;
import org.ntlab.trace.TraceJSON;
import org.ntlab.trace.TracePoint;

/**
 * Delta viewer sample for MagnetRON.
 * 
 * @author Nitta Lab.
 */
public class DeltaViewerSample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		TraceJSON trace = new TraceJSON("traces/jEditBenchmark.trace");
//		TraceJSON trace = new TraceJSON("traces/jHotDrawBenchmark.trace");
//		TraceJSON trace = new TraceJSON("traces/ArgoUMLBenchmark.trace");
//		TraceJSON trace = new TraceJSON("traces/testTrace2.txt");

		// one delta extract
//		TraceJSON trace = new TraceJSON("traces/traceSample1.txt");
//		TraceJSON trace = new TraceJSON("traces/traceSample2.txt");
//		TraceJSON trace = new TraceJSON("traces/presenSample.txt");
//		TraceJSON trace = new TraceJSON("traces/_worstCase.txt");
//		TraceJSON trace = new TraceJSON("traces/sample1.trace");
//		TraceJSON trace = new TraceJSON("traces/sampleArray.trace");
//		TraceJSON trace = new TraceJSON("traces/sampleCollection.trace");
//		TraceJSON trace = new TraceJSON("traces/sampleCreate.trace");
//		TraceJSON trace = new TraceJSON("traces/sampleStatic.trace");
//		TraceJSON trace = new TraceJSON("traces/jHotDrawBenchmarkWithMoreStandardClasses.trace");
//		TraceJSON trace = new TraceJSON("traces/ArgoUMLBenchmarkWithMoreStandardClasses.trace");
//		TraceJSON trace = new TraceJSON("traces/testTrace3.txt");
//		TraceJSON trace = new TraceJSON("traces/testTrace5.txt");

//		DeltaExtractorJSON dex = new DeltaExtractorJSON(trace);
//		HashMap<String, ThreadInstance> threads = trace.getAllThreads();
//		ThreadInstance thread = threads.values().iterator().next(); // 最後のスレッドを見ているだけ…
//		TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
//
//		System.out.println("===== All Statements Backward =====");
//		TracePoint tp = null;
//		ExtractedStructure e = null;
//		DeltaAliasCollector dac = new DeltaAliasCollector();
//		long restart = 0L;
//		for(;;) {
//			tp = trace.traverseStatementsInTraceBackward(new IStatementVisitor() {
//				@Override
//				public boolean preVisitStatement(Statement statement) {
//					System.out.println("pre:" + statement.getThreadNo() + ":" + statement.getTimeStamp());
//					if(statement instanceof FieldUpdate) {
//						FieldUpdate fu = (FieldUpdate) statement;
//						if(!Trace.isNull(fu.getValueObjId()) && !Trace.isPrimitive(fu.getValueClassName())) {
//							return true;
//						}
//					}
//					return false;
//				}
//
//				@Override
//				public boolean postVisitStatement(Statement statement) {
//					System.out.println("post:" + statement.getThreadNo() + ":" + statement.getTimeStamp());
//					return false;
//				}
//			}, restart);
//			if(tp == null || !tp.isValid()) break;
//			e = dex.extract(new Reference(jHotDrawSelect3_1[0], jHotDrawSelect3_1[1], jHotDrawSelect3_1[2], jHotDrawSelect3_1[3]), tp, dac);
//			dex.extract(tp);
//			Statement statement = tp.getStatement();
//			if(statement instanceof MethodInvocation) {
//				restart = ((MethodInvocation)tp.getStatement()).getCalledMethodExecution().getExitTime();
//			} else {
//				restart = tp.getStatement().getTimeStamp();
//			}
//		}
//		trace.traverseStatementsInTraceBackward(new IStatementVisitor() {
//			@Override
//			public boolean preVisitStatement(Statement statement) {
//				System.out.println("post:" + statement.getClass().getName() + ":" + statement.getTimeStamp());
//				return false;
//			}
//			@Override
//			public boolean postVisitStatement(Statement statement) {
//				System.out.println("pre:" + statement.getClass().getName() + ":" + statement.getTimeStamp());
//				return false;
//			}
//		});
//	}

		// 参照元のオブジェクトId
//		ExtractedStructure e = dex.extract(new Reference(null, null, "E", "C"), tp, dac);
//		ExtractedStructure e = dex.extract(new Reference(null, null, "D", "C"), tp, dac);
//		ExtractedStructure e = dex.extract(new Reference(null, null, "worstCase.P", "worstCase.M"), tp, dac);
//		ExtractedStructure e = dex.extract(new Reference(null, null, "sample1.D", "sample1.C"), tp, dac);
//		ExtractedStructure e = dex.extract(new Reference(null, null, "sampleArray.D", "sampleArray.C"), tp, dac);
//		ExtractedStructure e = dex.extract(new Reference(null, null, "sampleCollection.D", "sampleCollection.C"), tp, dac);
//		ExtractedStructure e = dex.extract(new Reference(null, null, "sampleCreate.D", "sampleCreate.C"), tp, dac);
//		ExtractedStructure e = dex.extract(new Reference(null, null, "sampleStatic.D", "sampleStatic.C"), tp, dac);

//		HashSet<String> marked = trace.getMarkedMethodSignatures(1255991806833871L, 1255991808597322L);
//		HashSet<String> marked = trace.getMarkedMethodSignatures(1699553004208835L, 1699553004739523L);
//		System.out.println("===== Marked Methods =====");
//		for (String method: marked) {
//			System.out.println(method);
//		}
//		HashSet<String> unmarked = trace.getUnmarkedMethodSignatures(1255991806833871L, 1255991808597322L);
//		HashSet<String> unmarked = trace.getUnmarkedMethodSignatures(1699553004208835L, 1699553004739523L);
//		System.out.println("===== Unmarked Methods =====");
//		for (String method: unmarked) {
//			System.out.println(method);
//		}

		// Change!
		// setArray, setCollection(2回目以降は必要なし) , foreach(thread)
		// ArrayListにaddされてない
		// フィールドに代入されていない
//		HashMap<String, ThreadInstance> threads = trace.getAllThreads();
//		for(ThreadInstance ti: threads.values()) {
//			ArrayList<MethodExecution> roots = ti.getRoot();
//			for(MethodExecution root: roots) {
//				traverseMethodExecution(root);
//			}
//		}

		Map<String, String[]> argsMap = new HashMap<>();
		setArgmentsForDeltaExtract(argsMap);
//		String argsKey = "ArgoUMLPlace1_1"; //抽出したいデルタの引数を格納したMapのkey
		String argsKey = "ArgoUMLSelect0_1"; //抽出したいデルタの引数を格納したMapのkey
//		String argsKey = "ArgoUMLSelect1_2"; //抽出したいデルタの引数を格納したMapのkey
//		String argsKey = "sampleStatic"; //抽出したいデルタの引数を格納したMapのkey
//		String argsKey = "worstCase"; //抽出したいデルタの引数を格納したMapのkey
//		String argsKey = "sample1"; //抽出したいデルタの引数を格納したMapのkey
		long time = System.nanoTime();
		TraceJSON trace = new TraceJSON(argsMap.get(argsKey)[4]);
		DeltaExtractorJSON s = new DeltaExtractorJSON(trace);
		HashMap<String, ThreadInstance> threads = trace.getAllThreads();
		List<ExtractedStructure> eList = new ArrayList<>();
		List<DeltaAliasCollector> dacList = new ArrayList<>();
		for (ThreadInstance thread: threads.values()) {
			TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
			Reference reference = new Reference(argsMap.get(argsKey)[0], argsMap.get(argsKey)[1], argsMap.get(argsKey)[2], argsMap.get(argsKey)[3]);
			reference.setCollection(true);
//			reference.setArray(true);
//			reference.setFinalLocal(true);
//			reference.setCreation(true);
			DeltaAliasCollector dac = new DeltaAliasCollector();
			ExtractedStructure e = s.extract(reference, tp, dac);
			if (e != null) {
				eList.add(e);
				dacList.add(dac);
				System.out.println("add" + eList.size() + ", " + dacList.size());
			}
			System.out.println("---------------------------");
		}
//		TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
//		//ExtractedStructure e = s.extract(new Reference(null, null, "sampleCollection.D", "sampleCollection.C"), tp, new IAliasCollector() {
//		String ArgmentsKey = "jEditSelect"; //抽出したいデルタの引数を格納したMapのkey
//		ExtractedStructure e = s.extract(new Reference(argsMap.get(ArgmentsKey)[0], argsMap.get(ArgmentsKey)[1], argsMap.get(ArgmentsKey)[2], argsMap.get(ArgmentsKey)[3]), tp, new IAliasCollector() {
//			@Override
//			public void addAlias(Alias alias) {
//				System.out.println(alias.getAliasType().toString() + ":" + alias.getObjectId() +"," + alias.getIndex() + "," +  alias.getMethodSignature() + "," + alias.getLineNo());
//			}
//			@Override
//			public void changeTrackingObject(String from, String to) {
//				System.out.println("Change:" + from + " => " + to);
//			}
//		});

//		TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
//		ExtractedStructure e = s.extract(new Reference(argsMap.get(argsKey)[0], argsMap.get(argsKey)[1], argsMap.get(argsKey)[2], argsMap.get(argsKey)[3]), tp, new IAliasCollector() {
//			//ExtractedStructure e = s.extract(new Reference(candId1, candId2, argsMap.get(ArgmentsKey)[2], argsMap.get(ArgmentsKey)[3]), tp, new IAliasCollector() {
//			@Override
//			public void addAlias(Alias alias) {
//				System.out.println(alias.getAliasType().toString() + ":" + alias.getObjectId() +"," + alias.getIndex() + "," +  alias.getMethodSignature() + "," + alias.getLineNo());
//			}
//			@Override
//			public void changeTrackingObject(String from, String to) {
//				System.out.println("Change:" + from + " => " + to);
//			}
//		});

//		TraceJSON trace = new TraceJSON("traces\\_finalLocal.txt");
//		DeltaExtractorJSON s = new DeltaExtractorJSON(trace);
//		HashMap<String, ThreadInstance> threads = trace.getAllThreads();
//		ThreadInstance thread = threads.values().iterator().next();
//		TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
//		ExtractedStructure e = s.extract(new Reference(null, null, "finalLocal.Main$1Test", "finalLocal.Main$A"), tp);

//		TraceJSON trace = new TraceJSON("traces\\__arraySample.txt");
//		DeltaExtractorJSON s = new DeltaExtractorJSON(trace);
//		HashMap<String, ThreadInstance> threads = trace.getAllThreads();
//		for (ThreadInstance thread: threads.values()) {
//			TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
//			ExtractedStructure e = s.extract(new Reference(null, null, "arraySample.D", "arraySample.C"), tp);
//			s.extract(e.getDelta().getSrcSide().get(2), e.getCoordinator().getEntryPoint());
//			break;
//		}

//		TraceJSON trace = new TraceJSON("traces\\__arraySample.txt");
//		DeltaExtractorJSON s = new DeltaExtractorJSON(trace);
//		HashMap<String, ThreadInstance> threads = trace.getAllThreads();
//		ThreadInstance thread = threads.values().iterator().next();
//		TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
//		Reference ref = new Reference(null, null, "[Ljava.lang.Object;", "arraySample.B");
//		ref.setArray(true);
//		ExtractedStructure e = s.extract(ref, tp);

//		TraceJSON trace = new TraceJSON("traces\\_threadSample.txt");
//		DeltaExtractor s = new DeltaExtractorJSON(trace);
//		HashMap<String, ThreadInstance> threads = trace.getAllThreads();
//		Iterator<ThreadInstance> it = threads.values().iterator();
//		it.next();
//		it.next();
//		ThreadInstance thread = it.next();
//		TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint();
//		ExtractedStructure e = s.extract(new Reference(null, null, "threadSample.D", "threadSample.C"), tp);

//		DeltaExtractor s = new DeltaExtractor("documents\\finalLocal.txt");
//		ExtractedStructure es = s.extract();
//		s.extract("framework.RWT.RWTFrame3D",
//				"fight3D.CharacterSelectContainer");
//		s.extract("framework.B", "application.SubC");
//		s.extract("application.SubA", "framework.B");
//		FrameworkUsage usage = extractor.extract("framework.B",
//				"application.SubC");
//		FrameworkUsage usage = extractor.extract("application.SubA",
//				"framework.B");
//		s.extract("framework.model3D.Object3D",
//				"javax.media.j3d.TransformGroup");
//		s.extract("fight3D.Character", "fight3D.WeaponModel");
//		s.extract("test.E","test.C");
//		ExtractedStructure e = s.extract(new Reference("finalLocal.Main$1Test", "finalLocal.Main$A", null, null));

		// --------------- Eclipse Core ---------------				
//		DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Core.txt");
//		CallTree m = null;
//		ExtractedStructure e = null;
//		do {
//			if (m == null) {
//				m = s.getCallTreeBackwardly("public boolean java.util.HashSet.add(");
//			} else {
//				m = s.getCallTreeBackwardly("public boolean java.util.HashSet.add(", m.getStartLine() - 1);
//			}
//			if (m != null) {
//				ArrayList<ObjectReference> argments = m.getArguments();
//				System.out.println(m.getSignature() + ":" + argments.size());
//				for (int i = 0; i < argments.size(); i++) {
//					if (argments.get(i).getActualType().equals("org.eclipse.ui.internal.registry.ActionSetDescriptor")) {
//						e = s.extract(m, argments.get(i));
//						break;
//					}
//				}
//			}
//		} while (m != null);


		// --------------- Eclipse UI ---------------		
//		DeltaExtractor s = new DeltaExtractor("documents\\eclipse-ContextMenu.txt");
//		CallTree m = null;
//		ExtractedStructure e = null;
//		do {
//			if (m == null) {
//				m = s.getCallTreeBackwardly("private void org.eclipse.jface.action.ContributionManager.addToGroup(");
//			} else {
//				m = s.getCallTreeBackwardly("private void org.eclipse.jface.action.ContributionManager.addToGroup(", m.getStartLine() - 1);
//			}
//			if (m != null) {
//				ArrayList<ObjectReference> argments = m.getArguments();
//				System.out.println(m.getSignature() + ":" + argments.size());
//				for (int i = 0; i < argments.size(); i++) {
//					if (argments.get(i).getActualType().equals("org.eclipse.ui.internal.PluginActionCoolBarContributionItem")) {
//						e = s.extract(m, argments.get(i));
//						break;
//					}
//				}
//			}
//		} while (m != null);

		///////////////////////////////////////////////////////////////////////////////////
		//                                                                               //
		//                              ICSME2015投稿用                                                                                 //
		//                                                                               //
		///////////////////////////////////////////////////////////////////////////////////

		// --------------- Eclipse (2014/12/6 プログラム理解実証実験 課題1, 以下の1回目のデルタ) ---------------		
//		DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Console2.txt");
//		ExtractedStructure e = null;
//		do {
//			System.out.println(System.nanoTime() - time);
//			if (e == null) {
//				e = s.extract(new Reference(null, null, "org.eclipse.jface.action.ActionContributionItem", 
//						"org.eclipse.ui.console.actions.ClearOutputAction"));
//			} else {
//				e = s.extract(new Reference(null, null, "org.eclipse.jface.action.ActionContributionItem", 
//						"org.eclipse.ui.console.actions.ClearOutputAction"), e.getCreationCallTree().getEntryPoint());
//			}
//		} while (e != null);


		// --------------- Eclipse (2014/12/19-20 プログラム理解実証実験 課題2, 以下の2回目のデルタ) ---------------	
//		DeltaExtractor s = new DeltaExtractor("documents\\eclipse-JavaEditor.txt");
//		ExtractedStructure e = null;
//		do {
//			System.out.println(System.nanoTime() - time);
//			if (e == null) {
//				e = s.extract(new Reference(null, null, "org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer", 
//						"org.eclipse.jface.text.contentassist.ContentAssistant"));
//			} else {
//				e = s.extract(new Reference(null, null, "org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer", 
//						"org.eclipse.jface.text.contentassist.ContentAssistant"), e.getCreationCallTree().getEntryPoint());
//			}
//		} while (e != null);


		// --------------- ArgoUML (2014/12/19-20 プログラム理解実証実験 課題3, 以下の1回目のデルタ) ---------------		
//		DeltaExtractor s = new DeltaExtractor("documents\\ArgoUML-3.txt");
//		MethodExecution m = null;
//		ExtractedStructure e = null;
//		do {
//			System.out.println(System.nanoTime() - time);
//			if (m == null) {
//				m = s.getLastMethodExecution("protected void org.tigris.gef.base.SelectionManager.addFig(");
//			} else {
//				m = s.getLastMethodExecution("protected void org.tigris.gef.base.SelectionManager.addFig(", m.getEntryPoint());
//			}
//			if (m != null) {
//				ArrayList<ObjectReference> argments = m.getArguments();
//				System.out.println(m.getSignature() + ":" + argments.size());
//				for (int i = 0; i < argments.size(); i++) {
//					if (argments.get(i).getActualType().equals("org.argouml.uml.diagram.static_structure.ui.FigClass")) {
//						e = s.extract(m.getEntryPoint(), argments.get(i));
//						break;
//					}
//				}
//			}
//		} while (m != null);


		// --------------- ArgoUML (2014/12/19-20 プログラム理解実証実験 課題4, 以下の3回目のデルタ) ---------------	
//		DeltaExtractor s = new DeltaExtractor("documents\\ArgoUML-3.txt");
//		MethodExecution m = null;
//		ExtractedStructure e = null;
//		do {
//			System.out.println(System.nanoTime() - time);
//			if (m == null) {
//				m = s.getLastMethodExecution("public abstract interface boolean java.util.List.add(");
//			} else {
//				m = s.getLastMethodExecution("public abstract interface boolean java.util.List.add(", m.getEntryPoint());
//			}
//			if (m != null) {
//				ArrayList<ObjectReference> argments = m.getArguments();
//				System.out.println(m.getSignature() + ":" + argments.size());
//				for (int i = 0; i < argments.size(); i++) {
//					if (argments.get(i).getActualType().equals("org.argouml.uml.diagram.static_structure.ui.FigClass")) {
//						e = s.extract(m.getEntryPoint(), argments.get(i));
//						break;
//					}
//				}
//			}
//		} while (m != null);

		///////////////////////////////////////////////////////////////////////////////////
		//                                                                               //
		//                              SANER2016投稿用                                                                                 //
		//                                                                               //
		///////////////////////////////////////////////////////////////////////////////////

		// --------------- Eclipse SWT (2015/10/31 アーキテクチャ理解実証実験 課題1) ---------------		
		//  問1(1stデルタ), 以下のデルタ
//		DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Console2.txt");
//		MethodExecution m = null;
//		ExtractedStructure e = null;
//		System.out.println(System.nanoTime() - time);
//		do {
//			if (m == null) {
//				m = s.getLastMethodExecution("public void org.eclipse.jface.action.Action.runWithEvent(");
//			} else {
//				TracePoint nextTp = m.getEntryPoint();
//				nextTp.stepBackOver();
//				m = s.getLastMethodExecution("public void org.eclipse.jface.action.Action.runWithEvent(", nextTp);
//			}
//			if (m != null) {
//				ArrayList<ObjectReference> argments = m.getArguments();
//				for (int i = 0; i < argments.size(); i++) {
//					if (argments.get(i).getActualType().equals("org.eclipse.swt.widgets.Event")) {
//						System.out.println(System.nanoTime() - time);
//						e = s.extract(m.getEntryPoint(), argments.get(i));
//						break;
//					}
//				}
//			}
//		} while (e == null);
//		System.out.println(System.nanoTime() - time);
//		System.out.println("//////////////////////////////////");

		//   問2,3(2ndデルタ), 問1の続き, 以下のデルタ
//		Reference nextTarget = e.getDelta().getSrcSide().get(6);
//		e = s.extract(nextTarget, e.getCoordinator().getEntryPoint());


		// --------------- Eclipse JDT (2015/10/31 アーキテクチャ理解実証実験 課題2) ---------------		
		//   問1,2(1stデルタ), 以下のデルタ(抽出としては2回分)
//		DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Debug1.txt");
//		MethodExecution m = null;
//
//		System.out.println(System.nanoTime() - time);
//		ExtractedStructure e = null;
//		do {
//			if (m == null) {
//				m = s.getLastMethodExecution("public boolean org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.handleBreakpointEvent(");
//			} else {
//				TracePoint nextTp = m.getEntryPoint();
//				nextTp.stepBackOver();
//				m = s.getLastMethodExecution("public boolean org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.handleBreakpointEvent(", nextTp);
//			}
//			if (m != null) {
//				ArrayList<ObjectReference> argments = m.getArguments();
//				for (int i = 0; i < argments.size(); i++) {
//					if (argments.get(i).getActualType().equals("org.eclipse.jdi.internal.event.BreakpointEventImpl")) {
//						System.out.println(System.nanoTime() - time);
//						e = s.extract(m.getEntryPoint(), argments.get(i));
//						break;
//					}
//				}
//			}
//		} while (e == null);
//		Reference nextTarget = e.getDelta().getDstSide().get(3);		// EventDispatcher$1 -> EventSetImpl
//		e = s.extract(nextTarget, m.getEntryPoint());
//		System.out.println(System.nanoTime() - time);
//		System.out.println("//////////////////////////////////");
//
//		//   問3(2ndデルタ), 以下のデルタ
//		MethodExecution m2 = e.getCoordinator().getChildren().get(21);
//		e = s.extract(m2.getExitPoint(), new ObjectReference("859038530", "org.eclipse.jdi.internal.jdwp.JdwpCommandPacket"));
//		System.out.println(System.nanoTime() - time);
//		System.out.println("//////////////////////////////////");
//
//
//		//   問4(3rdデルタ), 以下のデルタ
//		m = e.getCoordinator().getChildren().get(0).getChildren().get(1).getChildren().get(4);
//		Reference lastTarget = new Reference(e.getDelta().getDstSide().get(1).getSrcObject(), e.getDelta().getDstSide().get(0).getDstObject());
//		lastTarget.setCollection(true);
//		e = s.extract(lastTarget, m.getExitPoint());


		// --------------- ArgoUML + GEF (2014/12/19-20 プログラム理解実証実験 課題3, 以下のデルタ) ---------------		
//		DeltaExtractor s = new DeltaExtractor("documents\\ArgoUML-3.txt");
//		MethodExecution m = null;
//		ExtractedStructure e = null;
//		System.out.println(System.nanoTime() - time);
//		m = s.getLastMethodExecution("public void org.argouml.uml.diagram.ui.ActionRemoveFromDiagram.actionPerformed(");
//		m = s.getLastMethodExecution("public java.util.Vector<org.tigris.gef.presentation.Fig> org.tigris.gef.base.SelectionManager.getFigs(");
//		if (m != null) {
//			System.out.println(System.nanoTime() - time);
//			Reference r = new Reference(null, null, "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.SelectionClass");
//			r.setCollection(true);
//			e = s.extract(r, m.getEntryPoint());
//		}


//		System.out.println(System.nanoTime() - time);
//		System.out.println("//////////////////////////////////");
//		// s.extractArg(e.getCoodinator(), 123456789);
//		// s.getCallHistory(e.getCoodinator());

		startDeltaViewer(eList.get(0), dacList.get(0));
	}

	/*
	 * 正しい結果
	 * 
===== Marked Methods =====
void worstCase.O.passL(worstCase.L)
worstCase.L worstCase.I.getL()
worstCase.L worstCase.K.getL()
worstCase.M worstCase.L.getM()
worstCase.K worstCase.J.getK()
void worstCase.N.passI(worstCase.I)
void worstCase.P.setM(worstCase.M)
===== Unmarked Methods =====
worstCase.F worstCase.C.getF()
worstCase.E worstCase.D.getE()
worstCase.A()
public worstCase.M()
worstCase.F()
void worstCase.A.m()
public static void worstCase.main.main(java.lang.String[])
worstCase.G()
worstCase.H()
worstCase.I()
worstCase.B()
worstCase.C()
worstCase.D()
worstCase.E()
worstCase.N()
worstCase.O()
worstCase.P()
worstCase.F worstCase.E.getF()
worstCase.J()
worstCase.K()
worstCase.L()
worstCase.I worstCase.F.getI()
worstCase.H worstCase.G.getH()
worstCase.I worstCase.H.getI()
worstCase.I worstCase.B.getI()
	 */
//		HashSet<String> all = trace.getAllMethodSignatures();
//		System.out.println("===== All Methods =====");
//		for (String method: all) {
//			System.out.println(method);
//		}
	/*
	 * 正しい結果
	 * 
===== All Methods =====
worstCase.F worstCase.C.getF()
worstCase.E worstCase.D.getE()
worstCase.A()
void worstCase.P.setM(worstCase.M)
public worstCase.M()
worstCase.M worstCase.L.getM()
worstCase.L worstCase.I.getL()
worstCase.L worstCase.K.getL()
void worstCase.N.passI(worstCase.I)
void worstCase.A.m()
worstCase.F()
public static void worstCase.main.main(java.lang.String[])
worstCase.G()
void worstCase.O.passL(worstCase.L)
worstCase.H()
worstCase.I()
worstCase.B()
worstCase.C()
worstCase.D()
worstCase.E()
worstCase.N()
worstCase.O()
worstCase.K worstCase.J.getK()
worstCase.F worstCase.E.getF()
worstCase.P()
worstCase.J()
worstCase.K()
worstCase.I worstCase.F.getI()
worstCase.I worstCase.H.getI()
worstCase.H worstCase.G.getH()
worstCase.L()
worstCase.I worstCase.B.getI()
	 */

//		ArrayList<MethodExecution> specified = trace.getMethodExecutions("void");
//		System.out.println("===== Specified Methods =====");
//		for (MethodExecution method: specified) {
//			System.out.println(method.getSignature());
//		}		
	/*
	 * 正しい結果
	 * 
===== Specified Methods =====
void worstCase.A.m()
void worstCase.N.passI(worstCase.I)
void worstCase.O.passL(worstCase.L)
void worstCase.P.setM(worstCase.M) * 
	 */	
//		HashMap<String, ArrayList<MethodExecution>> allExecutions = trace.getAllMethodExecutions();
//		System.out.println("===== All Methods and Executions =====");
//		for (String method: allExecutions.keySet()) {
//			System.out.println(method + ":" + allExecutions.get(method).size());
//		}
	/*
	 * 正しい結果
	 * 
===== All Methods and Executions =====
worstCase.F worstCase.C.getF():1
worstCase.E worstCase.D.getE():1
worstCase.A():1
void worstCase.P.setM(worstCase.M):1
public worstCase.M():1
worstCase.M worstCase.L.getM():1
worstCase.L worstCase.I.getL():1
worstCase.L worstCase.K.getL():1
void worstCase.N.passI(worstCase.I):1
void worstCase.A.m():1
worstCase.F():1
public static void worstCase.main.main(java.lang.String[]):1
worstCase.G():1
void worstCase.O.passL(worstCase.L):1
worstCase.H():1
worstCase.I():1
worstCase.B():1
worstCase.C():1
worstCase.D():1
worstCase.E():1
worstCase.N():1
worstCase.O():1
worstCase.K worstCase.J.getK():1
worstCase.F worstCase.E.getF():1
worstCase.P():1
worstCase.J():1
worstCase.K():1
worstCase.I worstCase.F.getI():1
worstCase.I worstCase.H.getI():1
worstCase.H worstCase.G.getH():1
worstCase.L():1
worstCase.I worstCase.B.getI():1
	 */	
//		System.out.println("===== All Statements Forward =====");
//		trace.traverseStatementsInTrace(new IStatementVisitor() {
//			@Override
//			public boolean preVisitStatement(Statement statement) {
//				if (statement instanceof FieldUpdate) {
//					if(trace.isNull((((FieldUpdate) statement).getValueObjId()))) {
//
//					}
//				}
//				System.out.println("pre:" + statement.getClass().getName() + ":" + statement.getTimeStamp());
//				return false;
//			}
//			@Override
//			public boolean postVisitStatement(Statement statement) {
//				System.out.println("post:" + statement.getClass().getName() + ":" + statement.getTimeStamp());
//				return false;
//			}
//		});
	/*
	 * 正しい結果
	 * 
===== All Statements Forward =====
pre:org.ntlab.trace.BlockEnter:1699552992988213
post:org.ntlab.trace.BlockEnter:1699552992988213
pre:org.ntlab.trace.MethodInvocation:1699552993730471
pre:org.ntlab.trace.MethodInvocation:1699552994339441
pre:org.ntlab.trace.MethodInvocation:1699552994979793
pre:org.ntlab.trace.MethodInvocation:1699552995575363
pre:org.ntlab.trace.MethodInvocation:1699552996163881
pre:org.ntlab.trace.MethodInvocation:1699552996774613
pre:org.ntlab.trace.MethodInvocation:1699552997363836
pre:org.ntlab.trace.MethodInvocation:1699552997949532
pre:org.ntlab.trace.MethodInvocation:1699552998548628
pre:org.ntlab.trace.MethodInvocation:1699552999050402
pre:org.ntlab.trace.MethodInvocation:1699552999466490
pre:org.ntlab.trace.MethodInvocation:1699552999875526
pre:org.ntlab.trace.MethodInvocation:1699553000173135
post:org.ntlab.trace.MethodInvocation:1699553000173135
pre:org.ntlab.trace.FieldUpdate:1699553000225322
post:org.ntlab.trace.FieldUpdate:1699553000225322
post:org.ntlab.trace.MethodInvocation:1699552999875526
pre:org.ntlab.trace.FieldUpdate:1699553000259878
post:org.ntlab.trace.FieldUpdate:1699553000259878
post:org.ntlab.trace.MethodInvocation:1699552999466490
pre:org.ntlab.trace.FieldUpdate:1699553000290908
post:org.ntlab.trace.FieldUpdate:1699553000290908
post:org.ntlab.trace.MethodInvocation:1699552999050402
pre:org.ntlab.trace.FieldUpdate:1699553000331107
post:org.ntlab.trace.FieldUpdate:1699553000331107
post:org.ntlab.trace.MethodInvocation:1699552998548628
pre:org.ntlab.trace.FieldUpdate:1699553000376947
post:org.ntlab.trace.FieldUpdate:1699553000376947
post:org.ntlab.trace.MethodInvocation:1699552997949532
pre:org.ntlab.trace.FieldUpdate:1699553000422435
post:org.ntlab.trace.FieldUpdate:1699553000422435
post:org.ntlab.trace.MethodInvocation:1699552997363836
pre:org.ntlab.trace.FieldUpdate:1699553000463691
post:org.ntlab.trace.FieldUpdate:1699553000463691
post:org.ntlab.trace.MethodInvocation:1699552996774613
pre:org.ntlab.trace.FieldUpdate:1699553000508121
post:org.ntlab.trace.FieldUpdate:1699553000508121
post:org.ntlab.trace.MethodInvocation:1699552996163881
pre:org.ntlab.trace.FieldUpdate:1699553000551845
post:org.ntlab.trace.FieldUpdate:1699553000551845
post:org.ntlab.trace.MethodInvocation:1699552995575363
pre:org.ntlab.trace.FieldUpdate:1699553000596627
post:org.ntlab.trace.FieldUpdate:1699553000596627
post:org.ntlab.trace.MethodInvocation:1699552994979793
pre:org.ntlab.trace.FieldUpdate:1699553000640352
post:org.ntlab.trace.FieldUpdate:1699553000640352
post:org.ntlab.trace.MethodInvocation:1699552994339441
pre:org.ntlab.trace.FieldUpdate:1699553000682666
post:org.ntlab.trace.FieldUpdate:1699553000682666
pre:org.ntlab.trace.MethodInvocation:1699553001472175
pre:org.ntlab.trace.MethodInvocation:1699553002201034
pre:org.ntlab.trace.MethodInvocation:1699553003026510
post:org.ntlab.trace.MethodInvocation:1699553003026510
pre:org.ntlab.trace.FieldUpdate:1699553003101618
post:org.ntlab.trace.FieldUpdate:1699553003101618
post:org.ntlab.trace.MethodInvocation:1699553002201034
pre:org.ntlab.trace.FieldUpdate:1699553003149926
post:org.ntlab.trace.FieldUpdate:1699553003149926
post:org.ntlab.trace.MethodInvocation:1699553001472175
pre:org.ntlab.trace.FieldUpdate:1699553003190477
post:org.ntlab.trace.FieldUpdate:1699553003190477
post:org.ntlab.trace.MethodInvocation:1699552993730471
pre:org.ntlab.trace.MethodInvocation:1699553003253243
pre:org.ntlab.trace.BlockEnter:1699553003273695
post:org.ntlab.trace.BlockEnter:1699553003273695
pre:org.ntlab.trace.FieldAccess:1699553003299083
post:org.ntlab.trace.FieldAccess:1699553003299083
pre:org.ntlab.trace.FieldAccess:1699553003355502
post:org.ntlab.trace.FieldAccess:1699553003355502
pre:org.ntlab.trace.MethodInvocation:1699553003386885
pre:org.ntlab.trace.BlockEnter:1699553003400637
post:org.ntlab.trace.BlockEnter:1699553003400637
pre:org.ntlab.trace.FieldAccess:1699553003436956
post:org.ntlab.trace.FieldAccess:1699553003436956
pre:org.ntlab.trace.MethodInvocation:1699553003482444
pre:org.ntlab.trace.BlockEnter:1699553003500427
post:org.ntlab.trace.BlockEnter:1699553003500427
pre:org.ntlab.trace.FieldAccess:1699553003526169
post:org.ntlab.trace.FieldAccess:1699553003526169
pre:org.ntlab.trace.MethodInvocation:1699553003556141
pre:org.ntlab.trace.BlockEnter:1699553003570951
post:org.ntlab.trace.BlockEnter:1699553003570951
pre:org.ntlab.trace.FieldAccess:1699553003599513
post:org.ntlab.trace.FieldAccess:1699553003599513
post:org.ntlab.trace.MethodInvocation:1699553003556141
pre:org.ntlab.trace.MethodInvocation:1699553003668273
pre:org.ntlab.trace.BlockEnter:1699553003688020
post:org.ntlab.trace.BlockEnter:1699553003688020
pre:org.ntlab.trace.FieldAccess:1699553003715876
post:org.ntlab.trace.FieldAccess:1699553003715876
post:org.ntlab.trace.MethodInvocation:1699553003668273
post:org.ntlab.trace.MethodInvocation:1699553003482444
pre:org.ntlab.trace.MethodInvocation:1699553003805088
pre:org.ntlab.trace.BlockEnter:1699553003818135
post:org.ntlab.trace.BlockEnter:1699553003818135
pre:org.ntlab.trace.FieldAccess:1699553003846345
post:org.ntlab.trace.FieldAccess:1699553003846345
pre:org.ntlab.trace.MethodInvocation:1699553003896769
pre:org.ntlab.trace.BlockEnter:1699553003912989
post:org.ntlab.trace.BlockEnter:1699553003912989
pre:org.ntlab.trace.FieldAccess:1699553003944020
post:org.ntlab.trace.FieldAccess:1699553003944020
post:org.ntlab.trace.MethodInvocation:1699553003896769
pre:org.ntlab.trace.MethodInvocation:1699553004012075
pre:org.ntlab.trace.BlockEnter:1699553004029706
post:org.ntlab.trace.BlockEnter:1699553004029706
pre:org.ntlab.trace.FieldAccess:1699553004082951
post:org.ntlab.trace.FieldAccess:1699553004082951
post:org.ntlab.trace.MethodInvocation:1699553004012075
post:org.ntlab.trace.MethodInvocation:1699553003805088
post:org.ntlab.trace.MethodInvocation:1699553003386885
pre:org.ntlab.trace.MethodInvocation:1699553004208835
pre:org.ntlab.trace.BlockEnter:1699553004228229
post:org.ntlab.trace.BlockEnter:1699553004228229
pre:org.ntlab.trace.FieldAccess:1699553004257849
post:org.ntlab.trace.FieldAccess:1699553004257849
pre:org.ntlab.trace.MethodInvocation:1699553004302631
pre:org.ntlab.trace.BlockEnter:1699553004326962
post:org.ntlab.trace.BlockEnter:1699553004326962
pre:org.ntlab.trace.FieldAccess:1699553004373507
post:org.ntlab.trace.FieldAccess:1699553004373507
pre:org.ntlab.trace.MethodInvocation:1699553004418995
pre:org.ntlab.trace.BlockEnter:1699553004434510
post:org.ntlab.trace.BlockEnter:1699553004434510
pre:org.ntlab.trace.FieldAccess:1699553004461661
post:org.ntlab.trace.FieldAccess:1699553004461661
post:org.ntlab.trace.MethodInvocation:1699553004418995
pre:org.ntlab.trace.MethodInvocation:1699553004515964
pre:org.ntlab.trace.BlockEnter:1699553004526543
post:org.ntlab.trace.BlockEnter:1699553004526543
pre:org.ntlab.trace.FieldAccess:1699553004546994
post:org.ntlab.trace.FieldAccess:1699553004546994
post:org.ntlab.trace.MethodInvocation:1699553004515964
post:org.ntlab.trace.MethodInvocation:1699553004302631
pre:org.ntlab.trace.MethodInvocation:1699553004606587
pre:org.ntlab.trace.BlockEnter:1699553004615402
post:org.ntlab.trace.BlockEnter:1699553004615402
pre:org.ntlab.trace.FieldAccess:1699553004629507
post:org.ntlab.trace.FieldAccess:1699553004629507
pre:org.ntlab.trace.MethodInvocation:1699553004648195
pre:org.ntlab.trace.BlockEnter:1699553004655953
post:org.ntlab.trace.BlockEnter:1699553004655953
pre:org.ntlab.trace.FieldAccess:1699553004670763
post:org.ntlab.trace.FieldAccess:1699553004670763
post:org.ntlab.trace.MethodInvocation:1699553004648195
pre:org.ntlab.trace.MethodInvocation:1699553004703556
pre:org.ntlab.trace.BlockEnter:1699553004712019
post:org.ntlab.trace.BlockEnter:1699553004712019
pre:org.ntlab.trace.FieldUpdate:1699553004728240
post:org.ntlab.trace.FieldUpdate:1699553004728240
post:org.ntlab.trace.MethodInvocation:1699553004703556
post:org.ntlab.trace.MethodInvocation:1699553004606587
post:org.ntlab.trace.MethodInvocation:1699553004208835
post:org.ntlab.trace.MethodInvocation:1699553003253243
	 */	

	// Change!
//		System.out.println("===== All Statements Backward =====");
//		TracePoint tp = null;
//		DeltaAliasCollector dac = new DeltaAliasCollector();
//		long restart = 0L;
//		for(;;) {
//			tp = trace.traverseStatementsInTraceBackward(new IStatementVisitor() {
//				@Override
//				public boolean preVisitStatement(Statement statement) {
//					System.out.println("pre:" + statement.getThreadNo() + ":" + statement.getTimeStamp());
//					if(statement instanceof FieldUpdate) {
//						FieldUpdate fu = (FieldUpdate) statement;
//						if(!Trace.isNull(fu.getValueObjId()) && !Trace.isPrimitive(fu.getValueClassName())) {
//							return true;
//						}
//					}
//					return false;
//				}
//
//				@Override
//				public boolean postVisitStatement(Statement statement) {
//					System.out.println("post:" + statement.getThreadNo() + ":" + statement.getTimeStamp());
//					return false;
//				}
//			}, restart);
//			if(tp == null || !tp.isValid()) break;
//			dex.extract(tp, dac);
//			Statement statement = tp.getStatement();
//			if(statement instanceof MethodInvocation) {
//				restart = ((MethodInvocation)tp.getStatement()).getCalledMethodExecution().getExitTime();
//			} else {
//				restart = tp.getStatement().getTimeStamp();
//			}
//		}

//		trace.traverseStatementsInTraceBackward(new IStatementVisitor() {
//			@Override
//			public boolean preVisitStatement(Statement statement) {
//				System.out.println("post:" + statement.getClass().getName() + ":" + statement.getTimeStamp());
//				return false;
//			}
//			@Override
//			public boolean postVisitStatement(Statement statement) {
//				System.out.println("pre:" + statement.getClass().getName() + ":" + statement.getTimeStamp());
//				return false;
//			}
//		});

	private static void startDeltaViewer(ExtractedStructure e, DeltaAliasCollector dac) {
		// TODO Auto-generated method stub
		DeltaViewer dv = new DeltaViewer(e, dac);
		List<Alias> aliasList = new ArrayList<>(dac.getAliasList());
//		DeltaViewer dv = new DeltaViewer(e, dac);
//		List<Alias> aliasList = new ArrayList<>(dac.getAliasList());
//		dv.setCoordinatorPoint(1200, 100);
		dv.init();
//		dv.update();
//		for(int i = 0; i < aliasList.size(); i++) {
//			System.out.println(aliasList.get(i).getObjectId() + ", " + aliasList.get(i).getMethodSignature() + " l." + aliasList.get(i).getLineNo() + " : " + aliasList.get(i).getAliasType().toString());
//		}
		for(int i = 0; i <= aliasList.size(); i++) {
			dv.stepToAnimation(i);
//			dv.update();
		}
	}
	private static void traverseMethodExecution(MethodExecution m) {
		System.out.println(m.getSignature());
		for(Statement ms :m.getStatements()) {
			if(ms instanceof FieldAccess) {
				System.out.println(((FieldAccess)ms).getFieldName());
			}
		}
		for(MethodExecution m2: m.getChildren()) {
			traverseMethodExecution(m2);
		}
	}
	/*
	 * 正しい結果
	 * 
===== All Statements Backward =====
post:org.ntlab.trace.MethodInvocation:1699553003253243
post:org.ntlab.trace.MethodInvocation:1699553004208835
post:org.ntlab.trace.MethodInvocation:1699553004606587
post:org.ntlab.trace.MethodInvocation:1699553004703556
post:org.ntlab.trace.FieldUpdate:1699553004728240
pre:org.ntlab.trace.FieldUpdate:1699553004728240
post:org.ntlab.trace.BlockEnter:1699553004712019
pre:org.ntlab.trace.BlockEnter:1699553004712019
pre:org.ntlab.trace.MethodInvocation:1699553004703556
post:org.ntlab.trace.MethodInvocation:1699553004648195
post:org.ntlab.trace.FieldAccess:1699553004670763
pre:org.ntlab.trace.FieldAccess:1699553004670763
post:org.ntlab.trace.BlockEnter:1699553004655953
pre:org.ntlab.trace.BlockEnter:1699553004655953
pre:org.ntlab.trace.MethodInvocation:1699553004648195
post:org.ntlab.trace.FieldAccess:1699553004629507
pre:org.ntlab.trace.FieldAccess:1699553004629507
post:org.ntlab.trace.BlockEnter:1699553004615402
pre:org.ntlab.trace.BlockEnter:1699553004615402
pre:org.ntlab.trace.MethodInvocation:1699553004606587
post:org.ntlab.trace.MethodInvocation:1699553004302631
post:org.ntlab.trace.MethodInvocation:1699553004515964
post:org.ntlab.trace.FieldAccess:1699553004546994
pre:org.ntlab.trace.FieldAccess:1699553004546994
post:org.ntlab.trace.BlockEnter:1699553004526543
pre:org.ntlab.trace.BlockEnter:1699553004526543
pre:org.ntlab.trace.MethodInvocation:1699553004515964
post:org.ntlab.trace.MethodInvocation:1699553004418995
post:org.ntlab.trace.FieldAccess:1699553004461661
pre:org.ntlab.trace.FieldAccess:1699553004461661
post:org.ntlab.trace.BlockEnter:1699553004434510
pre:org.ntlab.trace.BlockEnter:1699553004434510
pre:org.ntlab.trace.MethodInvocation:1699553004418995
post:org.ntlab.trace.FieldAccess:1699553004373507
pre:org.ntlab.trace.FieldAccess:1699553004373507
post:org.ntlab.trace.BlockEnter:1699553004326962
pre:org.ntlab.trace.BlockEnter:1699553004326962
pre:org.ntlab.trace.MethodInvocation:1699553004302631
post:org.ntlab.trace.FieldAccess:1699553004257849
pre:org.ntlab.trace.FieldAccess:1699553004257849
post:org.ntlab.trace.BlockEnter:1699553004228229
pre:org.ntlab.trace.BlockEnter:1699553004228229
pre:org.ntlab.trace.MethodInvocation:1699553004208835
post:org.ntlab.trace.MethodInvocation:1699553003386885
post:org.ntlab.trace.MethodInvocation:1699553003805088
post:org.ntlab.trace.MethodInvocation:1699553004012075
post:org.ntlab.trace.FieldAccess:1699553004082951
pre:org.ntlab.trace.FieldAccess:1699553004082951
post:org.ntlab.trace.BlockEnter:1699553004029706
pre:org.ntlab.trace.BlockEnter:1699553004029706
pre:org.ntlab.trace.MethodInvocation:1699553004012075
post:org.ntlab.trace.MethodInvocation:1699553003896769
post:org.ntlab.trace.FieldAccess:1699553003944020
pre:org.ntlab.trace.FieldAccess:1699553003944020
post:org.ntlab.trace.BlockEnter:1699553003912989
pre:org.ntlab.trace.BlockEnter:1699553003912989
pre:org.ntlab.trace.MethodInvocation:1699553003896769
post:org.ntlab.trace.FieldAccess:1699553003846345
pre:org.ntlab.trace.FieldAccess:1699553003846345
post:org.ntlab.trace.BlockEnter:1699553003818135
pre:org.ntlab.trace.BlockEnter:1699553003818135
pre:org.ntlab.trace.MethodInvocation:1699553003805088
post:org.ntlab.trace.MethodInvocation:1699553003482444
post:org.ntlab.trace.MethodInvocation:1699553003668273
post:org.ntlab.trace.FieldAccess:1699553003715876
pre:org.ntlab.trace.FieldAccess:1699553003715876
post:org.ntlab.trace.BlockEnter:1699553003688020
pre:org.ntlab.trace.BlockEnter:1699553003688020
pre:org.ntlab.trace.MethodInvocation:1699553003668273
post:org.ntlab.trace.MethodInvocation:1699553003556141
post:org.ntlab.trace.FieldAccess:1699553003599513
pre:org.ntlab.trace.FieldAccess:1699553003599513
post:org.ntlab.trace.BlockEnter:1699553003570951
pre:org.ntlab.trace.BlockEnter:1699553003570951
pre:org.ntlab.trace.MethodInvocation:1699553003556141
post:org.ntlab.trace.FieldAccess:1699553003526169
pre:org.ntlab.trace.FieldAccess:1699553003526169
post:org.ntlab.trace.BlockEnter:1699553003500427
pre:org.ntlab.trace.BlockEnter:1699553003500427
pre:org.ntlab.trace.MethodInvocation:1699553003482444
post:org.ntlab.trace.FieldAccess:1699553003436956
pre:org.ntlab.trace.FieldAccess:1699553003436956
post:org.ntlab.trace.BlockEnter:1699553003400637
pre:org.ntlab.trace.BlockEnter:1699553003400637
pre:org.ntlab.trace.MethodInvocation:1699553003386885
post:org.ntlab.trace.FieldAccess:1699553003355502
pre:org.ntlab.trace.FieldAccess:1699553003355502
post:org.ntlab.trace.FieldAccess:1699553003299083
pre:org.ntlab.trace.FieldAccess:1699553003299083
post:org.ntlab.trace.BlockEnter:1699553003273695
pre:org.ntlab.trace.BlockEnter:1699553003273695
pre:org.ntlab.trace.MethodInvocation:1699553003253243
post:org.ntlab.trace.MethodInvocation:1699552993730471
post:org.ntlab.trace.FieldUpdate:1699553003190477
pre:org.ntlab.trace.FieldUpdate:1699553003190477
post:org.ntlab.trace.MethodInvocation:1699553001472175
post:org.ntlab.trace.FieldUpdate:1699553003149926
pre:org.ntlab.trace.FieldUpdate:1699553003149926
post:org.ntlab.trace.MethodInvocation:1699553002201034
post:org.ntlab.trace.FieldUpdate:1699553003101618
pre:org.ntlab.trace.FieldUpdate:1699553003101618
post:org.ntlab.trace.MethodInvocation:1699553003026510
pre:org.ntlab.trace.MethodInvocation:1699553003026510
pre:org.ntlab.trace.MethodInvocation:1699553002201034
pre:org.ntlab.trace.MethodInvocation:1699553001472175
post:org.ntlab.trace.FieldUpdate:1699553000682666
pre:org.ntlab.trace.FieldUpdate:1699553000682666
post:org.ntlab.trace.MethodInvocation:1699552994339441
post:org.ntlab.trace.FieldUpdate:1699553000640352
pre:org.ntlab.trace.FieldUpdate:1699553000640352
post:org.ntlab.trace.MethodInvocation:1699552994979793
post:org.ntlab.trace.FieldUpdate:1699553000596627
pre:org.ntlab.trace.FieldUpdate:1699553000596627
post:org.ntlab.trace.MethodInvocation:1699552995575363
post:org.ntlab.trace.FieldUpdate:1699553000551845
pre:org.ntlab.trace.FieldUpdate:1699553000551845
post:org.ntlab.trace.MethodInvocation:1699552996163881
post:org.ntlab.trace.FieldUpdate:1699553000508121
pre:org.ntlab.trace.FieldUpdate:1699553000508121
post:org.ntlab.trace.MethodInvocation:1699552996774613
post:org.ntlab.trace.FieldUpdate:1699553000463691
pre:org.ntlab.trace.FieldUpdate:1699553000463691
post:org.ntlab.trace.MethodInvocation:1699552997363836
post:org.ntlab.trace.FieldUpdate:1699553000422435
pre:org.ntlab.trace.FieldUpdate:1699553000422435
post:org.ntlab.trace.MethodInvocation:1699552997949532
post:org.ntlab.trace.FieldUpdate:1699553000376947
pre:org.ntlab.trace.FieldUpdate:1699553000376947
post:org.ntlab.trace.MethodInvocation:1699552998548628
post:org.ntlab.trace.FieldUpdate:1699553000331107
pre:org.ntlab.trace.FieldUpdate:1699553000331107
post:org.ntlab.trace.MethodInvocation:1699552999050402
post:org.ntlab.trace.FieldUpdate:1699553000290908
pre:org.ntlab.trace.FieldUpdate:1699553000290908
post:org.ntlab.trace.MethodInvocation:1699552999466490
post:org.ntlab.trace.FieldUpdate:1699553000259878
pre:org.ntlab.trace.FieldUpdate:1699553000259878
post:org.ntlab.trace.MethodInvocation:1699552999875526
post:org.ntlab.trace.FieldUpdate:1699553000225322
pre:org.ntlab.trace.FieldUpdate:1699553000225322
post:org.ntlab.trace.MethodInvocation:1699553000173135
pre:org.ntlab.trace.MethodInvocation:1699553000173135
pre:org.ntlab.trace.MethodInvocation:1699552999875526
pre:org.ntlab.trace.MethodInvocation:1699552999466490
pre:org.ntlab.trace.MethodInvocation:1699552999050402
pre:org.ntlab.trace.MethodInvocation:1699552998548628
pre:org.ntlab.trace.MethodInvocation:1699552997949532
pre:org.ntlab.trace.MethodInvocation:1699552997363836
pre:org.ntlab.trace.MethodInvocation:1699552996774613
pre:org.ntlab.trace.MethodInvocation:1699552996163881
pre:org.ntlab.trace.MethodInvocation:1699552995575363
pre:org.ntlab.trace.MethodInvocation:1699552994979793
pre:org.ntlab.trace.MethodInvocation:1699552994339441
pre:org.ntlab.trace.MethodInvocation:1699552993730471
post:org.ntlab.trace.BlockEnter:1699552992988213
pre:org.ntlab.trace.BlockEnter:1699552992988213
	 */

	private static void setArgmentsForDeltaExtract(Map map){
		String[] test = {null, null, "org.argouml.uml.diagram.static_structure.ui.FigClass","org.tigris.gef.base.LayerPerspectiveMutable", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("test", test);
		String[] testVectorAddElement = {null, null, "java.util.Vector", "org.tigris.gef.base.LayerPerspective", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("testVectorAddElement", testVectorAddElement);//trace.javaに"addElement("に対応するように追加
		String[] sample1 = {null, null, "sample1.D", "sample1.C", "traces\\sample1.trace"}; map.put("sample1", sample1);
		String[] sampleArray = {null, null, "sampleArray.D", "sampleArray.C", "traces\\sampleArray.trace"}; map.put("sampleArray", sampleArray);
		String[] sampleCollection = {null, null, "sampleCollection.D", "sampleCollection.C", "traces\\sampleCollection.trace"}; map.put("sampleCollection", sampleCollection);
		String[] sampleCreate = {null, null, "sampleCreate.D", "sampleCreate.C", "traces\\sampleCreate.trace"}; map.put("sampleCreate", sampleCreate);
		String[] sampleStatic = {null, null, "sampleStatic.D", "sampleStatic.C", "traces\\sampleStatic.trace"}; map.put("sampleStatic", sampleStatic);
		String[] worstCase = {null, null, "worstCase.P", "worstCase.M", "traces/_worstCase.txt"}; map.put("worstCase", worstCase);
		//		String[] ArgoUMLSelect0_1 = {"1994249754", "1141430801", "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.SelectionClass","traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLSelect0_1", ArgoUMLSelect0_1);
		String[] ArgoUMLSelect0_1 = {"1994249754", "1141430801", null, null,"traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLSelect0_1", ArgoUMLSelect0_1);
		/*Vector.addElemnt()に対応済み*/String[] ArgoUMLDelete0_2 = {"1784213708", "1337038091", "java.util.Vector", "org.argouml.uml.diagram.static_structure.ui.FigClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLDelete0_2", ArgoUMLDelete0_2);
		/*更に過去mouse.Pressed(), mouseReleased()*/String[] ArgoUMLPlace1_1 = {null, null, "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.FigClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLPlace1_1", ArgoUMLPlace1_1);
		String[] ArgoUMLSelect1_2 = {"1994249754", "1141430801", "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.SelectionClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLSelect1_2", ArgoUMLSelect1_2);
		String[] jEditSelect2_1 = {"932187140", "1572482885", "java.util.ArrayList", "org.gjt.sp.jedit.textarea.Selection$Range", "traces\\jEditBenchmarkWithMoreStandardClasses.trace"}; map.put("jEditSelect2_1", jEditSelect2_1);
		/*List.toArray()に対応させる必要がある?*/String[] jEditDelete2_2 = {null, null, "org.gjt.sp.jedit.buffer.ContentManager", "java.util.ArrayList", "traces\\jEditBenchmarkWithMoreStandardClasses.trace"}; map.put("jEditDelete2_2", jEditDelete2_2);
		String[] jHotDrawSelect3_1 = {"361298449", "212532447", "java.util.LinkedHashSet", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawSelect3_1", jHotDrawSelect3_1);
		String[] jHotDrawMove3_2 = {"778703711", "212532447", "org.jhotdraw.draw.tool.DefaultDragTracker", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawMove3_2", jHotDrawMove3_2);
		/*不明*/String[] jHotDrawMove3_2_1 = {null, null, "java.util.ArrayList", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawMove3_2_1", jHotDrawMove3_2_1);
		String[] jHotDrawPlace4_1 = {"1284329882", "212532447", "java.util.HashMap", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawPlace4_1", jHotDrawPlace4_1);
		String[] jHotDrawSelect4_2 = {"361298449", "212532447", "java.util.LinkedHashSet", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawSelect4_2", jHotDrawSelect4_2);
	}

}