parser.postProcess(fractions);  CallID[] callIDArray = (CallID[])parser.getCallIDs().toArray(new CallID[0]);
		public void run()		{			try			{				long startTime = System.currentTimeMillis();				System.out.println("Parsing " + profileFile);				Parser parser = ParserFactory.instance().createParser(profileFile);				parser.execute();				System.out.println("\tParsed in " + ( System.currentTimeMillis() - startTime ) + " ms");							Collection callIDs = parser.getCallIDs();				Collection proxyCallIDs = parser.getProxyCallIDs();				CallID[] callIDArray = (CallID[])parser.getCallIDs().toArray(new CallID[0]);				double[] fractions;							cbParsed.setSelected(true);				CallFractionSolverData data = new CallFractionSolverData(callIDs, proxyCallIDs);				CallFractionSolver solver = new CallFractionSolver(data);							File fractionsFile = new File(profileFile.getAbsolutePath() + ".graph");				if ( !fractionsFile.exists() ||					 fractionsFile.lastModified() < profileFile.lastModified() )				{					// System.setProperty("solver.user.name", "JAVA_USER");					SocketConnection.Factory factory = new SocketConnection.Factory("neos.mcs.anl.gov", 3333);					factory.setDebug(true, profileFile.getName());					fractions = solver.execute(factory);					FileWriter writer = new FileWriter(fractionsFile);					solver.writeToFile(writer, fractions);					writer.close();				}				else				{					fractions = solver.readFromFile(new FileReader(fractionsFile), callIDs.size());				}							cg = new CallGraph(callIDArray, fractions);							cbSolved.setSelected(true);			}			catch (Exception x)			{				x.printStackTrace();				lblError.setText("Error parsing file : " + x.getMessage());				cg = null;			}			btnOK.setEnabled(true);		}