FLEX-34343: Remove the fdbworkers directory before to merge to the develop branch
diff --git a/modules/fdbworkers/META-INF/MANIFEST.MF b/modules/fdbworkers/META-INF/MANIFEST.MF
deleted file mode 100644
index f750b36..0000000
--- a/modules/fdbworkers/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,27 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Apache Flex FDB OSGi Bundle
-Bundle-SymbolicName: com.adobe.flash.fdb
-Bundle-Version: 0.0.0
-Bundle-Vendor: Apache Software Foundation
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Require-Bundle: com.adobe.flash.compiler;bundle-version="0.0.0"
-Export-Package:  flash.graphics.images,
- flash.localization,
- flash.swf,
- flash.swf.actions,
- flash.swf.builder.tags,
- flash.swf.builder.types,
- flash.swf.debug,
- flash.swf.tags,
- flash.swf.tools,
- flash.swf.types,
- flash.tools,
- flash.tools.debugger,
- flash.tools.debugger.concrete,
- flash.tools.debugger.events,
- flash.tools.debugger.expression,
- flash.tools.debugger.threadsafe,
- flash.util,
- flex.tools.debugger.cli
-Bundle-ClassPath: fdb.jar
diff --git a/modules/fdbworkers/build.properties b/modules/fdbworkers/build.properties
deleted file mode 100644
index f02bf6d..0000000
--- a/modules/fdbworkers/build.properties
+++ /dev/null
@@ -1,56 +0,0 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
-bin.includes = META-INF/,\
-               plugin.xml,\
-               fdb.jar
-output.fdb.jar = bin/
-source.fdb.jar = src/,\
-				swf-utils-models/,\
-				generated/src/
-jars.compile.order = fdb.jar
-
-# description values 
-release=Flash Debugger
-release.version=1.0.0
-
-
-# JAR Manifest Entries
-manifest.sealed=false
-manifest.Implementation-Title=${release}
-manifest.Implementation-Version=${release.version}
-manifest.Implementation-Vendor=Apache Software Foundation
-main.class=flex.tools.debugger.cli.DebugCLI
-
-# Directories
-basedir.bin=${basedir}/bin
-basedir.lib=${basedir}/lib
-basedir.src=${basedir}/src
-basedir.swfutils=${basedir}/swf-utils-models
-basedir.generated.src=${basedir}/generated/src
-basedir.manifest=${basedir}/META-INF
-compiler.generated.lib=${basedir}/../../compiler/com.adobe.flash.compiler/generated/dist/sdk/lib
-generated=${basedir}/generated
-dist=${basedir}/dist
-
-#JAR names
-jar=fdb.jar
-jar.dependencies=asc-common.jar
-
-
-
diff --git a/modules/fdbworkers/build.xml b/modules/fdbworkers/build.xml
deleted file mode 100644
index 24b830a..0000000
--- a/modules/fdbworkers/build.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
--->
-<project basedir="." default="jar" name="com.adobe.flash.fdb" >
-	<property file="build.properties" />
-	<!-- label is set by CruiseControl script based on P4 label incrementer -->
-	<condition property="build.number" value="${label}" else="0">
-	     <isset property="label" />
-	</condition>
-	<path id="classpath">
-			<fileset dir="${compiler.generated.lib}" includes="${jar.dependencies}" />
-		</path>
-
-		<target name="jar" depends="compile">
-		    <mkdir dir="${dist}" />
-			<jar destfile="${dist}/${jar}" basedir="${basedir.bin}" includes="**/*.class **/*.properties **/*.txt">
-				<manifest>
-	                <attribute name="Sealed" value="${manifest.sealed}" />
-	                <attribute name="Implementation-Title" value="${manifest.Implementation-Title}" />
-	                <attribute name="Implementation-Version" value="${manifest.Implementation-Version}.${build.number}" />
-	                <attribute name="Implementation-Vendor" value="${manifest.Implementation-Vendor}" />
-					<attribute name="Main-Class" value="${main.class}" />
-					<attribute name="Class-Path" value="${jar.dependencies}" />
-	            </manifest>
-			</jar>
-		</target>
-
-		<target name="compile" depends="clean, generate-burm" description="compile">
-			<javac includes="**/*.java" classpathref="classpath">
-				<src path="${basedir.swfutils}" />
-				<src path="${basedir.generated.src}" />
-				<src path="${basedir.src}" />
-			</javac>
-		</target>
-		
-		<target name="generate-burm">
-			    	<ant antfile="jburg-gen.xml" target="main" />
-			    </target>
-
-		<target name="clean" description="clean">
-			<echo message="Cleaning out dist dir: ${dist}" />
-			<ant antfile="jburg-gen.xml" target="clean" />
-			<delete quiet="true" includeemptydirs="true">
-				<fileset dir="${dist}" />
-			</delete>
-		</target>
-
-</project>
diff --git a/modules/fdbworkers/jburg-gen.xml b/modules/fdbworkers/jburg-gen.xml
deleted file mode 100644
index c01ad4e..0000000
--- a/modules/fdbworkers/jburg-gen.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
--->
-<project name="fdb" default="main" basedir=".">
-	<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${env.ANT_HOME}/lib/ant-contrib-1.0b2.jar"/>
-
-	<target name="main">
-		<if>
-			<available file="generated/src/flash/tools/debugger/expression/AS3DebuggerBURM.java" />
-			<then>
-				<echo>
-AS3DebuggerBURM.java is generated. (If your changes are not reflected, you might want to consider a clean,build)
-				</echo>
-			</then>
-			<else>
-				<mkdir dir="generated/src/flash/tools/debugger/expression/" />
-				<java classname="jburg.burg.JBurgMain" classpath="../../compiler/com.adobe.flash.compiler/generated/intermediates/classes" failonerror="yes" fork="yes" dir="">
-					<arg value="src/flash/tools/debugger/expression/AS3DebuggerBURM.jbg" />
-					<arg value="-outputdir" />
-					<arg value="generated/src/flash/tools/debugger/expression" />
-					<arg value="-outputfile" />
-					<arg value="AS3DebuggerBURM.java" />
-					<arg value="-g" />
-					<classpath>
-						<pathelement location="../../compiler/com.adobe.flash.compiler/lib/jburg-1.18.jar" />
-						<pathelement location="../../compiler/com.adobe.flash.compiler/lib/antlr.jar" />
-						<pathelement location="../../compiler/com.adobe.flash.compiler/generated/intermediates/classes" />
-					</classpath>
-				</java>
-			</else>
-		</if>
-	</target>
-	<target name="clean" description="clean">
-		<echo message="Cleaning out generated dir: generated/src/" />
-		<delete failonerror="false" quiet="true" includeemptydirs="true">
-			<fileset dir="generated/src/">
-				<include name="**/*" />
-				<exclude name="intermediates/eclipse/**/*" />
-			</fileset>
-		</delete>
-	</target>
-	<!-- End Debugger targets -->
-</project>
diff --git a/modules/fdbworkers/src/flash/tools/ActionLocation.java b/modules/fdbworkers/src/flash/tools/ActionLocation.java
deleted file mode 100644
index 741644e..0000000
--- a/modules/fdbworkers/src/flash/tools/ActionLocation.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools;
-
-import flash.swf.types.ActionList;
-import flash.swf.actions.ConstantPool;
-import flash.swf.actions.DefineFunction;
-
-/**
- * ActionLocation record.  Used to contain
- * information regarding a specific location
- * within an action record.  
- * 
- * at and actions are typically guaranteed to 
- * be filled out.  The others are optional.
- * @see SwfActionContainer
- */
-public class ActionLocation
-{
-	public ActionLocation()						{ init(-1, null, null, null, null); }
-	public ActionLocation(ActionLocation base)	{ init(base.at, base.actions, base.pool, base.className, base.function); }
-
-	void init(int p1, ActionList p2, ConstantPool p3, String p4, DefineFunction p5)
-	{
-		at = p1;
-		actions = p2;
-		pool = p3;
-		className = p4;
-		function = p5;
-	}
-
-	public int				at = -1;
-	public ActionList		actions;
-	public ConstantPool		pool;
-	public String			className;
-	public DefineFunction	function;
-}
-
diff --git a/modules/fdbworkers/src/flash/tools/SwfActionContainer.java b/modules/fdbworkers/src/flash/tools/SwfActionContainer.java
deleted file mode 100644
index 40053be..0000000
--- a/modules/fdbworkers/src/flash/tools/SwfActionContainer.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools;
-
-import flash.swf.Action;
-import flash.swf.Header;
-import flash.swf.TagDecoder;
-import flash.swf.TagHandler;
-import flash.swf.Dictionary;
-import flash.swf.ActionConstants;
-import flash.swf.MovieMetaData;
-import flash.swf.tags.DefineButton;
-import flash.swf.tags.DoAction;
-import flash.swf.tags.DoInitAction;
-import flash.swf.tags.PlaceObject;
-import flash.swf.tags.DefineSprite;
-import flash.swf.types.ActionList;
-import flash.swf.types.ButtonCondAction;
-import flash.swf.types.ClipActionRecord;
-import flash.swf.actions.DefineFunction;
-import flash.swf.actions.ConstantPool;
-import flash.util.Trace;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Iterator;
-
-/**
- * This class implements the TagHandler interface
- * and provides a mechanism for containing the
- * actions associated with a SWF.
- */
-public class SwfActionContainer extends TagHandler
-{
-	boolean		errorProcessing = true;
-	ActionList	m_master;
-
-	// temporaries used while decoding
-	Dictionary  m_dictionary; 
-	Header		m_header;
-
-    public SwfActionContainer(byte[] swf, byte[] swd)	{ this(new ByteArrayInputStream(swf), new ByteArrayInputStream(swd));	}
-    public SwfActionContainer(InputStream swfIn)		{ this(swfIn, null); }
-
-    public SwfActionContainer(InputStream swfIn, InputStream swdIn)
-	{
-		TagDecoder p = new TagDecoder(swfIn, swdIn);
-		try
-		{
-			process(p);
-			errorProcessing = false;
-		}
-		catch(IOException io)
-		{
-			if (Trace.error)
-				io.printStackTrace();
-		}
-	}
-
-	// getters 
-	public ActionList	getMasterList() { return m_master; }
-	public Header		getHeader()		{ return m_header; }
-	public Dictionary	getDictionary() { return m_dictionary; }
-
-	// Did we hit an error in processing the swf? 
-	public boolean hasErrors() { return errorProcessing; }
-
-	/**
-	 * Ask a TagDecoder to do its magic, calling us 
-	 * upon each encounter of a new tag.
-	 */
-	void process(TagDecoder d) throws IOException
-	{
-		m_master = new ActionList(true);
-        d.setKeepOffsets(true);
-		d.parse(this);
-	}
-
-	/**
-	 * Return a path to an ActionList that contains the given offset
-	 * if an exact match is not found then return the largest
-	 * that does not exceed offset.
-	 */
-	public ActionLocation locationLessOrEqualTo(int offset)
-	{
-		ActionLocation l = new ActionLocation();
-		locationLessOrEqualTo(l, m_master, offset);
-		return l;
-	}
-
-    public static ActionLocation locationLessOrEqualTo(ActionLocation location, ActionList list, int offset)
-	{
-		int at = findLessOrEqualTo(list, offset);
-		if (at > -1)
-		{
-			// we hit so mark it and extract a constant pool if any
-			location.at = at;
-			location.actions = list;
-
-			Action a = list.getAction(0);
-			if (a.code == ActionConstants.sactionConstantPool)
-				location.pool = (ConstantPool)a;
-
-			// then see if we need to traverse
-			a = list.getAction(at);
-			if ( (a.code == ActionConstants.sactionDefineFunction) ||
-				 (a.code == ActionConstants.sactionDefineFunction2) )
-			{
-				location.function = (DefineFunction)a;
-				locationLessOrEqualTo(location, ((DefineFunction)a).actionList, offset);
-			}
-			else if (a instanceof DummyAction)
-			{
-				// our dummy container, then we drop in
-				locationLessOrEqualTo(location, ((DummyAction)a).getActionList(), offset);
-			}
-		}
-		return location;
-	}
-
-	// find the index of the largest offset in the list that does not
-	// exceed the offset value provided. 
-	public static int findLessOrEqualTo(ActionList list, int offset)
-	{
-		int i = find(list, offset);
-		if (i < 0)
-		{
-			// means we didn't locate it, so get the next closest one
-			// which is 1 below the insertion point
-			i = (-i - 1) - 1;
-		}
-		return i;
-	}
-
-	// perform a binary search to locate the offset within the sorted
-	// list of offsets within the action list.
-	// if no match then (-i - 1) provides the index of where an insertion
-	// would occur for this offset in the list.
-	public static int find(ActionList list, int offset)
-	{
-        int lo = 0;
-        int hi = list.size()-1;
-
-        while (lo <= hi)
-        {
-            int i = (lo + hi)/2;
-            int m = list.getOffset(i);
-            if (offset > m)
-                lo = i + 1;
-            else if (offset < m)
-                hi = i - 1;
-            else
-                return i; // offset found
-        }
-        return -(lo + 1);  // offset not found, low is the insertion point
-	}
-
-	/**
-	 * Dummy Action container for housing all of  our
-	 * topmost level actionlists in a convenient form
-	 */
-	public class DummyAction extends Action
-	{
-		public DummyAction(ActionList list)
-		{
-			super(ActionConstants.sactionNone);
-			m_actionList = list;
-		}
-
-		// getters/setters
-		public ActionList		getActionList()					{ return m_actionList; }
-		public String			getClassName()					{ return m_className; }
-		public void				setClassName(String name)		{ m_className = name; }
-
-		private ActionList		m_actionList;
-		private String			m_className;
-	}
-
-	/**
-	 * Store away the ActionLists for later retrieval
-	 */
-    DummyAction recordActions(ActionList list)
-    {
-		DummyAction da = null;
-		if (list != null && list.size() > 0)
-		{
-			// use the first offset as our reference point
-			int offset = list.getOffset(0);
-
-			// now create a pseudo action for this action list in our master
-			da = new DummyAction(list);
-			m_master.setActionOffset(offset, da);
-		}
-		return da;
-	}
-
-	/**
-	 * -----------------------------------------------
-	 * The following APIs override TagHandler.
-	 * -----------------------------------------------
-	 */
-	@Override
-	public void doInitAction(DoInitAction tag)
-	{
-		DummyAction a = recordActions(tag.actionList);
-
-		// now fill in the class name if we can
-		if (m_header.version > 6 && tag.sprite != null)
-		{
-			String __Packages = MovieMetaData.idRef(tag.sprite, m_dictionary);
-			String className = (__Packages != null && __Packages.startsWith("__Packages")) ? __Packages.substring(11) : null; //$NON-NLS-1$
-			a.setClassName(className);
-		}
-	}
-
-	@Override
-	public void doAction(DoAction tag)
-	{
-		recordActions(tag.actionList);
-	}
-
-
-	@Override
-	public void defineSprite(DefineSprite tag)
-	{
-		// @todo need to support actions in sprites!!! 
-	}
-
-	@Override
-	public void placeObject2(PlaceObject tag)
-	{
-		if (tag.hasClipAction())
-		{
-            Iterator it = tag.clipActions.clipActionRecords.iterator();
-            while (it.hasNext())
-            {
-    		    ClipActionRecord record = (ClipActionRecord) it.next();
-   			    recordActions(record.actionList);
-            }
-		}
-	}
-
-	@Override
-	public void defineButton(DefineButton tag)
-	{
-		recordActions(tag.condActions[0].actionList);
-	}
-
-	@Override
-	public void defineButton2(DefineButton tag)
-	{
-        if (tag.condActions.length > 0)
-        {
-            for (int i=0; i < tag.condActions.length; i++)
-            {
-                ButtonCondAction cond = tag.condActions[i];
-                recordActions(cond.actionList);
-            }
-		}
-	}
-
-	@Override
-	public void setDecoderDictionary(Dictionary dict)
-	{
-		m_dictionary = dict;
-	}
-
-	@Override
-	public void header(Header h)
-	{
-		m_header = h;
-	}
-
-	/**
-	 * -----------------------------------------------
-	 * END: override TagHandler.
-	 * -----------------------------------------------
-	 */
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/AIRLaunchInfo.java b/modules/fdbworkers/src/flash/tools/debugger/AIRLaunchInfo.java
deleted file mode 100644
index 36d139b..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/AIRLaunchInfo.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.File;
-
-/**
- * @author mmorearty
- */
-public class AIRLaunchInfo
-{
-	/**
-	 * Full path to the AIR Debug Launcher, <code>adl.exe</code> (Windows) or
-	 * <code>adl</code> (Mac/Linux).  This is mandatory.
-	 */
-	public File airDebugLauncher;
-
-	/**
-	 * The directory that has runtime.dll, or <code>null</code> to
-	 * use the default.
-	 */
-	public File airRuntimeDir;
-
-	/**
-	 * The filename of the security policy to use, or <code>null</code> to
-	 * use the default.
-	 */
-	public File airSecurityPolicy;
-
-	/**
-	 * The directory to specify as the application's content root, or
-	 * <code>null</code> to not tell ADL where the content root is, in which
-	 * case ADL will use the directory of the application.xml file as the
-	 * content root.
-	 */
-	public File applicationContentRootDir;
-
-	/**
-	 * Array of command-line arguments for the user's program. These are
-	 * specific to the user's program; they are not processed by AIR itself,
-	 * just passed on to the user's app.
-	 * <p>
-	 * Note, this class has both <code>applicationArgumentsArray</code> and
-	 * {@link #applicationArguments}. <code>applicationArgumentsArray</code>
-	 * accepts an array of arguments, and passes them down as-is to the
-	 * operating system. <code>applicationArguments</code> takes a single
-	 * string, splits it into arguments, and passes the result to the operating
-	 * system. You can use whichever one is more convenient for you; typically,
-	 * one of these would be <code>null</code>. If both are non-
-	 * <code>null</code>, then <code>applicationArgumentsArray</code> takes
-	 * precedence, and <code>applicationArguments</code> is ignored.
-	 */
-	public String[] applicationArgumentsArray;
-
-	/**
-	 * Command-line arguments for the user's program. These are specific to the
-	 * user's program; they are not processed by AIR itself, just passed on to
-	 * the user's app.
-	 * <p>
-	 * Note, see the comment above on {@link #applicationArgumentsArray}.
-	 */
-	public String applicationArguments;
-
-	/**
-	 * The publisher ID to use; passed to adl's "-pubid" option.  If
-	 * null, no pubid is passed to adl.
-	 */
-	public String airPublisherID;
-
-	/**
-	 * The profile to pass to AIR 2.0's "-profile" argument, or null to omit 
-	 * the "-profile" argument.
-	 */
-	public String profile;
-	
-	/**
-	 * The screensize argument to pass to AIR 2.0's "-screensize" option.
-	 * A colon separated string indicating width and height of the screen
-	 * in normal and fullscreen modes. Only relevant in the mobileDevice 
-	 * profile.
-	 */
-	public String screenSize;
-	
-	/**
-	 * The dpi argument to pass to AIR 2.5's "-xscreenDPI" option.
-	 * TODO: this is apparently only going to be used in 2.5
-	 */
-	public int dpi;
-	
-	/**
-	 * The version platform argument to pass to AIR's "-XversionPlatform"
-	 * option. This overrides the three characters in Capabilities.os only
-	 * for the runtime in the AIR SDK.
-	 */
-	public String versionPlatform;
-	
-	/**
-	 * Directory to load native extensions from. Corresponds to the
-	 * -extdir argument of ADL.
-	 */
-	public String extDir;
-
-	/**
-	 * Directory to load native extensions from for devices. Corresponds to the
-	 * -XdeviceExtDir argument of ADL.
-	 */
-	public String deviceExtDir;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/AlreadyActiveApplicationException.java b/modules/fdbworkers/src/flash/tools/debugger/AlreadyActiveApplicationException.java
deleted file mode 100644
index 84432f6..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/AlreadyActiveApplicationException.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-import java.io.IOException;
-
-/**
- * AlreadyActiveApplicationException is thrown when run/debug the application while there is 
- * an already running application. 
- * Exception is detected with ADL exit code 1 (Successful invocation of an already running AIR application. ADL exits immediately.)
- * 
- * @author sakkus
- */
-public class AlreadyActiveApplicationException extends IOException {
-	private static final long serialVersionUID = 0L;
-	
-	private boolean m_isDebugging;
-	
-	public AlreadyActiveApplicationException (String detailedMessage,boolean isDebugging)
-	{
-		super(detailedMessage);
-		m_isDebugging=isDebugging;
-	}
-	
-    @Override
-	public String getMessage()
-	{
-    	if(m_isDebugging) 	//DEBUGGING
-    		return Bootstrap.getLocalizationManager().getLocalizedTextString("maybeAlreadyRunningForDebug"); //$NON-NLS-1$
-    	else    			//RUNNING
-    		return Bootstrap.getLocalizationManager().getLocalizedTextString("maybeAlreadyRunningForRun"); //$NON-NLS-1$
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Bootstrap.java b/modules/fdbworkers/src/flash/tools/debugger/Bootstrap.java
deleted file mode 100644
index ad0fea4..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Bootstrap.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import flash.localization.LocalizationManager;
-import flash.tools.debugger.concrete.PlayerSessionManager;
-
-/**
- * Entry point for access to the general API.  A debugger uses this
- * class to gain access to a SessionManager from which debugging
- * sessions may be controlled or initiated.
- */
-public class Bootstrap
-{
-	static SessionManager m_mgr = null;
-	private static LocalizationManager m_localizationManager;
-
-	static
-	{
-        // set up for localizing messages
-        m_localizationManager = new LocalizationManager();
-        m_localizationManager.addLocalizer( new DebuggerLocalizer("flash.tools.debugger.djapi.") ); //$NON-NLS-1$
-	}
-
-	private Bootstrap () {}
-
-	public static SessionManager sessionManager()
-	{
-		if (m_mgr == null)
-			m_mgr = new PlayerSessionManager();
-		return m_mgr;
-	}
-
-	static LocalizationManager getLocalizationManager()
-	{
-		return m_localizationManager;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Browser.java b/modules/fdbworkers/src/flash/tools/debugger/Browser.java
deleted file mode 100644
index 7d64c02..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Browser.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.File;
-
-/**
- * Describes a web browser.
- * 
- * @author mmorearty
- */
-public interface Browser
-{
-	/**
-	 * Indicates an unknown browser type.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int UNKNOWN = 0;
-
-	/**
-	 * Indicates Internet Explorer.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int INTERNET_EXPLORER = 1;
-
-	/**
-	 * Indicates Netscape Navigator.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int NETSCAPE_NAVIGATOR = 2;
-
-	/**
-	 * Indicates Opera.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int OPERA = 3;
-
-	/**
-	 * Indicates the Mozilla browser, but <i>not</i> Firefox.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int MOZILLA = 4;
-
-	/**
-	 * Indicates Firefox.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int MOZILLA_FIREFOX = 5;
-
-	/**
-	 * Returns what type of Player this is, e.g. <code>INTERNET_EXPLORER</code>, etc.
-	 */
-	public int getType();
-
-	/**
-	 * Returns the path to the web browser executable -- e.g. the path to
-	 * IExplore.exe, Firefox.exe, etc. (Filenames are obviously
-	 * platform-specific.)
-	 */
-	public File getPath();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/CommandLineException.java b/modules/fdbworkers/src/flash/tools/debugger/CommandLineException.java
deleted file mode 100644
index 247a92e..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/CommandLineException.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.IOException;
-
-/**
- * Represents an error that occurred while invoking a command-line
- * program.  Saves the text error message that was reported
- * by the command-line program.
- * 
- * @author mmorearty
- */
-public class CommandLineException extends IOException
-{
-	private static final long serialVersionUID = -5696392627123516956L;
-    
-    private String[] m_commandLine;
-	private String m_commandOutput;
-	private int m_exitValue;
-
-	/**
-	 * @param detailMessage
-	 *            the detail message, e.g. "Program failed" or whatever
-	 * @param commandLine
-	 *            the command and arguments that were executed, e.g.
-	 *            <code>{ "ls", "-l" }</code>
-	 * @param commandOutput
-	 *            the text error message that was reported by the command-line
-	 *            program. It is common for this message to be more than one
-	 *            line.
-	 * @param exitValue
-	 *            the exit value that was returned by the command-line program.
-	 */
-	public CommandLineException(String detailMessage, String[] commandLine, String commandOutput, int exitValue)
-	{
-		super(detailMessage);
-
-		m_commandLine = commandLine;
-		m_commandOutput = commandOutput;
-		m_exitValue = exitValue;
-	}
-
-	public String[] getCommandLine()
-	{
-		return m_commandLine;
-	}
-
-	/**
-	 * @return command line message, often multi-line, never <code>null</code>
-	 */
-	public String getCommandOutput()
-	{
-		return m_commandOutput;
-	}
-
-	/**
-	 * @return the exit value that was returned by the command-line program.
-	 */
-	public int getExitValue()
-	{
-		return m_exitValue;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/DebuggerLocalizer.java b/modules/fdbworkers/src/flash/tools/debugger/DebuggerLocalizer.java
deleted file mode 100644
index b406a16..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/DebuggerLocalizer.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.util.Locale;
-import java.util.Map;
-
-import flash.localization.ILocalizedText;
-import flash.localization.ILocalizer;
-import flash.localization.ResourceBundleLocalizer;
-
-/**
- * An ILocalizer which does a couple of extra things:
- * 
- * <ol>
- * <li> If the requested string is not found, rather than returning <code>null</code>, we
- *      return a default string, to avoid a crash. </li>
- * <li> We replace any "\n" with the current platform's newline sequence. </li>
- * </ol>
- * 
- * @author mmorearty
- */
-public class DebuggerLocalizer implements ILocalizer
-{
-	private ResourceBundleLocalizer m_resourceBundleLocalizer = new ResourceBundleLocalizer();
-	private String m_prefix;
-	public final static String m_newline = System.getProperty("line.separator"); //$NON-NLS-1$
-
-	public DebuggerLocalizer(String prefix)
-	{
-		m_prefix = prefix;
-	}
-
-	public ILocalizedText getLocalizedText(Locale locale, final String id)
-	{
-		// We hard-code our package name in here, so that callers can use
-		// a short string
-		ILocalizedText localizedText = m_resourceBundleLocalizer.getLocalizedText(locale, m_prefix + id);
-
-		// If no ILocalizedText was found, try English
-		if (localizedText == null && !Locale.getDefault().getLanguage().equals("en")) //$NON-NLS-1$
-		{
-			localizedText = m_resourceBundleLocalizer.getLocalizedText(Locale.ENGLISH, m_prefix + id);
-		}
-
-		// If still no ILocalizedText was found, create a default one
-		if (localizedText == null)
-		{
-			localizedText = new ILocalizedText()
-			{
-				public String format(Map parameters)
-				{
-					StringBuilder sb = new StringBuilder();
-					sb.append('!');
-					sb.append(id);
-					sb.append('!');
-					if (parameters != null && !parameters.isEmpty())
-					{
-						sb.append(' ');
-						sb.append(parameters.toString());
-					}
-					return sb.toString();
-				}
-			};
-		}
-
-		// If the current platform's newline sequence is something other
-		// than "\n", then replace all occurrences of "\n" with this platform's
-		// newline sequence.
-		if (m_newline.equals("\n")) //$NON-NLS-1$
-		{
-			return localizedText;
-		}
-		else
-		{
-			final ILocalizedText finalLocalizedText = localizedText;
-			return new ILocalizedText()
-			{
-				public String format(Map parameters)
-				{
-					String result = finalLocalizedText.format(parameters);
-					return result.replaceAll("\n", m_newline); //$NON-NLS-1$
-				}
-			};
-		}
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/DefaultDebuggerCallbacks.java b/modules/fdbworkers/src/flash/tools/debugger/DefaultDebuggerCallbacks.java
deleted file mode 100644
index d94ae46..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/DefaultDebuggerCallbacks.java
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import flash.util.Trace;
-
-/**
- * @author mmorearty
- */
-public class DefaultDebuggerCallbacks implements IDebuggerCallbacks
-{
-	private boolean m_computedExeLocations;
-	private File m_httpExe;
-	private File m_playerExe;
-
-	private static final String UNIX_DEFAULT_BROWSER = "firefox"; //$NON-NLS-1$
-	private static final String UNIX_FLASH_PLAYER = "flashplayer"; //$NON-NLS-1$
-
-	private static final int WINDOWS = 0;
-	private static final int MAC = 1;
-	private static final int UNIX = 2;
-
-	// A pattern for a value that was output by reg.exe.  Warning,
-	// Windows XP and Windows Vista have different output; the following
-	// pattern needs to work for both.
-	private static final Pattern registryValuePattern = Pattern.compile("\\sREG_[^ \t]+\\s+(.*)$"); //$NON-NLS-1$
-
-	/**
-	 * Returns WINDOWS, MAC, or UNIX
-	 */
-	private static int getOS() {
-		String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
-		if (osName.startsWith("windows")) //$NON-NLS-1$
-			return WINDOWS;
-		else if (osName.startsWith("mac os x")) // as per http://developer.apple.com/technotes/tn2002/tn2110.html //$NON-NLS-1$
-			return MAC;
-		else
-			return UNIX;
-	}
-
-	/*
-	 * @see flash.tools.debugger.IDebuggerCallbacks#getHttpExe()
-	 */
-	public synchronized File getHttpExe()
-	{
-		if (!m_computedExeLocations)
-			recomputeExeLocations();
-		return m_httpExe;
-	}
-
-	/*
-	 * @see flash.tools.debugger.IDebuggerCallbacks#getPlayerExe()
-	 */
-	public synchronized File getPlayerExe()
-	{
-		if (!m_computedExeLocations)
-			recomputeExeLocations();
-		return m_playerExe;
-	}
-
-	/*
-	 * @see flash.tools.debugger.IDebuggerCallbacks#recomputeExeLocations()
-	 */
-	public synchronized void recomputeExeLocations()
-	{
-		int os = getOS();
-		if (os == WINDOWS)
-		{
-			m_httpExe = getDefaultWindowsBrowser();
-			m_playerExe = determineExeForType("ShockwaveFlash.ShockwaveFlash"); //$NON-NLS-1$
-		}
-		else if (os == MAC)
-		{
-			m_httpExe = null;
-			m_playerExe = null;
-		}
-		else // probably Unix
-		{
-			// "firefox" is default browser for unix
-			m_httpExe = findUnixProgram(UNIX_DEFAULT_BROWSER);
-
-			// "flashplayer" is standalone flash player on unix
-			m_playerExe = findUnixProgram(UNIX_FLASH_PLAYER);
-		}
-		m_computedExeLocations = true;
-	}
-
-	public String getHttpExeName()
-	{
-		if (getOS() == UNIX)
-			return UNIX_DEFAULT_BROWSER;
-		else
-			return Bootstrap.getLocalizationManager().getLocalizedTextString("webBrowserGenericName"); //$NON-NLS-1$
-	}
-
-	public String getPlayerExeName()
-	{
-		if (getOS() == UNIX)
-			return UNIX_FLASH_PLAYER;
-		else
-			return Bootstrap.getLocalizationManager().getLocalizedTextString("flashPlayerGenericName"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Looks for a Unix program.  Checks the PATH, and if not found there,
-	 * checks the directory specified by the "application.home" Java property.
-	 * ("application.home" was set by the "fdb" shell script.)
-	 * 
-	 * @param program program to find, e.g. "firefox"
-	 * @return path, or <code>null</code> if not found.
-	 */
-	private File findUnixProgram(String program)
-	{
-		String[] cmd = { "/bin/sh", "-c", "which " + program }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		try
-		{
-			Process process = Runtime.getRuntime().exec(cmd);
-			BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
-			String line = reader.readLine();
-			if (line != null)
-			{
-				File f = new File(line);
-				if (f.exists())
-				{
-					return f;
-				}
-			}
-
-			// Check in the Flex SDK's "bin" directory.  The "application.home"
-			// property is set by the "fdb" shell script.
-			String flexHome = System.getProperty("application.home"); //$NON-NLS-1$
-			if (flexHome != null)
-			{
-				File f = new File(flexHome, "bin/" + program); //$NON-NLS-1$
-				if (f.exists())
-				{
-					return f;
-				}
-			}
-		}
-		catch (IOException e)
-		{
-			// ignore
-		}
-		return null;
-	}
-
-	private File getDefaultWindowsBrowser() {
-		try {
-			String browser = null;
-
-			double osVersion;
-			try {
-				osVersion = Double.parseDouble(System.getProperty("os.version")); //$NON-NLS-1$
-			} catch (NumberFormatException e) {
-				osVersion = 0;
-			}
-
-			if (osVersion >= 6) { // Vista or higher
-				String progid = queryWindowsRegistry(
-					"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice", //$NON-NLS-1$
-					"Progid"); //$NON-NLS-1$
-				if (progid != null) {
-					browser = getClassShellOpenCommand(progid);
-				}
-			}
-
-			if (browser == null) {
-				browser = getClassShellOpenCommand("http"); //$NON-NLS-1$
-			}
-
-			if (browser != null) {
-				browser = extractExenameFromCommandString(browser);
-				return new File(browser);
-			} else {
-				return null;
-			}
-		} catch (IOException e) {
-			return null;
-		}
-	}
-
-	private String getClassShellOpenCommand(String clazz) throws IOException {
-		return queryWindowsRegistry("HKEY_CLASSES_ROOT\\" + clazz + "\\shell\\open\\command", null); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Note, this function is Windows-specific.
-	 */
-	private File determineExeForType(String type)
-	{
-		String it = null;
-		try
-		{
-			String[] cmd = new String[] { "cmd", "/d", "/c", "ftype", type }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-			Process p = Runtime.getRuntime().exec(cmd);
-			LineNumberReader lnr = new LineNumberReader(new InputStreamReader(p.getInputStream()));
-			String line = null;
-			type += "="; //$NON-NLS-1$
-			while( it == null && (line = lnr.readLine()) != null)
-			{
-				if (line.length() < type.length() ||
-					line.substring(0, type.length()).compareToIgnoreCase(type) == 0)
-				{
-					it = line;
-					break;
-				}
-			}
-			p.destroy();
-
-			// if we have one extract cmd = " "
-			if (it != null)
-			{
-				int equalSign = it.indexOf('=');
-				if (equalSign != -1)
-					it = it.substring(equalSign+1);
-
-				it = extractExenameFromCommandString(it);
-			}
-		}
-		catch (IOException e)
-		{
-			// means it didn't work
-		}
-
-		if (it != null)
-			return new File(it);
-		else
-			return null;
-	}
-
-	/**
-	 * Given a command string of the form
-	 * 		"path_to_exe" args
-	 * or
-	 * 		path_to_exe args
-	 * 
-	 * return the path_to_exe.  Note that path_to_exe may contain spaces.
-	 */
-	protected String extractExenameFromCommandString(String cmd)
-	{
-		// now strip trailing junk if any
-		if (cmd.startsWith("\"")) { //$NON-NLS-1$
-			// ftype is enclosed in quotes
-			int closingQuote =  cmd.indexOf('"', 1);
-			if (closingQuote == -1)
-				closingQuote = cmd.length();
-			cmd = cmd.substring(1, closingQuote);
-		} else {
-			// Some ftypes don't use enclosing quotes.  This is tricky -- we have to
-			// scan through the string, stopping at each space and checking whether
-			// the filename up to that point refers to a valid filename.  For example,
-			// if the input string is
-			//
-			//     C:\Program Files\Macromedia\Flash 9\Players\SAFlashPlayer.exe %1
-			//
-			// then we need to stop at each space and see if that is an EXE name:
-			//
-			//     C:\Program.exe
-			//     C:\Program Files\Macromedia\Flash.exe
-			//     C:\Program Files\Macromedia\Flash 9\Players\SAFlashPlayer.exe
-
-			int endOfFilename = -1;
-			for (;;) {
-				int nextSpace = cmd.indexOf(' ', endOfFilename+1);
-				if (nextSpace == -1) {
-					endOfFilename = -1;
-					break;
-				}
-				String filename = cmd.substring(0, nextSpace);
-				if (!filename.toLowerCase().endsWith(".exe")) //$NON-NLS-1$
-					filename += ".exe"; //$NON-NLS-1$
-				if (new File(filename).exists()) {
-					endOfFilename = nextSpace;
-					break;
-				}
-				endOfFilename = nextSpace;
-			}
-			if (endOfFilename != -1 && endOfFilename < cmd.length())
-				cmd = cmd.substring(0, endOfFilename);
-		}
-		return cmd;
-	}
-
-	/*
-	 * @see flash.tools.debugger.IDebuggerCallbacks#launchDebugTarget(java.lang.String[])
-	 */
-	public Process launchDebugTarget(String[] cmd) throws IOException
-	{
-		return Runtime.getRuntime().exec(cmd);
-	}
-	
-	@Override
-	public Process launchDebugTarget(String[] cmd, ILauncher launcher) throws IOException {
-		return launcher.launch(cmd);
-	}
-	
-	/*
-	 * @see flash.tools.debugger.IDebuggerCallbacks#terminateDebugTarget(java.lang.Process)
-	 */
-	public void terminateDebugTarget(Process process) throws IOException
-	{
-		terminateDebugTarget(process, null);
-	}
-	
-	@Override
-	public void terminateDebugTarget(Process process, ILauncher launcher) throws IOException {
-		if(null == launcher)
-		{
-			process.destroy();
-		}
-		else
-		{
-			launcher.terminate(process);
-		}
-		
-	}
-	
-	public String queryWindowsRegistry(String key, String value) throws IOException
-	{
-		return queryWindowsRegistry(key, value, 0);
-	}
-
-	/**
-	 * This implementation of queryWindowsRegistry() does not make any native
-	 * calls.  I had to do it this way because it is too hard, at this point,
-	 * to add native code to the Flex code tree.
-	 */
-	public String queryWindowsRegistry(String key, String value, int registryBitMode) throws IOException
-	{
-		Process p = null;
-		String result = null;
-
-		List<String> arguments = new ArrayList<String>(6);
-		arguments.add("reg.exe"); //$NON-NLS-1$
-		arguments.add("query"); //$NON-NLS-1$
-		arguments.add(key);
-		if (value == null || value.length() == 0)
-		{
-			arguments.add("/ve"); //$NON-NLS-1$
-		}
-		else
-		{
-			arguments.add("/v"); //$NON-NLS-1$
-			arguments.add(value);
-		}
-
-		// This line must not be in try/catch -- if it throws an exception,
-		// we want that to propagate out to our caller.
-		p = Runtime.getRuntime().exec(arguments.toArray(new String[arguments.size()]));
-
-		try
-		{
-			BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
-
-			String line;
-			while ((line = reader.readLine()) != null)
-			{
-				if (line.equalsIgnoreCase(key))
-				{
-					line = reader.readLine();
-					if (line != null)
-					{
-						Matcher matcher = registryValuePattern.matcher(line);
-						if (matcher.find()) {
-							result = matcher.group(1);
-						}
-					}
-					break;
-				}
-			}
-		}
-		catch (IOException e)
-		{
-			if (Trace.error)
-				e.printStackTrace();
-		}
-		finally
-		{
-			if (p != null)
-			{
-				p.destroy();
-				p = null;
-			}
-		}
-
-		return result;
-	}
-
-	/**
-	 * Default implementation does not know how to get the version
-	 * of an application.
-	 */
-	public int[] getAppVersion(File application) throws IOException {
-		return null;
-	}
-	
-	/**
-	 * Default application does not have any extra arguments for the
-	 * browser.
-	 */
-	public String[] getBrowserParameters(String uri)
-	{
-		return null;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Frame.java b/modules/fdbworkers/src/flash/tools/debugger/Frame.java
deleted file mode 100644
index 9c757ec..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Frame.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * The Frame object represents a single frame of the actionscript call stack.
- * Each Frame contains a Location object, which identifies the line of source 
- * for the frame, and a set of variables that are available within the frame.
- * The set of variables includes a 'this' pointer, arguments passed into 
- * the function and locals available within the scope of the function.
- * A given frame is only valid when execution has suspended.  
- * @since Version 2
- */
-public interface Frame
-{
-	/**
-	 * Location object related to this frame.
-	 */
-	public Location getLocation();
-
-	/**
-	 * 'this' variable for the frame.  Will return null
-	 * if no 'this' pointer available for the frame.
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
-	 * @throws NotConnectedException
-	 */
-    public Variable getThis(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
-
-	/**
-	 * Arguments that were passed into the function.  An empty
-	 * array is used to denote that no arguments were passed into 
-	 * this function scope.
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException 
-	 * @throws NotConnectedException 
-	 */
-    public Variable[] getArguments(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
-
-	/**
-	 * Locals used within this function scope.  An empty
-	 * array is used to denote no locals are available 
-	 * within this function scope.
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException 
-	 * @throws NotConnectedException 
-	 */
-    public Variable[] getLocals(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
-
-	/**
-	 * Returns a string which contains the raw signature of
-	 * the call.  This information can be used for display
-	 * purposes in the event the Location object contains
-	 * a null SourceFile, which happens when a call is
-	 * made into or through a non-debug executable.
-	 * The format of the string is one of the following:
-	 * <ul>
-	 *  <li> <code>declaringClass/[[namespace::]function]</code> (for regular functions) </li>
-	 *  <li> <code>declaringClass$cinit</code> (class constructor for statics) </li>
-	 *  <li> <code>declaringClass$iinit</code> (class instance ctor)</li>
-	 *  <li> <code>global$init</code> </li>
-	 * </ul>
-	 *<p>
-	 * where <code>declaringClass</code> is the name of the
-	 * class in which the function is declared (even if it
-	 * is an anonymous inner function); <code>namespace</code>
-	 * is the namespace of the function (the meaning of this
-	 * varies depending on whether the function is private,
-	 * protected etc.; see <code>Variable.getNamespace()</code>
-	 * for more information); and <code>function</code> is
-	 * the name of the function, or <code>""</code> if the
-	 * function is anonymous.
-	 *</p><p> 
-	 * If the signature is unknown then the value
-	 * "" will be returned.  Note: this may occur even when
-	 * Location contains a non-null SourceFile.
-	 * </p><p>
-	 * Examples:
-	 * <ul>
-	 * <li> <code>MyClass/myFunction</code> for a public function </li>
-	 * <li> <code>MyClass/MyClass::myFunction</code> for a private function </li>
-	 * <li> <code>MyClass/</code> for an anonymous inner function declared
-	 *      somewhere inside <code>MyClass</code> </li>
-	 * <li> <code>""</code> if unknown </li>
-	 * </ul>
-	 * </p>
-	 */
-	public String getCallSignature();
-
-	/**
-	 * Returns a list of objects which make up the scope chain of
-	 * this frame.
-	 * <p>
-	 * Some of the entries will be classes; some will be instances
-	 * of classes; some will be functions; etc.
-	 * <p>
-	 * <b>Bug:</b> Currently, this does <em>not</em> include any
-	 * scope chain entries which were created via "with var".
-	 */
-	public Variable[] getScopeChain(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
-	
-	/**
-	 * Returns the worker ID associated to this frame. This will return
-	 * Isolate.DEFAULT_ID, that is, the main worker.
-	 */
-	public int getIsolateId();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/IDebuggerCallbacks.java b/modules/fdbworkers/src/flash/tools/debugger/IDebuggerCallbacks.java
deleted file mode 100644
index 8c97bca..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/IDebuggerCallbacks.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Miscellaneous callbacks from the DJAPI to the debugger which is using it.
- * 
- * @author mmorearty
- */
-public interface IDebuggerCallbacks
-{
-	/**
-	 * Tells the debugger to recompute the values which will be returned by
-	 * getHttpExe() and getPlayerExe().
-	 * 
-	 * This does NOT need to be called before the first call to either of
-	 * those functions.  The intent of this function is to allow the debugger
-	 * to cache any expensive calculations, but still allow for the possibility
-	 * of recalculating the values from time to time (e.g. when a new launch
-	 * is going to happen).
-	 */
-	public void recomputeExeLocations();
-
-	/**
-	 * Returns the executable of the browser to launch for http: URLs, or
-	 * <code>null</code> if not known.
-	 */
-	public File getHttpExe();
-	
-	/**
-	 * Returns the parameters to pass to the browser or null if non-existent.
-	 * If this is present, URL is assumed to already exist in this array.
-	 */
-	public String[] getBrowserParameters(String uri);
-	
-	/**
-	 * Returns the executable for the standalone Flash player, or <code>null</code>
-	 * if not known.
-	 */
-	public File getPlayerExe();
-
-	/**
-	 * Returns a name such as "firefox" or "Web browser", the name of the
-	 * browser, useful for error messages. Never returns <code>null</code>.
-	 */
-	public String getHttpExeName();
-
-	/**
-	 * Returns a name such as "SAFlashPlayer.exe" or "gflashplayer" or "Flash
-	 * player", the name of the standalone player, useful for error messages.
-	 * Never returns <code>null</code>.
-	 */
-	public String getPlayerExeName();
-
-	/**
-	 * Launches a debug target.  The arguments are the same as those of
-	 * Runtime.exec().
-	 */
-	public Process launchDebugTarget(String[] cmd) throws IOException;
-
-	/**
-	 * Terminates a debug target process.
-	 */
-	public void terminateDebugTarget(Process process) throws IOException;
-	
-	/**
-	 * Launches a debug target using the launcher instance<code>ILauncher.launch(cmd)</code>.
-	 * 
-	 */
-	public Process launchDebugTarget(String[] cmd, ILauncher launcher) throws IOException;
-
-	/**
-	 * Terminates a debug target process by invoking <code>ILauncher.terminate(process)</code>
-	 */
-	public void terminateDebugTarget(Process process, ILauncher launcher) throws IOException;
-
-
-	/**
-	 * Query the Windows registry.
-	 * 
-	 * @param key
-	 *            The registry key, in a format suitable for the REG.EXE
-	 *            program. You must use full key names such as
-	 *            HKEY_LOCAL_MACHINE rather the shorter abbreviations such as
-	 *            HKLM.
-	 * @param value
-	 *            The value within that key, or null for the unnamed ("empty")
-	 *            value
-	 * @return the value stored at the location, or null if key or value was not
-	 *         found
-	 * @throws IOException
-	 *             indicates the registry query failed -- warning, this can
-	 *             really happen! Some implementations of this function don't
-	 *             work on Windows 2000. So, this function should not be counted
-	 *             on too heavily -- you should have a backup plan.
-	 */
-	public String queryWindowsRegistry(String key, String value) throws IOException;
-	
-	/**
-	 * Same as queryWindowsRegistry, but allows specific access to the 32-bit
-	 * or 64-bit part of the registry.
-	 */
-	public String queryWindowsRegistry(String key, String value, int registryBitMode) throws IOException;
-
-	/**
-	 * Returns the version number of an application. For example, Firefox 3.5.4
-	 * would return new int[] { 3, 5 }.
-	 * <p>
-	 * As of this writing, the only thing this is used for is to determine, on
-	 * Windows, whether the user is running IE 8; if he is, we need to pass the
-	 * "-noframemerging" command-line argument. It is generally okay to just
-	 * return <code>null</code> from this function; a robust implementation is
-	 * not required.
-	 * 
-	 * @param application
-	 *            the application whose version number is desired. On Windows,
-	 *            this will typically be a path to a .exe file. On Mac, it may
-	 *            point to a .app directory such as "/Applications/Safari.app",
-	 *            or it may point to the underlying binary, such as
-	 *            "/Applications/Safari.app/Contents/MacOS/Safari".
-	 * @return an array of two integers if the version can be determined, or
-	 *         null if it cannot be determined. The first integer is the major
-	 *         version number, and the second integer is the minor version
-	 *         number. More detailed information cannot be provided, because
-	 *         this function needs to be cross- platform, and the format of
-	 *         version information tends to vary widely from one platform to
-	 *         another.
-	 * @throws IOException
-	 *             e.g. for file not found, etc.
-	 */
-	public int[] getAppVersion(File application) throws IOException;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/ILaunchNotification.java b/modules/fdbworkers/src/flash/tools/debugger/ILaunchNotification.java
deleted file mode 100644
index e01d724..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/ILaunchNotification.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.IOException;
-
-/**
- * Used to notify caller in case of ADL Exit Code 1: Successful invocation of an already running 
- * AIR application. ADL exits immediately.
- * 
- * @author sakkus
- */
-public interface ILaunchNotification
-{
-	/**
-	 * Notifies the listener that the launch is done, and, if it failed,
-	 * an exception with information about why it failed.
-	 * 
-	 * @param e
-	 *            an exception if the launch failed, or null if the launch
-	 *            succeeded.
-	 */
-	public void notify(IOException e);
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/ILauncher.java b/modules/fdbworkers/src/flash/tools/debugger/ILauncher.java
deleted file mode 100644
index 68c87f7..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/ILauncher.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package flash.tools.debugger;
-
-import java.io.IOException;
-
-/**
- * A ILauncher which handles the launching of the URI or the command.
- * 
- * ILauncher is to provide more flexibility to handle the Player launch in different platforms.
- * 
- * @author ugs
- *
- */
-public interface ILauncher {
-
-	/**
-	 * Launches the debug target. 
-	 * 
-	 * @param cmd - Launch URL and other arguments
-	 * @return A handle to the process.
-	 * 
-	 * @throws IOException
-	 */
-	public Process launch(String[] cmd) throws IOException;
-
-	/**
-	 * Terminate the process started by launch method.
-	 * @param process - process started by launch.
-	 * @throws IOException
-	 */
-	public void terminate(Process process) throws IOException;
-	
-	
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/IProgress.java b/modules/fdbworkers/src/flash/tools/debugger/IProgress.java
deleted file mode 100644
index f63ec68..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/IProgress.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * A simple interface to report progress on some operation.
- * 
- * @author mmorearty
- */
-public interface IProgress
-{
-	/**
-	 * Reports how much work has been done.
-	 * 
-	 * @param current
-	 *            how much progress has been made toward the total
-	 * @param total
-	 *            the total amount of work
-	 */
-	public void setProgress(int current, int total);
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/InProgressException.java b/modules/fdbworkers/src/flash/tools/debugger/InProgressException.java
deleted file mode 100644
index 3bf6f2a..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/InProgressException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * InProgressException is thrown when a request cannot
- * be fulfilled because some other activity is currently
- * taking place that will alter the result of the request.
- */
-public class InProgressException extends PlayerDebugException
-{
-    private static final long serialVersionUID = -8307030350432666820L;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Isolate.java b/modules/fdbworkers/src/flash/tools/debugger/Isolate.java
deleted file mode 100644
index 982c2dd..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Isolate.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package flash.tools.debugger;
-
-/**
- * The Isolate object uniquely identifies a "Worker" in ActionScript.
- * Workers are conceptually similar to Threads, but their implementation
- * closely follows more that of a web worker than an actual OS Thread.
- * 
- * By default there is a default isolate object with id DEFAULT_ID.
- * @author anirudhs
- *
- */
-public interface Isolate {
-	
-	public static final int DEFAULT_ID = 1;
-	
-	/**
-	 * Get the unique integer ID associated with the
-	 * worker. This is Isolate.DEFAULT_ID for the
-	 * primordial. 
-	 * @return unique integer ID
-	 */
-	public int getId();
-	
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/IsolateController.java b/modules/fdbworkers/src/flash/tools/debugger/IsolateController.java
deleted file mode 100644
index ed09477..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/IsolateController.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package flash.tools.debugger;
-
-import flash.tools.debugger.expression.PlayerFaultException;
-
-/**
- * Worker specific debug session commands. These are a subset of Session that
- * can be individually routed to a specific worker (including the main worker if
- * the player does not support concurrency). This is implemented by
- * PlayerSession and used by the getWorkerSession() api.
- * 
- * @see flash.tools.debugger.IsolateSession,
- *      flash.tools.debugger.Session#getWorkerSession(int)
- * @author anirudhs
- * 
- */
-public interface IsolateController {
-	
-	/**
-	 * @see flash.tools.debugger.Session#resume()
-	 */
-	public void resumeWorker(int isolateId) throws NotSuspendedException, NotConnectedException, NoResponseException;
-
-	/**
-	 * @see flash.tools.debugger.Session#suspend()
-	 */
-	public void suspendWorker(int isolateId) throws SuspendedException, NotConnectedException, NoResponseException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#isSuspended()
-	 */
-	public boolean isWorkerSuspended(int isolateId) throws NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#isSuspended()
-	 */
-	public int suspendReasonWorker(int isolateId) throws NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getFrames()
-	 */
-	public Frame[] getFramesWorker(int isolateId) throws NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepInto()
-	 */
-	public void stepIntoWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepOut()
-	 */
-	public void stepOutWorker(int isolateId)  throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepOver()
-	 */
-	public void stepOverWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepContinue()
-	 */
-	public void stepContinueWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getSwfs()
-	 */
-	public SwfInfo[] getSwfsWorker(int isolateId) throws NoResponseException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#setBreakpoint(int, int)
-	 */
-	public Location setBreakpointWorker(int fileId, int lineNum, int isolateId) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getWatchList()
-	 */
-	public Watch[] getWatchListWorker(int isolateId) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getVariableList()
-	 */
-	public Variable[] getVariableListWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getValue(long)
-	 */
-	public Value getValueWorker(long valueId, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
-
-	/**
-	 * @see flash.tools.debugger.Session#getGlobal(String)
-	 */
-	public Value getGlobalWorker(String name, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#evalIs(Value, Value)
-	 */
-	public boolean evalIsWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalIs(Value, String)
-	 */
-	public boolean evalIsWorker(Value value, String type, int isolateId) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalInstanceof(Value, Value)
-	 */
-	public boolean evalInstanceofWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalInstanceof(Value, String)
-	 */
-	public boolean evalInstanceofWorker(Value value, String type, int isolateId) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalIn(Value, Value)
-	 */
-	public boolean evalInWorker(Value property, Value object, int isolateId) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalAs(Value, Value)
-	 */
-	public Value evalAsWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#callFunction(Value, String, Value[])
-	 */
-	public Value callFunctionWorker(Value thisObject, String functionName, Value[] args, int isolateId) throws PlayerDebugException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#callConstructor(String, Value[])
-	 */
-	public Value callConstructorWorker(String classname, Value[] args, int isolateId) throws PlayerDebugException;
-
-	/**
-	 * @see flash.tools.debugger.Session#setExceptionBreakpoint(String)
-	 */
-	public boolean setExceptionBreakpointWorker(String exceptionClass, int isolateId) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#clearExceptionBreakpoint(String)
-	 */
-	public boolean clearExceptionBreakpointWorker(String exceptionClass, int isolateId) throws NoResponseException, NotConnectedException;
-
-	/**
-	 * @see flash.tools.debugger.Session#breakOnCaughtExceptions(boolean)
-	 */
-	public void breakOnCaughtExceptions(boolean b, int isolateId) throws NotSupportedException, NoResponseException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#supportsWatchpoints()
-	 */
-	public boolean supportsWatchpoints(int isolateId);
-	
-	/**
-	 * @see flash.tools.debugger.Session#playerCanBreakOnAllExceptions()
-	 */
-	public boolean playerCanBreakOnAllExceptions(int isolateId);
-	
-	/**
-	 * @see flash.tools.debugger.Session#supportsWideLineNumbers()
-	 */
-	public boolean supportsWideLineNumbers(int isolateId);
-	
-	/**
-	 * @see flash.tools.debugger.Session#playerCanCallFunctions(String)
-	 */
-	public boolean playerCanCallFunctions(int isolateId);
-	
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/IsolateSession.java b/modules/fdbworkers/src/flash/tools/debugger/IsolateSession.java
deleted file mode 100644
index 6b57d62..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/IsolateSession.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package flash.tools.debugger;
-
-import flash.tools.debugger.expression.PlayerFaultException;
-
-/**
- * Used to issue commands to a particular worker (isolate).
- * @see Session
- * @author anirudhs
- */
-public interface IsolateSession {
-	
-	/**
-	 * @see flash.tools.debugger.Session#resume()
-	 */
-	public void resume() throws NotSuspendedException, NotConnectedException, NoResponseException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#suspend()
-	 */
-	public void suspend() throws SuspendedException, NotConnectedException, NoResponseException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#isSuspended()
-	 */
-	public boolean isSuspended() throws NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#isSuspended()
-	 */
-	public int suspendReason() throws NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getFrames()
-	 */
-	public Frame[] getFrames() throws NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepInto()
-	 */
-	public void stepInto() throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepOut()
-	 */
-	public void stepOut()  throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepOver()
-	 */
-	public void stepOver() throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#stepContinue()
-	 */
-	public void stepContinue() throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getSwfs()
-	 */
-	public SwfInfo[] getSwfs() throws NoResponseException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#setBreakpoint(int, int)
-	 */
-	public Location setBreakpoint(int fileId, int lineNum) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getWatchList()
-	 */
-	public Watch[] getWatchList() throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getVariableList()
-	 */
-	public Variable[] getVariableList() throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#getValue(long)
-	 */
-	public Value getValue(long valueId) throws NotSuspendedException, NoResponseException, NotConnectedException;
-
-	/**
-	 * @see flash.tools.debugger.Session#getGlobal(String)
-	 */
-	public Value getGlobal(String name) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#evalIs(Value, Value)
-	 */
-	public boolean evalIs(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalIs(Value, String)
-	 */
-	public boolean evalIs(Value value, String type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalInstanceof(Value, Value)
-	 */
-	public boolean evalInstanceof(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalInstanceof(Value, String)
-	 */
-	public boolean evalInstanceof(Value value, String type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalIn(Value, Value)
-	 */
-	public boolean evalIn(Value property, Value object) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * @see flash.tools.debugger.Session#evalAs(Value, Value)
-	 */
-	public Value evalAs(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#resume()
-	 */
-	public Value callFunction(Value thisObject, String functionName, Value[] args) throws PlayerDebugException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#callFunction(Value, String, Value[])
-	 */
-	public Value callConstructor(String classname, Value[] args) throws PlayerDebugException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#setExceptionBreakpoint(String)
-	 */
-	public boolean setExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#clearExceptionBreakpoint(String)
-	 */
-	public boolean clearExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * @see flash.tools.debugger.Session#breakOnCaughtExceptions(boolean)
-	 */
-	public void breakOnCaughtExceptions(boolean b) throws NotSupportedException, NoResponseException;
-
-	/**
-	 * @see flash.tools.debugger.Session#supportsWatchpoints()
-	 */
-	public boolean supportsWatchpoints();
-	
-	/**
-	 * @see flash.tools.debugger.Session#playerCanBreakOnAllExceptions()
-	 */
-	public boolean playerCanBreakOnAllExceptions();
-	
-	/**
-	 * @see flash.tools.debugger.Session#supportsWideLineNumbers()
-	 */
-	public boolean supportsWideLineNumbers();
-	
-	/**
-	 * @see flash.tools.debugger.Session#playerCanCallFunctions()
-	 */
-	public boolean playerCanCallFunctions();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Location.java b/modules/fdbworkers/src/flash/tools/debugger/Location.java
deleted file mode 100644
index bf6103c..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Location.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * The Location object identifies a specific line number with a SourceFile.
- * It is used for breakpoint manipulation and obtaining stack frame context.
- */
-public interface Location
-{
-	/**
-	 * Source file for this location 
-	 */
-	public SourceFile getFile();
-
-	/**
-	 * Line number within the source for this location 
-	 */
-    public int getLine();
-    
-    /**
-     * Worker to which this location belongs.
-     */
-    public int getIsolateId();
-
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/NoResponseException.java b/modules/fdbworkers/src/flash/tools/debugger/NoResponseException.java
deleted file mode 100644
index b6756e6..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/NoResponseException.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * NoResponseException is thrown when the Player does
- * not respond to the command that was issued.
- * 
- * The field m_waitedFor contains the number of
- * milliseconds waited for the response.
- */
-public class NoResponseException extends PlayerDebugException
-{
-	private static final long serialVersionUID = -3704426811630352537L;
-    
-    /**
-	 * Number of milliseconds that elapsed causing the timeout
-	 * -1 means unknown.
-	 */
-	public int m_waitedFor;
-
-	public NoResponseException(int t) 
-	{
-		m_waitedFor = t;
-	}
-
-	@Override
-	public String getMessage()
-	{
-		Map<String, String> args = new HashMap<String, String>();
-		String formatString;
-		if (m_waitedFor != -1 && m_waitedFor != 0)
-		{
-			formatString = "timeout"; //$NON-NLS-1$
-			args.put("time", Integer.toString(m_waitedFor)); //$NON-NLS-1$
-		}
-		else
-		{
-			formatString = "timeoutAfterUnknownDelay"; //$NON-NLS-1$
-		}
-		return Bootstrap.getLocalizationManager().getLocalizedTextString(formatString, args);
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/NotConnectedException.java b/modules/fdbworkers/src/flash/tools/debugger/NotConnectedException.java
deleted file mode 100644
index 662a10a..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/NotConnectedException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * NotConnectedException is thrown when the Session
- * is no longer connnected to the Player
- */
-public class NotConnectedException extends PlayerDebugException
-{
-	private static final long serialVersionUID = -9087367591357152206L;
-
-    @Override
-	public String getMessage()
-	{
-		return Bootstrap.getLocalizationManager().getLocalizedTextString("notConnected"); //$NON-NLS-1$
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/NotSupportedException.java b/modules/fdbworkers/src/flash/tools/debugger/NotSupportedException.java
deleted file mode 100644
index 8e6dbd3..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/NotSupportedException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * Indicates that a debugger feature is not supported by the Flash
- * player that is being targeted.  For example, newer players
- * support the ability to have the debugger call arbitrary
- * functions, but older ones do not.
- * 
- * @author Mike Morearty
- */
-public class NotSupportedException extends PlayerDebugException {
-	private static final long serialVersionUID = -8873935118857320824L;
-
-	/**
-	 * @param s an error message, e.g. "Target player does not support
-	 * function calls," or "Target player does not support watchpoints".
-	 */
-	public NotSupportedException(String s)
-	{
-		super(s);
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/NotSuspendedException.java b/modules/fdbworkers/src/flash/tools/debugger/NotSuspendedException.java
deleted file mode 100644
index c5dad0e..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/NotSuspendedException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * NotSuspendedException is thrown when the Player 
- * is in a state for which the action cannot be performed.
- */
-public class NotSuspendedException extends PlayerDebugException
-{
-	private static final long serialVersionUID = 1373922470760042675L;
-
-    @Override
-	public String getMessage()
-	{
-		return Bootstrap.getLocalizationManager().getLocalizedTextString("notSuspended"); //$NON-NLS-1$
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Player.java b/modules/fdbworkers/src/flash/tools/debugger/Player.java
deleted file mode 100644
index 8b83250..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Player.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.File;
-
-/**
- * Describes a Flash player.
- * 
- * @author mmorearty
- */
-public interface Player
-{
-	/**
-	 * Indicates a standalone Flash player, e.g. FlashPlayer.exe.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int STANDALONE = 1;
-
-	/**
-	 * Indicates a Netscape-plugin Flash player, e.g. NPSWF32.dll. Used on
-	 * Windows by all Netscape-based browsers (e.g. Firefox etc.), and on Mac
-	 * and Linux by all browsers.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int NETSCAPE_PLUGIN = 2;
-
-	/**
-	 * Indicates an ActiveX-control Flash player, e.g. Flash.ocx.  Used on Windows
-	 * by Internet Explorer.
-	 * 
-	 * @see #getType()
-	 */
-	public static final int ACTIVEX = 3;
-
-	/**
-	 * Indicates the Flash player inside AIR.
-	 */
-	public static final int AIR = 4;
-
-	/**
-	 * Returns what type of Player this is: <code>STANDALONE</code>, <code>NETSCAPE_PLUGIN</code>,
-	 * <code>ACTIVEX</code>, or <code>AIR</code>.
-	 */
-	public int getType();
-
-	/**
-	 * Returns the path to the Flash player file -- e.g. the path to
-	 * FlashPlayer.exe, NPSWF32.dll, Flash.ocx, or adl.exe -- or
-	 * <code>null</code> if not known. (Filenames are obviously
-	 * platform-specific.)
-	 * 
-	 * <p>
-	 * Note that the file is not guaranteed to exist. You can use File.exists()
-	 * to test that.
-	 */
-	public File getPath();
-
-	/**
-	 * Returns the web browser with which this player is associated,
-	 * or <code>null</code> if this is the standalone player or AIR,
-	 * or if we're not sure which browser will be run.
-	 */
-	public Browser getBrowser();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/PlayerDebugException.java b/modules/fdbworkers/src/flash/tools/debugger/PlayerDebugException.java
deleted file mode 100644
index a8e9f7c..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/PlayerDebugException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * PlayerDebugException is the base class for all
- * exceptions thrown by the playerdebug API
- */
-public class PlayerDebugException extends Exception
-{
-	private static final long serialVersionUID = 757986761482127248L;
-
-    public PlayerDebugException()				{ super(); }
-	public PlayerDebugException(String s)		{ super(s); }
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Session.java b/modules/fdbworkers/src/flash/tools/debugger/Session.java
deleted file mode 100644
index 35ebed4..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Session.java
+++ /dev/null
@@ -1,604 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import flash.tools.debugger.events.DebugEvent;
-import flash.tools.debugger.expression.PlayerFaultException;
-
-/**
- * The Session object manages all aspects of debugging session with
- * the Flash Player.  A program can be suspended, resumed, single
- * stepping can be performed and state information can be obtained
- * through this object.
- */
-public interface Session
-{
-	/**
-	 * Returns the URL that identifies this Session.
-	 * Note: this may not be unique across Sessions if
-	 * the same launching mechanism and SWF are used.
-	 * @return URI received from the connected Player.
-	 * It identifies the debugging session
-	 */
-	public String getURI();
-
-	/**
-	 * Returns the Process object, if any, that triggered this Session.
-	 * @return the Process object that was used to create this Session.
-	 * If SessionManager.launch() was not used, then null is returned.
-	 */
-	public Process getLaunchProcess();
-
-	/**
-	 * Adjust the preferences for this session; see SessionManager
-	 * for a list of valid preference strings.
-	 *
-	 * If an invalid preference is passed, it will be silently ignored.
-	 * @param pref preference name, one of the strings listed above
-	 * @param value value to set for preference
-	 */
-	public void setPreference(String pref, int value);
-
-	/**
-	 * Return the value of a particular preference item
-	 *
-	 * @param pref preference name, one of the strings listed in <code>SessionManager</code>
-	 * @throws NullPointerException if pref does not exist
-	 * @see SessionManager
-	 */
-	public int getPreference(String pref) throws NullPointerException;
-
-	/**
-	 * Is the Player currently connected for this session.  This function
-	 * must be thread-safe.
-	 *
-	 * @return true if connection is alive
-	 */
-	public boolean isConnected();
-
-	/**
-	 * Allow the session to start communicating with the player.  This
-	 * call must be made PRIOR to any other Session method call.
-	 * @return true if bind was successful.
-	 * @throws VersionException connected to Player which does not support all API completely
-	 */
-	public boolean bind() throws VersionException;
-
-	/**
-	 * Permanently stops the debugging session and breaks the
-	 * connection.  If this Session is used for any subsequent
-	 * calls exceptions will be thrown.
-	 * <p>
-	 * Note: this method allows the caller to disconnect
-	 * from the debugging session (and Player) without
-	 * terminating the Player.  A subsequent call to terminate()
-	 * will destroy the Player process.
-	 * <p>
-	 * Under normal circumstances this method need not be
-	 * called since a call to terminate() performs both
-	 * actions of disconnecting from the Player and destroying
-	 * the Player process.
-	 */
-	public void unbind();
-
-	/**
-	 * Permanently stops the debugging session and breaks the connection. If
-	 * this session ID is used for any subsequent calls exceptions will be
-	 * thrown.
-	 * <p>
-	 * Note that due to platform and browser differences, it should not be
-	 * assumed that this function will necessarily kill the process being
-	 * debugged. For example:
-	 *
-	 * <ul>
-	 * <li> On all platforms, Firefox cannot be terminated. This is because when
-	 * we launch a new instance of Firefox, Firefox actually checks to see if
-	 * there is another already-running instance. If there is, then the new
-	 * instance just passes control to that old instance. So, the debugger
-	 * doesn't know the process ID of the browser. It would be bad to attempt to
-	 * figure out the PID and then kill that process, because the user might
-	 * have other browser windows open that they don't want to lose. </li>
-	 * <li> On Mac, similar problems apply to the Safari and Camino browsers:
-	 * all browsers are launched with /usr/bin/open, so we never know the
-	 * process ID, and we can't kill it. However, for Safari and Camino, what we
-	 * do attempt to do is communicate with the browser via AppleScript, and
-	 * tell it to close the window of the program that is being debugged. </li>
-	 * </ul>
-	 *
-	 * <p>
-	 * If SessionManager.launch() was used to initiate the Session then calling
-	 * this function also causes getLaunchProcess().destroy() to be called.
-	 * <p>
-	 * Note: this method first calls unbind() if needed.
-	 */
-	public void terminate();
-
-	/**
-	 * Continue a halted session.  Execution of the ActionScript
-	 * will commence until a reason for halting exists. That
-	 * is, a breakpoint is reached or the <code>suspend()</code> method is called.
-	 * <p>
-	 * This method will NOT block.  It will return immediately
-	 * after the Player resumes execution.  Use the isSuspended
-	 * method to determine when the Player has halted.
-	 *
-	 * @throws NoResponseException if times out
-	 * @throws NotSuspendedException if Player is already running
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public void resume() throws NotSuspendedException, NotConnectedException, NoResponseException;
-
-	/**
-	 * Halt a running session.  Execution of the ActionScript
-	 * will stop at the next possible breakpoint.
-	 * <p>
-	 * This method WILL BLOCK until the Player halts for some
-	 * reason or an error occurs. During this period, one or
-	 * more callbacks may be initiated.
-	 *
-	 * @throws NoResponseException if times out
-	 * @throws SuspendedException if Player is already suspended
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public void suspend() throws SuspendedException, NotConnectedException, NoResponseException;
-	
-	/**
-	 * Is the Player currently halted awaiting requests, such as continue,
-	 * stepOut, stepIn, stepOver. This function is guaranteed to be thread-safe.
-	 *
-	 * @return true if player halted
-	 * @throws NotConnectedException
-	 *             if Player is disconnected from Session
-	 */
-	public boolean isSuspended() throws NotConnectedException;
-
-	/**
-	 * Returns a SuspendReason integer which indicates
-	 * why the Player has suspended execution.
-	 * @return see SuspendReason
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public int suspendReason() throws NotConnectedException;
-	
-	/**
-	 * Returns an array of frames that identify the location and contain
-	 * arguments, locals and 'this' information for each frame on the
-	 * function call stack.   The 0th frame contains the current location
-	 * and context for the actionscript program.  Likewise
-	 * getFrames[getFrames().length] is the topmost (or outermost) frame
-	 * of the call stack.
-	 * @return array of call frames with 0th element representing the current frame.
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public Frame[] getFrames() throws NotConnectedException;
-	
-	/**
-	 * Step to the next executable source line within the
-	 * program, will enter into functions.
-	 * <p>
-	 * This method will NOT block.  It will return immediately
-	 * after the Player resumes execution.  Use the isSuspended
-	 * method to determine when the Player has halted.
-	 *
-	 * @throws NoResponseException if times out
-	 * @throws NotSuspendedException if Player is running
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public void stepInto() throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * Step out of the current method/function onto the
-	 * next executable soruce line.
-	 * <p>
-	 * This method will NOT block.  It will return immediately
-	 * after the Player resumes execution.  Use the isSuspended
-	 * method to determine when the Player has halted.
-	 *
-	 * @throws NoResponseException if times out
-	 * @throws NotSuspendedException if Player is running
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public void stepOut()  throws NotSuspendedException, NoResponseException, NotConnectedException;
-
-	/**
-	 * Step to the next executable source line within
-	 * the program, will NOT enter into functions.
-	 * <p>
-	 * This method will NOT block.  It will return immediately
-	 * after the Player resumes execution.  Use the isSuspended
-	 * method to determine when the Player has halted.
-	 *
-	 * @throws NoResponseException if times out
-	 * @throws NotSuspendedException if Player is running
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public void stepOver() throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * Continue the process of stepping.
-	 * This call should only be issued if a previous
-	 * stepXXX() call was made and the Player suspended
-	 * execution due to a breakpoint being hit.
-	 * That is getSuspendReason() == SuspendReason.Break
-	 * This operation can be used for assisting with
-	 * the processing of conditional breakpoints.
-	 * @throws NoResponseException if times out
-	 * @throws NotSuspendedException if Player is running
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public void stepContinue() throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * Obtain information about the various SWF(s) that have been
-	 * loaded into the Player, for this session.
-	 *
-	 * Note: As SWFs are loaded by the Player a SwfLoadedEvent is
-	 * fired.  At this point, a call to getSwfInfo() will provide
-	 * updated information.
-	 *
-	 * @return array of records describing the SWFs
-	 * @throws NoResponseException if times out
-	 */
-	public SwfInfo[] getSwfs() throws NoResponseException;
-	
-	/**
-	 * Get a list of the current breakpoints.  No specific ordering
-	 * of the breakpoints is implied by the array.
-	 * @return breakpoints currently set.
-	 * @throws NoResponseException if times out
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public Location[] getBreakpointList() throws NoResponseException, NotConnectedException;
-
-	/**
-	 * Set a breakpoint on a line within the given file.
-	 * <p>
-	 * <em>Warning:</em> <code>setBreakpoint()</code> and
-	 * <code>clearBreakpoint()</code> do not keep track of how many times they
-	 * have been called for a given Location. For example, if you make two calls
-	 * to <code>setBreakpoint()</code> for file X.as line 10, and then one
-	 * call to <code>clearBreakpoint()</code> for that same file and line,
-	 * then the breakpoint is gone. So, the caller is responsible for keeping
-	 * track of whether the user has set two breakpoints at the same location.
-	 *
-	 * @return null if breakpoint not set, otherwise
-	 * Location of breakpoint.
-	 * @throws NoResponseException if times out
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public Location setBreakpoint(int fileId, int lineNum) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * Remove a breakpoint at given location. The Location obtain can be a
-	 * clone/copy of a Location object returned from a previous call to
-	 * getBreakpointList().
-	 * <p>
-	 * <em>Warning:</em> <code>setBreakpoint()</code> and
-	 * <code>clearBreakpoint()</code> do not keep track of how many times they
-	 * have been called for a given Location. For example, if you make two calls
-	 * to <code>setBreakpoint()</code> for file X.as line 10, and then one
-	 * call to <code>clearBreakpoint()</code> for that same file and line,
-	 * then the breakpoint is gone. So, the caller is responsible for keeping
-	 * track of whether the user has set two breakpoints at the same location.
-	 *
-	 * @return null if breakpoint was not removed.
-	 * @throws NoResponseException
-	 *             if times out
-	 * @throws NotConnectedException
-	 *             if Player is disconnected from Session
-	 */
-	public Location clearBreakpoint(Location location) throws NoResponseException, NotConnectedException;
-
-	/**
-	 * Get a list of the current watchpoint.  No specific ordering
-	 * of the watchpoints is implied by the array.  Also, the
-	 * list may contain watchpoints that are no longer relevant due
-	 * to the variable going out of scope.
-	 * @return watchpoints currently set.
-	 * @throws NoResponseException if times out
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 * @since Version 2
-	 */
-	public Watch[] getWatchList() throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * Set a watchpoint on a given variable.  A watchpoint is used
-	 * to suspend Player execution upon access of a particular variable.
-	 * If the variable upon which the watchpoint is set goes out of scope,
-	 * the watchpoint will NOT be automatically removed.
-	 * <p>
-	 * Specification of the variable item to be watched requires two
-	 * pieces of information (similar to setScalarMember())
-	 * The Variable and the name of the particular member to be watched
-	 * within the variable.
-	 * For example if the watchpoint is to be applied to 'a.b.c'.  First the
-	 * Value for object 'a.b' must be obtained and then the call
-	 * setWatch(v, "c", ...) can be issued.
-	 * The watchpoint can be triggered (i.e. the Player suspended) when either a read
-	 * or write (or either) occurs on the variable.  If the Player is suspended
-	 * due to a watchpoint being fired, then the suspendReason() call will
-	 * return SuspendReason.WATCH.
-	 * <p>
-	 * Setting a watchpoint multiple times on the same variable will result
-	 * in the old watchpoint being removed from the list and a new watchpoint
-	 * being added to the end of the list.
-	 * <p>
-	 * Likewise, if a previously existing watchpoint is modified by
-	 * specifiying a different kind variable then the old watchpoint
-	 * will be removed from the list and a new watchpoint will be added
-	 * to the end of the list.
-	 *
-	 * @param v the variable, upon whose member, the watch is to be placed.
-	 * @param varName is the mmeber name upon which the watch
-	 * should be placed.  This variable name may NOT contain the dot ('.')
-	 * character and MUST be a member of v.
-	 * @param kind access type that will trigger the watchpoint to fire --
-	 * read, write, or read/write.  See <code>WatchKind</code>.
-	 * @return null if watchpoint was not created.
-	 * @throws NoResponseException if times out
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 * @throws NotSupportedException if the Player does not support watchpoints,
-	 * or does not support watchpoints on this particular member (e.g. because
-	 * it is a getter or a dynamic variable).
-	 * @since Version 2
-	 * @see WatchKind
-	 */
-	public Watch setWatch(Value v, String memberName, int kind) throws NoResponseException, NotConnectedException, NotSupportedException;
-	
-	/**
-	 * Enables or disables a watchpoint.
-	 *
-	 * @param watch
-	 *            the watch to enable or disable
-	 * @param enabled
-	 *            whether to enable it or disable it
-	 * @throws NotSupportedException
-	 * @throws NotConnectedException
-	 * @throws NoResponseException
-	 */
-	public Watch setWatch(Watch watch) throws NoResponseException, NotConnectedException, NotSupportedException;
-
-	/**
-	 * Remove a previously created watchpoint.  The watchpoint
-	 * that was removed will be returned upon a sucessful call.
-	 * @return null if watchpoint was not removed.
-	 * @throws NoResponseException if times out
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 * @since Version 2
-	 */
-	public Watch clearWatch(Watch watch) throws NoResponseException, NotConnectedException;
-	
-	/**
-	 * Obtains a list of variables that are local to the current
-	 * halted state.
-	 * @deprecated As of version 2.
-	 * @see Frame#getLocals
-	 */
-	public Variable[] getVariableList() throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException;
-	
-	/**
-	 * From a given value identifier return a Value.  This call
-	 * allows tools to access a specific value whenever the Player has
-	 * suspended.  A Value's id is maintained for the life of the
-	 * Value and is guaranteed not to change.  Values that
-	 * go out of scope are no longer accessible and will result
-	 * in a null being returned.   Also note, that scalar
-	 * variables do not contain an id that can be referenced in
-	 * this manner.  Therefore the caller must also maintain the
-	 * 'context' in which the variable was obtained.  For example
-	 * if a Number b exists on a, then the reference 'a.b' must be
-	 * managed, as the id of 'a' will be needed to obtain the
-	 * value of 'b'.
-	 * @param valueId identifier from Value class or
-	 * from a call to Value.getId()
-	 * @return null, if value cannot be found or
-	 * value with the specific id.
-	 * @throws NoResponseException if times out
-	 * @throws NotSuspendedException if Player is running
-	 * @throws NotConnectedException if Player is disconnected from Session
-	 */
-	public Value getValue(long valueId) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * Looks up a global name, like "MyClass", "String", etc.
-	 *
-	 * @return its value, or <code>null</code> if the global does not exist.
-	 */
-	public Value getGlobal(String name) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * Events provide a mechanism whereby status information is provided from
-	 * the Player in a timely fashion.
-	 * <p>
-	 * The caller has the option of either polling the event queue via
-	 * <code>nextEvent()</code> or calling <code>waitForEvent()</code> which
-	 * blocks the calling thread until one or more events exist in the queue.
-	 *
-	 * @throws NotConnectedException
-	 *             if Session is disconnected from Player
-	 * @throws InterruptedException
-	 */
-	public void waitForEvent() throws NotConnectedException, InterruptedException;
-
-	/**
-	 * Returns the number of events currently in the queue.  This function
-	 * is guaranteed to be thread-safe.
-	 */
-	public int getEventCount();
-
-	/**
-	 * Removes and returns the next event from queue
-	 */
-	public DebugEvent nextEvent();
-
-	/**
-	 * Gets the SourceLocator for this session.  If none has been
-	 * specified, returns null.
-	 */
-    public SourceLocator getSourceLocator();
-
-	/**
-	 * Sets the SourceLocator for this session.  This can be used in order
-	 * to override the default rules used for finding source files.
-	 */
-	public void setSourceLocator(SourceLocator sourceLocator);
-
-	/**
-	 * Invokes a constructor in the player. Returns the newly created object.
-	 * Not supported in Player 9 or AIR 1.0. If you call this function and the
-	 * player to which you are connected doesn't support this feature, this will
-	 * throw a PlayerDebugException.
-	 */
-	public Value callConstructor(String classname, Value[] args) throws PlayerDebugException;
-
-	/**
-	 * Invokes a function. For example, calling
-	 * <code>callFunction(myobj, "toString", new Value[0])</code> will call
-	 * <code>myobj.toString()</code>. Not supported in Player 9 or AIR 1.0.
-	 * If you call this function and the player to which you are connected
-	 * doesn't support this feature, this will throw a PlayerDebugException.
-	 */
-	public Value callFunction(Value thisObject, String functionName, Value[] args) throws PlayerDebugException;
-	
-	/**
-	 * The player always halts on exceptions that are not going to be caught;
-	 * this call allows the debugger to control its behavior when an exception
-	 * that *will* be caught is thrown.
-	 *
-	 * @throws NotSupportedException
-	 *             thrown by older players that don't support this feature.
-	 * @throws NoResponseException
-	 */
-	public void breakOnCaughtExceptions(boolean b) throws NotSupportedException, NoResponseException;
-
-	/**
-	 * Evaluate the ActionScript expression "value is type"
-	 *
-	 * @throws PlayerDebugException
-	 * @throws PlayerFaultException
-	 */
-	public boolean evalIs(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * Evaluate the ActionScript expression "value is type"
-	 *
-	 * @throws PlayerDebugException
-	 * @throws PlayerFaultException
-	 */
-	public boolean evalIs(Value value, String type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * Evaluate the ActionScript expression "value instanceof type"
-	 *
-	 * @throws PlayerFaultException
-	 * @throws PlayerDebugException
-	 */
-	public boolean evalInstanceof(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * Evaluate the ActionScript expression "value instanceof type"
-	 *
-	 * @throws PlayerFaultException
-	 * @throws PlayerDebugException
-	 */
-	public boolean evalInstanceof(Value value, String type) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * Evaluate the ActionScript expression "property in object"
-	 *
-	 * @throws PlayerFaultException
-	 * @throws PlayerDebugException
-	 */
-	public boolean evalIn(Value property, Value object) throws PlayerDebugException, PlayerFaultException;
-
-	/**
-	 * Evaluate the ActionScript expression "value as type"
-	 *
-	 * @throws PlayerDebugException
-	 * @throws PlayerFaultException
-	 */
-	public Value evalAs(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
-	
-	/**
-	 * Returns whether the target player supports watchpoints.
-	 * @see #setWatch(Value, String, int)
-	 */
-	public boolean supportsWatchpoints();
-	
-	/**
-	 * Returns the root SocketException that caused the rxMessage()
-	 * thread to shut down. This works in conjunction with 
-	 * PREF_SOCKET_TIMEOUT and helps in detecting broken connections.
-	 */
-	public Exception getDisconnectCause();
-
-	/**
-	 * Set an exception breakpoint. Returns true if succeeded.
-	 * @param exceptionClass
-	 * @return
-	 * @throws NoResponseException
-	 * @throws NotConnectedException
-	 */
-	public boolean setExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
-
-	/**
-	 * Clears an exception breakpoint. Returns true if succeeded.
-	 * @param exceptionClass
-	 * @return
-	 * @throws NoResponseException
-	 * @throws NotConnectedException
-	 */
-	public boolean clearExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
-	
-	// Concurrency begin
-	
-	/**
-	 * Returns whether the target player supports concurrency.
-	 * @see #setActiveIsolate(Value)
-	 */
-	public boolean supportsConcurrency();
-	
-	/**
-	 * Get an array of all workers that the debugger knows of.
-	 */
-	public Isolate[] getWorkers();
-	
-	/**
-	 * Ask the player again for a list of all workers. Use this
-	 * method with caution as it will also reset all state about
-	 * workers that the debugger is aware of.
-	 */
-	public Isolate[] refreshWorkers() throws  NotSupportedException, NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * Return the worker specific session object that can be used
-	 * to communicate with that worker.
-	 */
-	public IsolateSession getWorkerSession(int isolateId);
-	
-	/**
-	 * 
-	 * Sets the ILauncher instance which is associated with this session. 
-	 * ILauncher instance is used to terminate the process at the end of the debugging session.
-	 *
-	 * @param launcher 
-	 * 				ILauncher instance used to launch & terminate the process.
-	 */
-	public void setLauncher(ILauncher launcher);
-
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/SessionManager.java b/modules/fdbworkers/src/flash/tools/debugger/SessionManager.java
deleted file mode 100644
index e67e68b..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/SessionManager.java
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.IOException;
-
-/**
- * A SessionManager controls connection establishment and preferences 
- * for all debugging sessions with the Flash Player.
- * 
- * To begin a new debugging session:
- * 
- * <ol>
- * <li> Get a <code>SessionManager</code> from <code>Bootstrap.sessionManager()</code> </li>
- * <li> Call <code>SessionManager.startListening()</code> </li>
- * <li> If you want to have the API launch the Flash Player for you, call
- *      <code>SessionManager.launch()</code>.  If you want to launch the Flash Player
- *      and then have the API connect to it, then launch the Flash Player and then
- *      call <code>SessionManager.accept()</code>. <em>Note:</em> <code>launch()</code> 
- *      and <code>accept()</code> are both blocking calls, so you probably don't want
- *      to call them from your main UI thread. </li>
- * <li> Finally, call <code>SessionManager.stopListening()</code>.
- * </ol>
- */
-public interface SessionManager
-{
-	/**
-	 * The preferences are set using the setPreference() method, and
-	 * take effect immediately thereafter.
-	 */
-
-	/**
-	 * The value used for <code>$accepttimeout</code> controls how long (in
-	 * milliseconds) <code>accept()</code> waits before timing out. The
-	 * default value for this preference is 120000 (2 minutes).
-	 */
-	public static final String PREF_ACCEPT_TIMEOUT				= "$accepttimeout"; //$NON-NLS-1$
-
-	/**
-	 * Valid values for <code>$urimodification</code> are 0 (off) and 1 (on).
-	 * The default value is 1 (on), which allows this API to modify the URI
-	 * passed to <code>launch()</code> as necessary for creating a debuggable
-	 * version of an MXML file.
-	 */
-	public static final String PREF_URI_MODIFICATION			= "$urimodification"; //$NON-NLS-1$
-
-	/**
-	 *-----------------------------------------------------------------
-	 * The following are Session specific preferences.  These can be
-	 * modified in this class, resulting in all future sessions using
-	 * the values or they can be modified at the session level via
-	 * Session.setPreference().
-	 *-----------------------------------------------------------------
-	 */
-
-	/**
-	 * <code>$responsetimeout</code> is used to determine how long (in
-	 * milliseconds) the session will wait, for a player response before giving
-	 * up on the request and throwing an Exception.
-	 */
-	public static final String PREF_RESPONSE_TIMEOUT			= "$responsetimeout"; //$NON-NLS-1$
-	
-	/**
-	 * <code>$sockettimeout</code> is used to determine how long (in
-	 * milliseconds) the session will wait on a Socket recv call.
-	 * On timeout, we do not immediately abort the session, instead we
-	 * write a squelch message to player. If the write succeeds, we assume
-	 * everything is normal.This helps identify broken connections that 
-	 * are relevant when performing WiFi debugging. 
-	 * This is -1 by default to indicate no timeout 
-	 * (for backward compatibility).
-	 */
-	public static final String PREF_SOCKET_TIMEOUT			= "$sockettimeout"; //$NON-NLS-1$
-
-	/**
-	 * <code>$contextresponsetimeout</code> is used to determine how long (in
-	 * milliseconds) the session will wait for a player response from a request
-	 * to get context, before giving up on the request and throwing an
-	 * Exception.
-	 */
-	public static final String PREF_CONTEXT_RESPONSE_TIMEOUT	= "$contextresponsetimeout"; //$NON-NLS-1$
-
-	/**
-	 * <code>$getvarresponsetimeout</code> is used to determine how long (in
-	 * milliseconds) the session will wait, for a player response to a get
-	 * variable request before giving up on the request and throwing an
-	 * Exception.
-	 */
-	public static final String PREF_GETVAR_RESPONSE_TIMEOUT		= "$getvarresponsetimeout"; //$NON-NLS-1$
-
-	/**
-	 * <code>$setvarresponsetimeout</code> is the amount of time (in
-	 * milliseconds) that a setter in the user's code will be given to execute,
-	 * before the player interrupts it with a ScriptTimeoutError. Default value
-	 * is 5000 ms.
-	 */
-	public static final String PREF_SETVAR_RESPONSE_TIMEOUT		= "$setvarresponsetimeout"; //$NON-NLS-1$
-
-	/**
-	 * <code>$swfswdloadtimeout<code> is used to determine how long (in milliseconds)
-	 * the session will wait, for a player response to a swf/swd load 
-	 * request before giving up on the request and throwing an Exception.
-	 */
-	public static final String PREF_SWFSWD_LOAD_TIMEOUT			= "$swfswdloadtimeout"; //$NON-NLS-1$
-
-	/**
-	 * <code>$suspendwait</code> is the amount of time (in milliseconds) that
-	 * a Session will wait for the Player to suspend, after a call to
-	 * <code>suspend()</code>.
-	 */
-	public static final String PREF_SUSPEND_WAIT				= "$suspendwait"; //$NON-NLS-1$
-
-	/**
-	 * <code>$invokegetters</code> is used to determine whether a getter
-	 * property is invoked or not when requested via <code>getVariable()</code>
-	 * The default value is for this to be enabled.
-	 */
-	public static final String PREF_INVOKE_GETTERS				= "$invokegetters"; //$NON-NLS-1$
-
-	public static final String PLAYER_SUPPORTS_GET				= "$playersupportsget"; //$NON-NLS-1$
-
-	/**
-	 * <code>$hiervars</code> is used to determine whether the members of
-	 * a variable are shown in a hierchical way.
-	 */
-	public static final String PREF_HIERARCHICAL_VARIABLES		= "$hiervars"; //$NON-NLS-1$
-
-	/**
-	 * The value used for <code>$connecttimeout</code> controls how long (in
-	 * milliseconds) <code>connect()</code> waits before timing out. The
-	 * default value for this preference is 120000 (2 minutes).
-	 */
-	public static final String PREF_CONNECT_TIMEOUT				= "$connecttimeout"; //$NON-NLS-1$
-
-	 /**
-     * The value used for <code>$connectwaitinterval</code> controls how long (in
-     * milliseconds) we wait between subsequent <code>connect()</code> calls. The
-     * default value for this preference is 250.
-     */
-    public static final String PREF_CONNECT_WAIT_INTERVAL = "$connectwaitinterval"; //$NON-NLS-1$
-
-    /**
-     * The value used for <code>$connectretryattempts</code> controls how many times
-     * the debugger retries connecting to the application. This is time bound by 
-     * <code>$connecttimeout</code>. The default value for this preference is -1 and
-     * indicates that the debugger should retry till the timeout period has elapsed.
-     * Setting this to zero will disable the retry mechanism.
-     */
-    public static final String PREF_CONNECT_RETRY_ATTEMPTS = "$connectretryattempts"; //$NON-NLS-1$
-    
-	/**
-	 * Set preference for this manager and for subsequent Sessions 
-	 * that are initiated after this call.
-	 * 
-	 * If an invalid preference is passed, it will be silently ignored.
-	 * @param pref preference name, one of the strings listed above
-	 * @param value value to set for preference
-	 */
-	public void setPreference(String pref, int value);
-
-	/**
-	 * Set preference for this manager and for subsequent Sessions 
-	 * that are initiated after this call.
-	 * 
-	 * If an invalid preference is passed, it will be silently ignored.
-	 * @param pref preference name, one of the strings listed above
-	 * @param value value to set for preference
-	 */
-	public void setPreference(String pref, String value);
-
-	/**
-	 * Return the value of a particular preference item
-	 * 
-	 * @param pref preference name, one of the strings listed above
-	 * @throws NullPointerException if pref does not exist
-	 */
-	public int getPreference(String pref) throws NullPointerException;
-
-	/**
-	 * Listens for Player attempts to open a debug session. This method must be
-	 * called prior to <code>accept()</code> being invoked.
-	 * 
-	 * @throws IOException
-	 *             if opening the server side socket fails
-	 */
-	public void startListening() throws IOException;
-
-	/**
-	 * Stops listening for new Player attempts to open a debug session. The
-	 * method DOES NOT terminate currently connected sessions, but will cause
-	 * threads blocked in <code>accept</code> to throw SocketExceptions.
-	 */
-	public void stopListening() throws IOException;
-
-	/**
-	 * Is this object currently listening for Debug Player connections 
-	 * @return TRUE currently listening 
-	 */
-	public boolean isListening();
-
-	/**
-	 * Launches a Player using the given string as a URI, as defined by RFC2396.
-	 * It is expected that the operating system will be able to launch the
-	 * appropriate player application given this URI.
-	 * <p>
-	 * For example "http://localhost:8100/flex/my.mxml" or for a local file on
-	 * Windows, "file://c:/my.swf"
-	 * <p>
-	 * This call will block until a session with the newly launched player is
-	 * created.
-	 * <p>
-	 * It is the caller's responsibility to ensure that no other thread is
-	 * blocking in <code>accept()</code>, since that thread will gain control
-	 * of this session.
-	 * <p>
-	 * Before calling <code>launch()</code>, you should first call
-	 * <code>supportsLaunch()</code>. If <code>supportsLaunch()</code>
-	 * returns false, then you will have to tell the user to manually launch the
-	 * Flash player.
-	 * <p>
-	 * Also, before calling <code>launch()</code>, you must call
-	 * <code>startListening()</code>.
-	 * 
-	 * @param uri
-	 *            which will launch a Flash player under running OS. For
-	 *            Flash/Flex apps, this can point to either a SWF or an HTML
-	 *            file. For AIR apps, this must point to the application.xml
-	 *            file for the application.
-	 * @param airLaunchInfo
-	 *            If trying to launch an AIR application, this argument must be
-	 *            specified; it gives more information about how to do the
-	 *            launch. If trying to launch a regular web-based Flash or Flex
-	 *            application, such as one that will be in a browser or in the
-	 *            standalone Flash Player, this argument should be
-	 *            <code>null</code>.
-	 * @param forDebugging
-	 *            if <code>true</code>, then the launch is for the purposes
-	 *            of debugging. If <code>false</code>, then the launch is
-	 *            simply because the user wants to run the movie but not debug
-	 *            it; in that case, the return value of this function will be
-	 *            <code>null</code>.
-	 * @param waitReporter
-	 *            a progress monitor to allow accept() to notify its parent how
-	 *            long it has been waiting for the Flash player to connect to
-	 *            it. May be <code>null</code> if the caller doesn't need to
-	 *            know how long it's been waiting.
-	 * @param launchNotification
-	 *            a notifier to notify the caller about ADL Exit Code.
-	 *            Main usage is for ADL Exit Code 1 (Successful invocation of an 
-	 *            already running AIR application. ADL exits immediately).
-	 *            May be <code>null</code> if no need to listen ADL. 
-	 *            Will only be called if forDebugging is false.  (If forDebugging
-	 *            is true, error conditions are handled by throwing an exception.)
-	 *			  The callback will be called on a different thread.
-	 * @return a Session to use for debugging, or null if forDebugging==false.
-	 *         The return value is not used to indicate an error -- exceptions
-	 *         are used for that. If this function returns without throwing an
-	 *         exception, then the return value will always be non-null if
-	 *         forDebugging==true, or null if forDebugging==false.
-	 * @throws BindException
-	 *             if <code>isListening()</code> == false
-	 * @throws FileNotFoundException
-	 *             if file cannot be located
-	 * @throws CommandLineException
-	 *             if the program that was launched exited unexpectedly. This
-	 *             will be returned, for example, when launching an AIR
-	 *             application, if adl exits with an error code.
-	 *             CommandLineException includes functions to return any error
-	 *             text that may have been sent to stdout/stderr, and the exit
-	 *             code of the program.
-	 * @throws IOException
-	 *             see Runtime.exec()
-	 */
-	public Session launch(String uri, AIRLaunchInfo airLaunchInfo,
-			boolean forDebugging, IProgress waitReporter, ILaunchNotification launchNotification) throws IOException;
-
-	/**
-	 * Returns information about the Flash player which will be used to run the
-	 * given URI.
-	 * 
-	 * @param uri
-	 *            The URI which will be passed to <code>launch()</code> -- for
-	 *            example, <code>http://flexserver/mymovie.mxml</code> or
-	 *            <code>c:\mymovie.swf</code>. If launching an AIR app, this
-	 *            should point to the app's *-app.xml file.
-	 * @param airLaunchInfo
-	 *            If launching an AIR app, this should, if possible, contain
-	 *            info about the version of AIR being launched, but it can be
-	 *            null if you don't have that information. If launching a
-	 *            web-based app, this should be null.
-	 * @return a {@link Player} which can be used to determine information about
-	 *         the player -- for example, whether it is a debugger-enabled
-	 *         player. Returns <code>null</code> if the player cannot be
-	 *         determined. <em>Important:</em> There are valid situations in
-	 *         which this will return <code>null</code>
-	 */
-	public Player playerForUri(String uri, AIRLaunchInfo airLaunchInfo);
-
-	/**
-	 * Returns whether this platform supports the <code>launch()</code>
-	 * command; that is, whether the debugger can programmatically launch the
-	 * Flash player. If this function returns false, then the debugger will have
-	 * to tell the user to manually launch the Flash player.
-	 * 
-	 * @return true if this platform supports the <code>launch()</code>
-	 *         command.
-	 */
-	public boolean supportsLaunch();
-
-	/**
-	 * Blocks until the next available player debug session commences, or until
-	 * <code>getPreference(PREF_ACCEPT_TIMEOUT)</code> milliseconds pass.
-	 * <p>
-	 * Before calling <code>launch()</code>, you must call
-	 * <code>startListening()</code>.
-	 * <p>
-	 * Once a Session is obtained, Session.bind() must be called prior to any
-	 * other Session method.
-	 * 
-	 * @param waitReporter
-	 *            a progress monitor to allow accept() to notify its parent how
-	 *            long it has been waiting for the Flash player to connect to it.
-	 *            May be <code>null</code> if the caller doesn't need to know how
-	 *            long it's been waiting.
-	 * @throws BindException
-	 *             if isListening() == false
-	 * @throws IOException -
-	 *             see java.net.ServerSocket.accept()
-	 */
-	public Session accept(IProgress waitReporter) throws IOException;
-
-	/**
-	 * Tells the session manager to use the specified IDebuggerCallbacks for
-	 * performing certain operatios, such as finding the Flash Player and
-	 * launching the debug target. If you do not call this, the session manager
-	 * will use a <code>DefaultDebuggerCallbacks</code> object.
-	 */
-	public void setDebuggerCallbacks(IDebuggerCallbacks debugger);
-
-	/**
-	 * Initiate a debug session by connecting to the specified port. Blocks 
-	 * until a connection is made, or until 
-	 * <code>getPreference(PREF_CONNECT_TIMEOUT)</code> milliseconds pass.
-	 * <p>
-	 * This work-flow is a reverse of <code>accept()</code> and suited for 
-	 * cases where the player is unable to initiate the connection. The 
-	 * player must be listening on the specified port for an incoming debug 
-	 * connection. In addition, this function calls bind() on the session
-	 * to determine if the handshake was successful so that retry works
-	 * correctly even across port-forwards.
-	 * <p> 
-	 * Use <code>stopConnecting()</code> to cancel connect,
-	 * <code>isConnecting()</code> to check if we are currently trying to 
-	 * connect.
-	 * 
-	 * @param port - The port to connect to. See DProtocol.DEBUG_CONNECT_PORT.
-	 * @param waitReporter
-	 * @return A Session object on which bind() has already been called.
-	 * @throws IOException - This may have a wrapped VersionException due to bind()
-	 */
-	public Session connect(int port, IProgress waitReporter) throws IOException;
-	
-	/**
-	 * Stops connecting to the Player for a debug session. The
-	 * method DOES NOT terminate currently connected sessions, but will cause
-	 * threads blocked in <code>connect</code> to throw SocketExceptions.
-	 */
-	public void stopConnecting() throws IOException;
-
-	/**
-	 * Is this object currently connecting to the Debug Player 
-	 * @return TRUE currently connecting 
-	 */
-	public boolean isConnecting();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/SessionManager2.java b/modules/fdbworkers/src/flash/tools/debugger/SessionManager2.java
deleted file mode 100644
index c1801d9..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/SessionManager2.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package flash.tools.debugger;

-

-import java.io.IOException;

-

-public interface SessionManager2 extends SessionManager {

-	

-	/**

-	 * This is, functionally, a clone of the SessionManager.launch() method. There are however some differences.

-	 * 	-This is to be called only for run launches. only for debug launches, the launch() method creates a Session and

-	 * binds it to the launch and since the launch() method returns the Session, which will be null in a Run Launch case,

-	 * we have no way of accessing the Process that was created for the launch.

-	 * 	-To enable auto termination of run launches, we need to know the system Process for us to terminate it when

-	 * necessary.

-	 *  -This method creates the process and binds a process listener to it and then returns the process.

-	 *

-	 * 

-	 * @param uri

-	 *            which will launch a Flash player under running OS. For

-	 *            Flash/Flex apps, this can point to either a SWF or an HTML

-	 *            file. For AIR apps, this must point to the application.xml

-	 *            file for the application.

-	 * @param airLaunchInfo

-	 *            If trying to launch an AIR application, this argument must be

-	 *            specified; it gives more information about how to do the

-	 *            launch. If trying to launch a regular web-based Flash or Flex

-	 *            application, such as one that will be in a browser or in the

-	 *            standalone Flash Player, this argument should be

-	 *            <code>null</code>.

-	 * @param waitReporter

-	 *            a progress monitor to allow accept() to notify its parent how

-	 *            long it has been waiting for the Flash player to connect to

-	 *            it. May be <code>null</code> if the caller doesn't need to

-	 *            know how long it's been waiting.

-	 * @param launchNotification

-	 *            a notifier to notify the caller about ADL Exit Code.

-	 *            Main usage is for ADL Exit Code 1 (Successful invocation of an 

-	 *            already running AIR application. ADL exits immediately).

-	 *            May be <code>null</code> if no need to listen ADL. 

-	 *			  The callback will be called on a different thread.

-	 * @return a Process to use for the run launch.

-	 *         The return value is not used to indicate an error -- exceptions

-	 *         are used for that. If this function returns without throwing an

-	 *         exception, then the return value will always be non-null.

-	 * @throws IOException

-	 *             see Runtime.exec()

-	 */

-	public Process launchForRun(String uri, AIRLaunchInfo airLaunchInfo,

-			 IProgress waitReporter, ILaunchNotification launchNotification) throws IOException;

-	/**

-	 * This is, functionally, a clone of the SessionManager.launch() method. There are however some differences.

-	 * 	-This is to be called only for run launches. only for debug launches, the launch() method creates a Session and

-	 * binds it to the launch and since the launch() method returns the Session, which will be null in a Run Launch case,

-	 * we have no way of accessing the Process that was created for the launch.

-	 * 	-To enable auto termination of run launches, we need to know the system Process for us to terminate it when

-	 * necessary.

-	 *  -This method creates the process and binds a process listener to it and then returns the process.

-	 *

-	 *  - This method used the ILauncher instance passed to launch the application.

-	 *  

-	 * @param uri

-	 *  		  which will launch a Flash player under running OS. For

-	 *            Flash/Flex apps, this can point to either a SWF or an HTML

-	 *            file. For AIR apps, this must point to the application.xml

-	 *            file for the application.

-	  * @param airLaunchInfo

-	 *            If trying to launch an AIR application, this argument must be

-	 *            specified; it gives more information about how to do the

-	 *            launch. If trying to launch a regular web-based Flash or Flex

-	 *            application, such as one that will be in a browser or in the

-	 *            standalone Flash Player, this argument should be

-	 *            <code>null</code>.

-	 * @param waitReporter

-	 *            a progress monitor to allow accept() to notify its parent how

-	 *            long it has been waiting for the Flash player to connect to

-	 *            it. May be <code>null</code> if the caller doesn't need to

-	 *            know how long it's been waiting.

-	 * @param launchNotification

-	 *            a notifier to notify the caller about ADL Exit Code.

-	 *            Main usage is for ADL Exit Code 1 (Successful invocation of an 

-	 *            already running AIR application. ADL exits immediately).

-	 *            May be <code>null</code> if no need to listen ADL. 

-	 *			  The callback will be called on a different thread.

-	 * @param launcher

-	 * 			  a launcher instance which will be used to launch.

-	 * @return a Process to use for the run launch.

-	 *         The return value is not used to indicate an error -- exceptions

-	 *         are used for that. If this function returns without throwing an

-	 *         exception, then the return value will always be non-null.

-	 * @throws IOException

-	 */

-	public Process launchForRun(String uri, AIRLaunchInfo airLaunchInfo,

-			 IProgress waitReporter, ILaunchNotification launchNotification, ILauncher launcher) throws IOException;

-	

-	

-	/**

-	 * Launches the given string as a URI using the ILauncher Instance.

-	 * 

-	 * This API is to provide more flexibility to handle the Player launch in different platforms.

-	 * 

-	 * This call will block until a session with the newly launched player is

-	 * created.

-	 * <p>

-	 * It is the caller's responsibility to ensure that no other thread is

-	 * blocking in <code>accept()</code>, since that thread will gain control

-	 * of this session.

-	 * <p>

-	 * Before calling <code>launch()</code>, you should first call

-	 * <code>supportsLaunch()</code>. If <code>supportsLaunch()</code>

-	 * returns false, then you will have to tell the user to manually launch the

-	 * Flash player.

-	 * <p>

-	 * Also, before calling <code>launch()</code>, you must call

-	 * <code>startListening()</code>.

-	 * 

-	 * @param uri

-	 *            which will launch a Flash player under running OS. For

-	 *            Flash/Flex apps, this can point to either a SWF or an HTML

-	 *            file. For AIR apps, this must point to the application.xml

-	 *            file for the application.

-	 * @param airLaunchInfo

-	 *            If trying to launch an AIR application, this argument must be

-	 *            specified; it gives more information about how to do the

-	 *            launch. If trying to launch a regular web-based Flash or Flex

-	 *            application, such as one that will be in a browser or in the

-	 *            standalone Flash Player, this argument should be

-	 *            <code>null</code>.

-	 * @param forDebugging

-	 *            if <code>true</code>, then the launch is for the purposes

-	 *            of debugging. If <code>false</code>, then the launch is

-	 *            simply because the user wants to run the movie but not debug

-	 *            it; in that case, the return value of this function will be

-	 *            <code>null</code>.

-	 * @param waitReporter

-	 *            a progress monitor to allow accept() to notify its parent how

-	 *            long it has been waiting for the Flash player to connect to

-	 *            it. May be <code>null</code> if the caller doesn't need to

-	 *            know how long it's been waiting.

-	 * @param launchNotification

-	 *            a notifier to notify the caller about ADL Exit Code.

-	 *            Main usage is for ADL Exit Code 1 (Successful invocation of an 

-	 *            already running AIR application. ADL exits immediately).

-	 *            May be <code>null</code> if no need to listen ADL. 

-	 *            Will only be called if forDebugging is false.  (If forDebugging

-	 *            is true, error conditions are handled by throwing an exception.)

-	 *			  The callback will be called on a different thread.

-	 * @return a Session to use for debugging, or null if forDebugging==false.

-	 *         The return value is not used to indicate an error -- exceptions

-	 *         are used for that. If this function returns without throwing an

-	 *         exception, then the return value will always be non-null if

-	 *         forDebugging==true, or null if forDebugging==false.

-	 * @throws BindException

-	 *             if <code>isListening()</code> == false

-	 * @throws FileNotFoundException

-	 *             if file cannot be located

-	 * @throws CommandLineException

-	 *             if the program that was launched exited unexpectedly. This

-	 *             will be returned, for example, when launching an AIR

-	 *             application, if adl exits with an error code.

-	 *             CommandLineException includes functions to return any error

-	 *             text that may have been sent to stdout/stderr, and the exit

-	 *             code of the program.

-	 * @throws IOException 

-	 * 				Exception during launch.

-	 */

-	public Session launch(String uri, AIRLaunchInfo airLaunchInfo,

-			boolean forDebugging, IProgress waitReporter, ILaunchNotification launchNotification, ILauncher launcher) throws IOException;

-

-}

diff --git a/modules/fdbworkers/src/flash/tools/debugger/SourceFile.java b/modules/fdbworkers/src/flash/tools/debugger/SourceFile.java
deleted file mode 100644
index 6fe0978..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/SourceFile.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * A SourceFile contains information about a specific segment 
- * of ActionScript source code.  The source code could be
- * derived from a number of locations; an ActionScript file, a 
- * snip-it of code from a frame, compiler generated code, etc.
- */
-public interface SourceFile
-{
-	/**
-	 * Base path for this filename, without the package-name portion.  For
-	 * example, if class mx.controls.Button.as was in
-	 * C:\flex\sdk\frameworks\mx\controls\Button.as, then getBasePath()
-	 * would return "C:\flex\sdk\frameworks" (note that the "mx\controls"
-	 * part would NOT be returned).
-	 * @return base path, or null
-	 */
-	public String getBasePath();
-
-	/**
-	 * Get the package name portion of the path for this file. For example, if
-	 * class mx.controls.Button.as was in
-	 * C:\flex\sdk\frameworks\mx\controls\Button.as, then getPackageName() would
-	 * return "mx\controls".
-	 * 
-	 * @return package name, or "" (never null)
-	 */
-	public String getPackageName();
-
-	/**
-	 * File name of this SourceFile.  In the case of a disk-based SourceFile,
-	 * this is the same as the filename with no path, e.g. 'myfile.as'
-	 * @return filename, or "" (never null)
-	 */
-	public String getName();
-
-	/**
-	 * Full path and file name, if its exists, for this SourceFile.  For
-	 * disk-based SourceFiles, this is equivalent to
-	 *     <code>getBasePath + slash + getPackageName() + slash + getName()</code>
-	 * where "slash" is a platform-specific slash character.
-	 * @return path, never null
-	 */
-	public String getFullPath();
-
-	/**
-	 * Raw, unprocessed file name for this SourceFile.
-	 * @since As of Version 2
-	 */
-	public String getRawName();
-
-	/**
-	 * Returns the number of source lines in the given file
-	 * @return -1 indicates an error.  Call getError() to 
-	 * obtain specific reason code.
-	 */
-	public int getLineCount();
-
-	/**
-	 * Return a unique identifier for this SourceFile. 
-	 */
-	public int getId();
-
-	/**
-	 * Obtains the textual content of the given line
-	 * from within a source file.  
-	 * Line numbers start at 1 and go to getLineCount().
-	 * 
-	 * @return the line of source of the file.  Any carriage
-	 *		   return and/or line feed are stripped from the
-	 *		   end of the string.
-	 */
-	public String getLine(int lineNum);
-
-	/**
-	 *---------------------------------------------------
-	 * WARNING:  The functions below will return null
-	 *			 and/or 0 values while 
-	 *			 Session.fileMetaDataLoaded() is false.
-	 *---------------------------------------------------
-	 */
-
-	/**
-	 * Return the function name for a given line number, or <code>null</code>
-	 * if not known or if the line matches more than one function.
-     * @since Version 3.
-	 */
-	public String getFunctionNameForLine(Session s, int lineNum);
-
-	/**
-	 * Return the line number for the given function name
-	 * if it doesn't exists -1 is returned
-	 */
-	public int getLineForFunctionName(Session s, String name);
-
-	/**
-	 * Get a list of all function names for this SourceFile
-	 */
-	public String[] getFunctionNames(Session s);
-
-	/**
-	 * Return the offset within the SWF for a given line 
-	 * number.
-	 */
-	public int getOffsetForLine(int lineNum);
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/SourceLocator.java b/modules/fdbworkers/src/flash/tools/debugger/SourceLocator.java
deleted file mode 100644
index 23d49d7..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/SourceLocator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import java.io.InputStream;
-
-/**
- * A callback interface which should be implemented by the client debugger
- * (such as fdb), to locate source files.
- * 
- * This is only necessary if the client debugger wants the DJAPI to "own"
- * the source code.  Zorn, for example, will probably *not* want to
- * implement this interface, because Eclipse itself will load the source
- * files from disk.
- */
-public interface SourceLocator
-{
-	/**
-	 * Callback from DJAPI to the debugger, to find a source file.
-	 * Returns null if it can't find the file.
-	 */
-    public InputStream locateSource(String path, String pkg, String name);
-
-	/**
-	 * Returns a number which indicates how many times this SourceLocator's
-	 * search algorithm has been changed since it was created.  For example,
-	 * if a SourceLocator allows the user to change the list of directories
-	 * that are searched, then each time the user changes that list of
-	 * directories, the return value from getChangeCount() should change.
-	 * 
-	 * The DJAPI uses this in order to figure out if it should try again
-	 * to look for a source file that it had previously been unable to
-	 * find.
-	 */
-	public int getChangeCount();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/SuspendReason.java b/modules/fdbworkers/src/flash/tools/debugger/SuspendReason.java
deleted file mode 100644
index b35c748..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/SuspendReason.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * Reasons for which the Flash Player will suspend itself
- */
-public interface SuspendReason
-{
-	public static final int Unknown			= 0;
-	
-	/** We hit a breakpoint */
-	public static final int Breakpoint  	= 1;
-	
-	/** A watchpoint was triggered */
-	public static final int Watch			= 2;
-	
-	/** A fault occurred */
-	public static final int Fault			= 3;
-
-	public static final int StopRequest		= 4;
-
-	/** A step completed */
-	public static final int Step			= 5;
-
-	public static final int HaltOpcode		= 6;
-	
-	/**
-	 * Either a new SWF was loaded, or else one or more scripts (ABCs)
-	 * from an existing SWF were loaded.
-	 */
-	public static final int ScriptLoaded	= 7;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/SuspendedException.java b/modules/fdbworkers/src/flash/tools/debugger/SuspendedException.java
deleted file mode 100644
index 49c2308..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/SuspendedException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * SuspendedException is thrown when the Player 
- * is in a state for which the action cannot be performed.
- */
-public class SuspendedException extends PlayerDebugException
-{
-	private static final long serialVersionUID = 1168900295788494483L;
-
-    @Override
-	public String getMessage()
-	{
-		return Bootstrap.getLocalizationManager().getLocalizedTextString("suspended"); //$NON-NLS-1$
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/SwfInfo.java b/modules/fdbworkers/src/flash/tools/debugger/SwfInfo.java
deleted file mode 100644
index c1632a8..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/SwfInfo.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * The SwfInfo object contains information relating to
- * a particular swf file that was loaded by the Player.
- * Each SWF file contains a list of actionscript source
- * files from which execution is performed.
- * 
- * It is important to note 2 or more SWF files may contain
- * multiple copies of the same source code.  From the 
- * Player's perspective and the API perspective these
- * copies are unique and it is up to the user of the 
- * API to detect these 'duplicate' files and either
- * filter them from the user and/or present an
- * appropriate disambiguous representation of 
- * the file names.  Also internally they are treated
- * as two distinct files and thus breakpoints 
- * will most likely need to be set on both files
- * independently.
- */
-public interface SwfInfo
-{
-	/**
-	 * The full path of the SWF.
-	 */
-	public String getPath();
-
-	/**
-	 * The URL for the SWF.  Includes any options
-	 * at the end of the URL. For example ?debug=true
-	 */
-	public String getUrl();
-
-	/**
-	 * The size of this SWF in bytes
-	 */
-	public int getSwfSize();
-
-	/**
-	 * The size of the debug SWD file, if any
-	 * This may also be zero if the SWD load is in progress
-	 * @throws InProgressException if the SWD has not yet been loaded
-	 */
-	public int getSwdSize(Session s) throws InProgressException;
-
-	/**
-	 * Indication that this SWF, which was previously loaded into
-	 * the Player, is now currently unloaded.  All breakpoints
-	 * set on any of the files contained within this SWF will
-	 * be inactive.  These breakpoints will still exist in the 
-	 * list returned by Session.getBreakpointList()
-	 */
-	public boolean isUnloaded();
-	
-	/**
-	 * Indicates whether the contents of the SWF file
-	 * have been completely processed.
-	 * Completely processed means that calls to getSwdSize
-	 * and other calls that may throw an InProgressException will
-	 * not throw this exception.  Additionally the function
-	 * and offset related calls within SourceFile will return
-	 * non-null values once this call returns true.
-	 * @since Version 2
-	 */
-	public boolean isProcessingComplete();
-
-	/**
-	 * Number of source files in this SWF.
-	 * May be zero if no debug 
-	 * @throws InProgressException if the SWD has not yet been loaded
-	 */
-	public int getSourceCount(Session s) throws InProgressException;
-
-	/**
-	 * List of source files that are contained within 
-	 * this SWF.
-	 * @throws InProgressException if the SWD has not yet been loaded
-	 * @since Version 2
-	 */
-	public SourceFile[] getSourceList(Session s) throws InProgressException;
-
-	/**
-	 * Returns true if the given source file is contained 
-	 * within this SWF. 
-	 * @since Version 2
-	 */
-	public boolean containsSource(SourceFile f);
-	
-	/**
-	 * Return the worker ID to which this SWF belongs.
-	 */
-	public int getIsolateId();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Value.java b/modules/fdbworkers/src/flash/tools/debugger/Value.java
deleted file mode 100644
index 1f97e9e..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Value.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import flash.tools.debugger.concrete.DVariable;
-
-/**
- * An ActionScript value, for example, the value of a variable or constant.
- * 
- * @author mmorearty
- */
-public interface Value
-{
-	/**
-	 * A special object representing ActionScript's "undefined" value.
-	 */
-	public static final Object UNDEFINED = new Object() {
-		@Override
-		public String toString() {
-			return "undefined";  //$NON-NLS-1$
-		}
-	};
-
-	/**
-	 * The value returned if somone calls getId() for a Variable
-	 * which stores a variable of simple type such as String or
-	 * integer, rather than an Object or MovieClip.
-	 * @see getId()
-	 */
-	public static final long UNKNOWN_ID							= -1;
-
-	/**
-	 * The special ID for pseudo-variable "_global".  (Note, this only
-	 * exists in AS2, not AS3.)
-	 * @see getId()
-	 */
-	public static final long GLOBAL_ID							= -2;
-
-	/**
-	 * The special ID for pseudo-variable "this".
-	 * @see getId()
-	 */
-	public static final long THIS_ID							= -3;
-
-	/**
-	 * The special ID for pseudo-variable "_root".  (Note, this only
-	 * exists in AS2, not AS3.)
-	 * @see getId()
-	 */
-	public static final long ROOT_ID							= -4;
-
-	/**
-	 * The special ID for the top frame of the stack.  Locals and
-	 * arguments are "members" of this pseudo-variable.
-	 * 
-	 * All the stack frames have IDs counting down from here.  For example,
-	 * the top stack frame has ID <code>BASE_ID</code>; the next
-	 * stack frame has ID <code>BASE_ID - 1</code>; and so on.
-	 * 
-	 * @see getId()
-	 */
-	public static final long BASE_ID							= -100;
-
-	/**
-	 * _level0 == LEVEL_ID, _level1 == LEVEL_ID-1, ...
-	 * 
-	 * all IDs below this line are dynamic.
-	 */
-	public static final long LEVEL_ID							= -300;
-
-	/**
-	 * The return value of getTypeName() if this value represents the traits of a class.
-	 */
-	public static final String TRAITS_TYPE_NAME					= "traits"; //$NON-NLS-1$
-
-	/**
-	 * Variable type can be one of VariableType.OBJECT,
-	 * VariableType.FUNCTION, VariableType.NUMBER, VariableType.STRING,
-	 * VariableType.UNDEFINED, VariableType.NULL.
-	 */
-	public int			getType();
-
-	/**
-	 * The type name of the value:
-	 * 
-	 * <ul>
-	 * <li> <code>"Number"</code> </li>
-	 * <li> <code>"Boolean"</code> </li>
-	 * <li> <code>"String"</code> </li>
-	 * <li> <code>"null"</code> </li>
-	 * <li> <code>"undefined"</code> </li>
-	 * <li> <code>Value.TRAITS_TYPE_NAME</code> if this value represents the
-	 * traits of a class </li>
-	 * <li> <code>"[package::]Classname@hexaddr"</code> if this value
-	 * represents an instance of a non-primitive object. For example, if this is
-	 * an instance of mx.core.Application, the type name might be
-	 * "mx.core::Application@1234abcd". </li>
-	 * </ul>
-	 */
-	public String		getTypeName();
-
-	/**
-	 * The class name of the value. This isn't actually very useful, and should
-	 * probably go away; it had more relevant in ActionScript 2, when the return
-	 * value from this function could have been any one of the strings returned
-	 * by {@link DVariable#classNameFor(long, boolean)}.
-	 * 
-	 * In the AS3 world, the only possible return values from this function are:
-	 * 
-	 * <ul>
-	 * <li> <code>"Object"</code> for instances of non-primitive classes such
-	 * as Object, Array, etc. </li>
-	 * <li> <code>""</code> all primitive values (Number, Boolean, String,
-	 * null, undefined), or the traits of a class. </li>
-	 * </ul>
-	 */
-	public String		getClassName();
-
-	/**
-	 * Variable attributes define further information 
-	 * regarding the variable.  They are bitfields identified
-	 * as VariableAttribute.xxx
-	 * 
-	 * @see VariableAttribute
-	 */
-	public int			getAttributes();
-
-	/**
-	 * @see VariableAttribute
-	 */
-	public boolean		isAttributeSet(int variableAttribute);
-
-	/**
-	 * Returns a unique ID for the object referred to by this variable.
-	 * If two variables point to the same underlying object, their
-	 * getId() functions will return the same value.
-	 * 
-	 * This is only meaningful for variables that store an Object or
-	 * MovieClip.  For other types of variables (e.g. integers and
-	 * strings), this returns <code>UNKNOWN_ID</code>.
-	 */
-	public long			getId();
-
-	/**
-	 * Returns the value of the variable, as an Object.  The return
-	 * value will always be one of the following:
-	 * 
-	 * <ul>
-	 * <li> <code>null</code> </li>
-	 * <li> <code>Value.UNDEFINED</code> </li>
-	 * <li> a <code>Boolean</code> </li>
-	 * <li> a <code>Double</code> (careful, it might be <code>Double.NaN</code>) </li>
-	 * <li> a <code>String</code> </li>
-	 * <li> a <code>Long</code> if this value represents a non-primitive
-	 * type, such as an Object.  If it is a Long, then it is the id of
-	 * the Value (the same value returned by <code>getId()</code>).
-	 * </ul>
-	 */
-	public Object		getValueAsObject();
-
-	/**
-	 * Returns the value of the variable, converted to a string.  Strings
-	 * are returned as the exact value of the string itself, with no
-	 * extra quotation marks and no escaping of characters within the
-	 * string.
-	 */
-	public String		getValueAsString();
-
-	/**
-	 * Returns all child members of this variable.  Can only be called for
-	 * variables of type Object or MovieClip.
-	 * @throws NotConnectedException 
-	 * @throws NoResponseException 
-	 * @throws NotSuspendedException 
-	 */
-	public Variable[]	getMembers(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException;
-
-	/**
-	 * Returns a specific child member of this variable.  Can only be called for
-	 * variables of type <code>Object<code> or <code>MovieClip<code>.
-	 * @param s the session
-	 * @param name just a varname name, without its namespace (see <code>getName()</code>)
-	 * @return the specified child member, or null if there is no such child.
-	 * @throws NotConnectedException 
-	 * @throws NoResponseException 
-	 * @throws NotSuspendedException 
-	 */
-	public Variable     getMemberNamed(Session s, String name) throws NotSuspendedException, NoResponseException, NotConnectedException;
-
-	/**
-	 * Returns the number of child members of this variable.  If called for
-	 * a variable which has a simple type such as integer or string,
-	 * returns zero.
-	 * @throws NotConnectedException 
-	 * @throws NoResponseException 
-	 * @throws NotSuspendedException 
-	 */
-	public int			getMemberCount(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException;
-
-	/**
-	 * Returns the list of classes that contributed members to this object, from
-	 * the class itself all the way down to <code>Object</code> (or, if
-	 * allLevels == false, down to the lowest-level class that actually
-	 * contributed members).
-	 * 
-	 * @param allLevels
-	 *            if <code>true</code>, the caller wants the entire class
-	 *            hierarchy. If <code>false</code>, the caller wants only
-	 *            that portion of the class hierarchy that actually contributed
-	 *            member variables to the object. For example,
-	 *            <code>Object</code> has no members, so if the caller passes
-	 *            <code>true</code> then the returned array of strings will
-	 *            always end with <code>Object</code>, but if the caller
-	 *            passes <code>false</code> then the returned array of strings
-	 *            will <em>never</em> end with <code>Object</code>.
-	 * @return an array of fully qualified class names.
-	 */
-	public String[]		getClassHierarchy(boolean allLevels);
-	
-	/**
-	 * Returns all child members of this variable that are private and are present 
-	 * in its inheritance chain. Only relevant after a call to getMembers().
-	 * 
-	 * Warning: This may contain variables with the same name (when there is more
-	 * than two level inheritance).
-	 */
-	public Variable[]	getPrivateInheritedMembers();
-	
-	/**
-	 * Get all the private variables with the given name. Usually one, but more
-	 * may be present if the inheritance chain is long.
-	 * @param name Variable name.
-	 */
-	public Variable[] getPrivateInheritedMemberNamed(String name);
-	
-	/**
-	 * Get the worker id of the isolate to which this value belongs.
-	 */
-	public int getIsolateId();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/ValueAttribute.java b/modules/fdbworkers/src/flash/tools/debugger/ValueAttribute.java
deleted file mode 100644
index 00b62c8..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/ValueAttribute.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * @author mmorearty
- */
-public interface ValueAttribute
-{
-
-	/**
-	 * Indicates that the value that has been returned for a variable
-	 * is actually not its real value; instead, it is the message of
-	 * an exception that was thrown while executing the getter for
-	 * the variable.
-	 */
-	public static final int IS_EXCEPTION			= 0x00040000;
-
-	/**
-	 * Indicates that an object is actually a Class.  For example, if you have
-	 *
-	 * <pre>    var someClass:Class = Button;</pre>
-	 * 
-	 * ... then someClass will have IS_CLASS set to true.
-	 */
-	public static final int IS_CLASS				= 0x04000000;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Variable.java b/modules/fdbworkers/src/flash/tools/debugger/Variable.java
deleted file mode 100644
index a424525..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Variable.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-import flash.tools.debugger.events.FaultEvent;
-
-/**
- * A Variable is any ActionScript variable, such as a String, Number, etc.
- * It encapsulates the concept of a type and a value.
- */
-public interface Variable
-{
-	/**
-	 * The name of the variable.
-	 */
-	public String		getName();
-
-	/**
-	 * The fully qualified name of the variable, i.e. "namespace::name"
-	 * if there is a namespace, or just "name" if not.
-	 */
-	public String		getQualifiedName();
-
-	/**
-	 * The namespace of the variable.  This is everything before the
-	 * "::".  For example:
-	 * 
-	 * <ul>
-	 * <li> If a variable was declared "private var x", then the
-	 *      namespace is "ClassName$3", where "3" might be
-	 *      any number. </li>
-	 * <li> If a variable was declared within a namespace, e.g.
-	 *      "mynamespace var x", then the namespace might be
-	 *      "http://blahblah::x", where "http://blahblah" is the URL
-	 *      of the namespace.
-	 * <li> If a variable was declared neither public nor private
-	 *      (and is therefore "internal"), and it is inside of a
-	 *      package, then the namespace might be
-	 *      "packagename". </li>
-	 * </ul>
-	 * 
-	 * @return namespace or "", never <code>null</code>
-	 */
-	public String		getNamespace();
-
-	/**
-	 * Returns just the scope bits of the attributes. The scope values from
-	 * VariableAttribute (PUBLIC_SCOPE etc.) are NOT bitfields, so the returned
-	 * value can be compared directly to VariableAttribute.PUBLIC_SCOPE, etc.
-	 * using "==".
-	 * 
-	 * @see VariableAttribute
-	 */
-	public int			getScope();
-
-	/**
-	 * For a member variable of an instance of some class, its "level" indicates
-	 * how far up the class hierarchy it is from the actual class of the instance.
-	 * For example, suppose you have this code:
-	 * 
-	 * <pre>
-	 *    class A           { int a }
-	 *    class B extends A { int b }
-	 *    class C extends B { int c }
-	 *    var myObject: C
-	 * </pre>
-	 * 
-	 * In this case, for <code>myObject</code>, the "level" of variable <code>c</code>
-	 * is 0; the level of <code>b</code> is 1; and the level of <code>a</code> is 2.
-	 */
-	public int			getLevel();
-
-	/**
-	 * The class in which this member was actually defined.  For example, if class
-	 * B extends class A, and class A has member variable V, then for variable
-	 * V, the defining class is always "A", even though the parent variable might
-	 * be an instance of class B.
-	 */
-	public String		getDefiningClass();
-
-	/**
-	 * Variable attributes define further information 
-	 * regarding the variable.  They are bitfields identified
-	 * as VariableAttribute.xxx
-	 * 
-	 * @see VariableAttribute
-	 */
-	public int			getAttributes();
-
-	/**
-	 * @see VariableAttribute
-	 */
-	public boolean		isAttributeSet(int variableAttribute);
-
-	/**
-	 * Returns the value of the variable.
-	 */
-	public Value		getValue();
-
-	/**
-	 * Returns whether the value of the variable has changed since the last
-	 * time the program was suspended.  If the previous value of the
-	 * variable is unknown, this function will return <code>false</code>.
-	 */
-	public boolean		hasValueChanged(Session s);
-
-	/**
-	 * Changes the value of a variable. New members cannot be added to a Variable,
-	 * only the value of existing scalar members can be modified.
-	 * 
-	 * @param type
-	 *            the type of the member which is being set. Use
-	 *            VariableType.UNDEFINED in order to set the variable to an
-	 *            undefined state; the contents of 'value' will be ignored.
-	 * @param value
-	 *            the string value of the member. May be 'true' or 'false' for
-	 *            Boolean types or any valid number for Number types.
-	 * @return null, if set was successful; or a FaultEvent if a setter was
-	 *         invoked and the setter threw an exception. In that case, look at
-	 *         FaultEvent.information to see the error text of the exception
-	 *         that occurred.
-	 * @throws NoResponseException
-	 *             if times out
-	 * @throws NotSuspendedException
-	 *             if Player is running
-	 * @throws NotConnectedException
-	 *             if Player is disconnected from Session
-	 */
-	public FaultEvent setValue(Session s, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException;
-
-	/**
-	 * @return True if this variable has a getter, and the getter has not yet been invoked.
-	 */
-	public boolean needsToInvokeGetter();
-
-	/**
-	 * Executes the getter for this variable, and changes its value accordingly.  Note that
-	 * the <code>HAS_GETTER</code> flag is not affected by this call -- even after this
-	 * call, <code>HAS_GETTER</code> will still be true.  If you want to test whether the
-	 * getter has already been executed, call <code>needsToInvokeGetter()</code>.
-	 * <p>
-	 * Has no effect if <code>needsToInvokeGetter()</code> is false.
-	 * 
-	 * @throws NotSuspendedException
-	 * @throws NoResponseException
-	 * @throws NotConnectedException
-	 */
-	public void invokeGetter(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException;
-	
-	/**
-	 * Get the worker id of the isolate to which this value belongs.
-	 */
-	public int getIsolateId();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/VariableAttribute.java b/modules/fdbworkers/src/flash/tools/debugger/VariableAttribute.java
deleted file mode 100644
index 8283137..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/VariableAttribute.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * Specific attributes which further qualify a Variable. The values in the low
- * 16 bits correspond to the enumeration fields defined in the player's
- * "splay.h" file, e.g. <code>kDontEnumerate</code> etc. The values from the
- * high 16 bits correspond to <code>enum InVariableFlags</code> from
- * playerdebugger.h, e.g. <code>kIsArgument</code> etc.
- */
-public interface VariableAttribute
-{
-	/**
-	 * Indicates that this member is invisible to an enumeration
-	 * of its parent.
-	 */
-	public static final int DONT_ENUMERATE			= 0x00000001;
-
-	/**
-	 * Indicates that a variable is read-only.
-	 */
-	public static final int READ_ONLY				= 0x00000004;
-
-	/**
-	 * Indicates that a variable is a local.
-	 */
-	public static final int IS_LOCAL 				= 0x00000020;
-
-	/**
-	 * Indicates that a variable is an argument to a function.
-	 */
-	public static final int IS_ARGUMENT				= 0x00010000;
-
-	/**
-	 * Indicates that a variable is "dynamic" -- that is, whether it
-	 * is a dynamic property of a class declared with keyword "dynamic".
-	 * Note, this attribute only works with AS3 and above.
-	 */
-	public static final int IS_DYNAMIC				= 0x00020000;
-
-	// 0x00040000 is reserved for IS_EXCEPTION, which is now part of
-	// ValueAttribute rather than VariableAttribute.
-
-	/**
-	 * Indicates that a variable has a getter.
-	 */
-	public static final int HAS_GETTER				= 0x00080000;
-
-	/**
-	 * Indicates that a variable has a setter.
-	 */
-	public static final int HAS_SETTER				= 0x00100000;
-
-	/**
-	 * Indicates that a variable is a static member of its parent.
-	 */
-	public static final int IS_STATIC				= 0x00200000;
-
-	/**
-	 * Indicates that a variable was declared "const". READ_ONLY, on the other
-	 * hand, applies both to "const" variables and also to various other types
-	 * of objects. IS_CONST implies READ_ONLY; READ_ONLY does not imply
-	 * IS_CONST.
-	 */
-	public static final int IS_CONST				= 0x00400000;
-
-	/**
-	 * Indicates that a variable is a public member of its parent.
-	 *
-	 * Note: the scope attributes are not bitfields.  To determine the scope
-	 * of a variable, use variable.getScope() and compare the result to the
-	 * various *_SCOPE values using ==.  For example:
-	 *
-	 * <pre>
-	 * 		if (myVar.getScope() == VariableAttribute.PUBLIC_SCOPE) ...
-	 * </pre>
-	 */
-	public static final int PUBLIC_SCOPE			= 0x00000000;
-
-	/**
-	 * Indicates that a variable is a private member of its parent.
-	 *
-	 * Note: the scope attributes are not bitfields.  To determine the scope
-	 * of a variable, use variable.getScope() and compare the result to the
-	 * various *_SCOPE values using ==.  For example:
-	 *
-	 * <pre>
-	 * 		if (myVar.getScope() == VariableAttribute.PRIVATE_SCOPE) ...
-	 * </pre>
-	 */
-	public static final int PRIVATE_SCOPE			= 0x00800000;
-
-	/**
-	 * Indicates that a variable is a protected member of its parent.
-	 *
-	 * Note: the scope attributes are not bitfields.  To determine the scope
-	 * of a variable, use variable.getScope() and compare the result to the
-	 * various *_SCOPE values using ==.  For example:
-	 *
-	 * <pre>
-	 * 		if (myVar.getScope() == VariableAttribute.PROTECTED_SCOPE) ...
-	 * </pre>
-	 */
-	public static final int PROTECTED_SCOPE			= 0x01000000;
-
-	/**
-	 * Indicates that a variable is an internal member of its parent.
-	 * Internally scoped variables are visible to all classes that
-	 * are in the same package.
-	 *
-	 * Note: the scope attributes are not bitfields.  To determine the scope
-	 * of a variable, use variable.getScope() and compare the result to the
-	 * various *_SCOPE values using ==.  For example:
-	 *
-	 * <pre>
-	 * 		if (myVar.getScope() == VariableAttribute.INTERNAL_SCOPE) ...
-	 * </pre>
-	 */
-	public static final int INTERNAL_SCOPE			= 0x01800000;
-
-	/**
-	 * Indicates that a variable is scoped by a namespace.  For
-	 * example, it may have been declared as:
-	 * <code>my_namespace var x;</code>
-	 *
-	 * Note: the scope attributes are not bitfields.  To determine the scope
-	 * of a variable, use variable.getScope() and compare the result to the
-	 * various *_SCOPE values using ==.  For example:
-	 *
-	 * <pre>
-	 * 		if (myVar.getScope() == VariableAttribute.NAMESPACE_SCOPE) ...
-	 * </pre>
-	 */
-	public static final int NAMESPACE_SCOPE			= 0x02000000;
-
-	/**
-	 * A mask which can be used to get back only the scope-related
-	 * attributes.
-	 *
-	 * Note: the scope attributes are not bitfields.  To determine the scope
-	 * of a variable, use variable.getScope() and compare the result to the
-	 * various *_SCOPE values using ==.  For example:
-	 *
-	 * <pre>
-	 * 		if (myVar.getScope() == VariableAttribute.PRIVATE_SCOPE) ...
-	 * </pre>
-	 */
-	public static final int SCOPE_MASK				= PUBLIC_SCOPE|PRIVATE_SCOPE|PROTECTED_SCOPE|INTERNAL_SCOPE|NAMESPACE_SCOPE;
-
-	// 0x04000000 is reserved for IS_CLASS, which is now part of
-	// ValueAttribute rather than VariableAttribute.
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/VariableType.java b/modules/fdbworkers/src/flash/tools/debugger/VariableType.java
deleted file mode 100644
index 48554da..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/VariableType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * An identifier for the type of a Variable.
- */
-public interface VariableType
-{
-    public static final int NUMBER					=  0;
-    public static final int BOOLEAN					=  1;
-    public static final int STRING					=  2;
-    public static final int OBJECT					=  3;
-    public static final int FUNCTION				=  4;
-    public static final int MOVIECLIP				=  5;
-    public static final int NULL				    =  6;
-    public static final int UNDEFINED				=  7;
-	public static final int UNKNOWN					=  8;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/VersionException.java b/modules/fdbworkers/src/flash/tools/debugger/VersionException.java
deleted file mode 100644
index 5ecb0ca..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/VersionException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * VersionException is thrown when the Session
- * is connected to a Player that does not support
- * a given operation.
- */
-public class VersionException extends PlayerDebugException
-{
-	private static final long serialVersionUID = 4966523681921720567L;
-
-    @Override
-	public String getMessage()
-	{
-		return Bootstrap.getLocalizationManager().getLocalizedTextString("unexpectedPlayerVersion"); //$NON-NLS-1$
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Watch.java b/modules/fdbworkers/src/flash/tools/debugger/Watch.java
deleted file mode 100644
index d8d9aef..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/Watch.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * The Watch object represents a single watchpoint within a Session
- * A watchpoint is a mechanism by which execution of the Player
- * can be halted when a particular variable is accessed.  The 
- * access type can be one of read, write or read/write.
- * @since Version 2
- */
-public interface Watch
-{
-	/**
-	 * Value id of the value whose member is being watched.
-	 * For example if the watch is placed on 'a.b.c' then the id
-	 * will be that of the value 'a.b'.  Session.getVariable()
-	 * can be used to obtain the variable.  This combined with
-	 * the memberName() forms the unique identifier for the Watch.
-	 */
-	public long getValueId();
-
-	/**
-	 * Name of variable member that is being watched.  
-	 */
-	public String getMemberName();
-
-	/**
-	 * The kind of watch placed on the variable being watched.
-	 */
-    public int getKind();
-    
-    /**
-     * The isolate to which this watchpoint belongs.
-     */
-    public int getIsolateId();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/WatchKind.java b/modules/fdbworkers/src/flash/tools/debugger/WatchKind.java
deleted file mode 100644
index b5a9d01..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/WatchKind.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger;
-
-/**
- * A descriptor for the type of watchpoint.
- * It may be one of three values; read, write or
- * both read and write.
- * @since Version 2
- */
-public interface WatchKind
-{
-	/* kind of a watchpoint (one of) */
-    public static final int NONE					=  0;
-    public static final int READ					=  1;
-    public static final int WRITE					=  2;
-    public static final int READWRITE				=  3;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/AIRPlayer.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/AIRPlayer.java
deleted file mode 100644
index 2aeefd3..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/AIRPlayer.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.File;
-
-import flash.tools.debugger.Browser;
-import flash.tools.debugger.Player;
-
-/**
- * @author Mike Morearty
- */
-public class AIRPlayer implements Player
-{
-	File m_adl;
-
-	/**
-	 * @param adl
-	 *            The path to adl (Mac/Linux) or adl.exe (Windows); may be null
-	 */
-	public AIRPlayer(File adl)
-	{
-		m_adl = adl;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Player#getType()
-	 */
-	public int getType()
-	{
-		return AIR;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Player#getPath()
-	 */
-	public File getPath()
-	{
-		return m_adl;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Player#getBrowser()
-	 */
-	public Browser getBrowser()
-	{
-		return null;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/AbstractPlayer.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/AbstractPlayer.java
deleted file mode 100644
index d147768..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/AbstractPlayer.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.File;
-
-import flash.tools.debugger.Browser;
-import flash.tools.debugger.Player;
-
-/**
- * @author mmorearty
- */
-public abstract class AbstractPlayer implements Player
-{
-	private Browser m_browser;
-	private File m_flashPlayer;
-
-	public AbstractPlayer(File webBrowser, File flashPlayer)
-	{
-		if (webBrowser != null)
-			m_browser = new DBrowser(webBrowser);
-		m_flashPlayer = flashPlayer;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Player#getPath()
-	 */
-	public File getPath()
-	{
-		return m_flashPlayer;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Player#getBrowser()
-	 */
-	public Browser getBrowser()
-	{
-		return m_browser; // this is null if we're using the standalone player
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/ActiveXPlayer.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/ActiveXPlayer.java
deleted file mode 100644
index 45cf5eb..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/ActiveXPlayer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.File;
-
-/**
- * @author mmorearty
- */
-public class ActiveXPlayer extends AbstractPlayer
-{
-	public ActiveXPlayer(File iexploreExe, File path)
-	{
-		super(iexploreExe, path);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Player#getType()
-	 */
-	public int getType()
-	{
-		return ACTIVEX;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/BinaryOp.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/BinaryOp.java
deleted file mode 100644
index d5bd0b4..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/BinaryOp.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-/**
- * @author Mike Morearty
- */
-public enum BinaryOp {
-	// These correspond to the values in the player, in playerdebugger.h,
-	// enum BinaryOp.  These values must be kept synchronized with those
-	// ones.
-	Is(0, "is"), //$NON-NLS-1$
-	Instanceof(1, "instanceof"), //$NON-NLS-1$
-	In(2, "in"), //$NON-NLS-1$
-	As(3, "as"); //$NON-NLS-1$
-
-	private int m_value;
-	private String m_name;
-
-	private BinaryOp(int value, String name) {
-		m_value = value;
-		m_name = name;
-	}
-
-	public int getValue() {
-		return m_value;
-	}
-
-	public String getName() {
-		return m_name;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DBrowser.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DBrowser.java
deleted file mode 100644
index cd69fa4..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DBrowser.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.File;
-
-import flash.tools.debugger.Browser;
-
-/**
- * @author mmorearty
- */
-public class DBrowser implements Browser
-{
-	private File m_path;
-	private int m_type;
-
-	public DBrowser(File exepath)
-	{
-		m_path = exepath;
-		String exename = exepath.getName().toLowerCase();
-		if (exename.equals("iexplore.exe")) //$NON-NLS-1$
-			m_type = INTERNET_EXPLORER;
-		else if (exename.equals("mozilla.exe")) //$NON-NLS-1$
-			m_type = MOZILLA;
-		else if (exename.equals("firefox.exe")) //$NON-NLS-1$
-			m_type = MOZILLA_FIREFOX;
-		else if (exename.equals("opera.exe")) //$NON-NLS-1$
-			m_type = OPERA;
-		else if (exename.equals("netscape.exe")) //$NON-NLS-1$
-			m_type = NETSCAPE_NAVIGATOR;
-		else
-			m_type = UNKNOWN;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Browser#getType()
-	 */
-	public int getType()
-	{
-		return m_type;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Browser#getPath()
-	 */
-	public File getPath()
-	{
-		return m_path;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DIsolate.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DIsolate.java
deleted file mode 100644
index 3a0b21b..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DIsolate.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package flash.tools.debugger.concrete;
-
-import flash.tools.debugger.Isolate;
-
-/**
- * Concrete implementation of an Isolate.
- * @author anirudhs
- */
-public class DIsolate implements Isolate {
-
-	/** Isolate object behind the primordial or main thread (always exists) */
-	public static final DIsolate DEFAULT_ISOLATE = new DIsolate(Isolate.DEFAULT_ID);
-	
-	private int id;
-	
-	public DIsolate(int id) {
-		this.id = id;
-	}
-	
-	/* (non-Javadoc)
-	 * @see flash.tools.debugger.Isolate#getId()
-	 */
-	@Override
-	public int getId() {
-		return id;
-	}
-
-	@Override
-	public String toString() {		
-		return "Worker " + getId(); //$NON-NLS-1$
-	}	
-
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DLocation.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DLocation.java
deleted file mode 100644
index 01c5ab3..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DLocation.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import flash.tools.debugger.Location;
-import flash.tools.debugger.SourceFile;
-
-public class DLocation implements Location
-{
-	SourceFile	m_source;
-	int			m_line;
-	int m_isolateId;
-	boolean     m_removed;
-
-	DLocation(SourceFile src, int line, int isolateId)
-	{
-		m_source = src;
-		m_line = line;
-		m_removed = false;
-		m_isolateId = isolateId;
-	}
-
-	/* getters/setters */
-	public SourceFile	getFile()						{ return m_source; }
-    public int		    getLine()						{ return m_line; }
-	public boolean		isRemoved()						{ return m_removed; }
-	public void			setRemoved(boolean removed)		{ m_removed = removed; }
-
-	public int			getId() { return encodeId(getFile().getId(), getLine()); }
-
-	/* encode /decode */
-	public static final int encodeId(int fileId, int line)
-	{
-		return ( (line << 16) | fileId );
-	}
-	
-	public static final int decodeFile(long id)
-	{
-		return (int)(id & 0xffff);
-	}
-
-	public static final int decodeLine(long id)
-	{
-		return (int)(id >> 16 & 0xffff);
-	}
-	
-	/** for debugging */
-	@Override
-	public String toString()
-	{
-		return m_source.toString() + ":" + m_line; //$NON-NLS-1$
-	}
-
-	@Override
-	public int getIsolateId() {
-		return m_isolateId;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DManager.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DManager.java
deleted file mode 100644
index a8b1c8a..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DManager.java
+++ /dev/null
@@ -1,2583 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.InputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import flash.tools.debugger.Isolate;
-import flash.tools.debugger.SourceLocator;
-import flash.tools.debugger.SuspendReason;
-import flash.tools.debugger.SwfInfo;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.VariableAttribute;
-import flash.tools.debugger.VariableType;
-import flash.tools.debugger.events.BreakEvent;
-import flash.tools.debugger.events.ConsoleErrorFault;
-import flash.tools.debugger.events.DebugEvent;
-import flash.tools.debugger.events.DivideByZeroFault;
-import flash.tools.debugger.events.ExceptionFault;
-import flash.tools.debugger.events.FaultEvent;
-import flash.tools.debugger.events.FileListModifiedEvent;
-import flash.tools.debugger.events.InvalidWithFault;
-import flash.tools.debugger.events.IsolateCreateEvent;
-import flash.tools.debugger.events.IsolateExitEvent;
-import flash.tools.debugger.events.ProtoLimitFault;
-import flash.tools.debugger.events.RecursionLimitFault;
-import flash.tools.debugger.events.ScriptTimeoutFault;
-import flash.tools.debugger.events.StackUnderFlowFault;
-import flash.tools.debugger.events.SwfLoadedEvent;
-import flash.tools.debugger.events.SwfUnloadedEvent;
-import flash.tools.debugger.events.TraceEvent;
-import flash.util.Trace;
-
-/**
- * Implements the receiving and updating of debug state from the socket
- * connection of the Flash Player.
- */
-public class DManager implements DProtocolNotifierIF, SourceLocator {
-	private final HashMap<String, String> m_parms;
-
-	private final HashMap<Integer, DIsolate> m_isolates; /*
-														 * WARNING: accessed
-														 * from multiple threads
-														 */
-
-	/**
-	 * The currently active isolate or worker
-	 */
-	private Isolate m_activeIsolate = DEFAULT_ISOLATE;
-
-	private LinkedList<DebugEvent> m_event; /*
-											 * our event queue; WARNING:
-											 * accessed from multiple threads
-											 */
-	private SourceLocator m_sourceLocator;
-
-
-	private boolean m_squelchEnabled; /*
-									 * true if we are talking to a squelch
-									 * enabled debug player
-									 */
-	private int m_playerVersion; /*
-								 * player version number obtained from InVersion
-								 * message; e.g. 9 for Flash Player 9.0
-								 */
-
-	private boolean m_sourceListModified; /*
-										 * deprecated; indicates m_source has
-										 * changed since last call to
-										 * getSource(). WARNING: lock with
-										 * synchronized (m_source) { ... }
-										 */
-	private byte[] m_actions; /* deprecated */
-	private String[] m_lastConstantPool; /* deprecated */
-
-	// SWF/SWD fetching and parsing
-	private String m_uri;
-	private byte[] m_swf; // latest swf obtained from get swf
-	private byte[] m_swd; // latest swd obtained from get swd
-
-	private Map<String, String> m_options = new HashMap<String, String>(); // Player
-																			// options
-																			// that
-																			// have
-																			// been
-																			// queried
-																			// by
-																			// OutGetOption,
-																			// and
-																			// come
-																			// back
-																			// via
-																			// InOption
-
-	public static final String ARGUMENTS_MARKER = "$arguments"; //$NON-NLS-1$
-	public static final String SCOPE_CHAIN_MARKER = "$scopechain"; //$NON-NLS-1$
-	
-	private static final DIsolate DEFAULT_ISOLATE = DIsolate.DEFAULT_ISOLATE;
-	private Isolate m_inIsolate = DEFAULT_ISOLATE;
-	private final Object m_inIsolateLock;
-	private final Object m_activeIsolateLock;
-	private boolean m_wideLines;
-	private DManagerIsolateState m_mainState;
-	private HashMap<Integer, DManagerIsolateState> m_isolateState;
-
-
-	class DManagerIsolateState {
-		public DSuspendInfo m_suspendInfo;
-		public DSwfInfo m_lastSwfInfo; /*
-										 * hack for syncing swfinfo records with
-										 * incoming InScript messages
-										 */
-		public DVariable m_lastInGetVariable;/*
-											 * hack for getVariable call to work
-											 * with getters
-											 */
-		public boolean m_attachChildren; /*
-										 * hack for getVariable call to work
-										 * with getters
-										 */
-		public DVariable m_lastInCallFunction; /* hack for callFunction to work */
-		public DVariable m_lastInBinaryOp;
-		private boolean m_executingPlayerCode;
-		private FaultEvent m_faultEventDuringPlayerCodeExecution;
-
-		public final ArrayList<DLocation> m_breakpoints; /*
-														 * WARNING: accessed
-														 * from multiple threads
-														 */
-		public final Map<Integer, DModule> m_source; /*
-													 * WARNING: accessed from
-													 * multiple threads
-													 */
-		private final ArrayList<DSwfInfo> m_swfInfo; /*
-													 * WARNING: accessed from
-													 * multiple threads
-													 */
-		private final ArrayList<DWatch> m_watchpoints; /*
-														 * WARNING: accessed
-														 * from multiple threads
-														 */
-
-		/**
-		 * The currently active stack frames.
-		 */
-		public ArrayList<DStackContext> m_frames;
-
-		/**
-		 * The stack frames that were active the last time the player was
-		 * suspended.
-		 */
-		public ArrayList<DStackContext> m_previousFrames;
-
-		/**
-		 * A list of all known variables in the player. Stored as a mapping from
-		 * an object's id to its DValue.
-		 */
-		public Map<Long, DValue> m_values;
-
-		/**
-		 * A list of all known variables in the player from the previous time
-		 * the player was suspended. Stored as a mapping from an object's id to
-		 * its DValue.
-		 */
-		public Map<Long, DValue> m_previousValues;
-
-		public DManagerIsolateState() {
-			m_source = new HashMap<Integer, DModule>();
-			m_values = new HashMap<Long, DValue>();
-			m_previousValues = new HashMap<Long, DValue>();
-			m_frames = new ArrayList<DStackContext>();
-			m_previousFrames = new ArrayList<DStackContext>();
-			m_suspendInfo = null;
-			m_lastInCallFunction = null;
-			m_breakpoints = new ArrayList<DLocation>();
-			m_swfInfo = new ArrayList<DSwfInfo>();
-			m_watchpoints = new ArrayList<DWatch>();
-			m_suspendInfo = null;
-			m_lastInGetVariable = null;
-			m_attachChildren = true;
-			m_lastInCallFunction = null;
-
-		}
-	}
-
-	private DManagerIsolateState getIsolateState(int isolateId) {
-		if (isolateId == Isolate.DEFAULT_ID)
-			return m_mainState;
-		
-		DManagerIsolateState isolateState = null;
-		if (!m_isolateState.containsKey(isolateId)) {
-			isolateState = new DManagerIsolateState();
-			m_isolateState.put(isolateId, isolateState);
-		} else
-			isolateState = m_isolateState.get(isolateId);
-		return isolateState;
-	}
-
-	public DManager() {
-		m_parms = new HashMap<String, String>();
-		
-		m_isolates = new HashMap<Integer, DIsolate>();
-		m_isolates.put(Isolate.DEFAULT_ID, DEFAULT_ISOLATE);
-		m_event = new LinkedList<DebugEvent>();
-		m_sourceLocator = null;
-		m_squelchEnabled = false;
-		m_lastConstantPool = null;
-		m_playerVersion = -1; // -1 => unknown
-		m_isolateState = new HashMap<Integer, DManagerIsolateState>();
-		m_mainState = new DManagerIsolateState();
-		m_isolateState.put(Isolate.DEFAULT_ID, m_mainState);
-		m_inIsolateLock = new Object();
-		m_activeIsolateLock = new Object();
-		m_wideLines = false;
-	}
-
-	public void setWideLines(boolean value) {
-		m_wideLines = value;
-	}
-	
-	public String getURI() {
-		return m_uri;
-	}
-
-	public byte[] getSWF() {
-		return m_swf;
-	}
-
-	public byte[] getSWD() {
-		return m_swd;
-	}
-
-	public byte[] getActions() {
-		return m_actions;
-	}
-
-	/** Returns the Flash Player version number; e.g. 9 for Flash Player 9.0 */
-	public int getVersion() {
-		return m_playerVersion;
-	}
-
-	public SourceLocator getSourceLocator() {
-		return m_sourceLocator;
-	}
-
-	public void setSourceLocator(SourceLocator sl) {
-		m_sourceLocator = sl;
-	}
-
-	/**
-	 * If this feature is enabled then we do not attempt to attach child
-	 * variables to parents.
-	 */
-	public void enableChildAttach(boolean enable, int isolateId) {
-		getIsolateState(isolateId).m_attachChildren = enable;
-	}
-
-	// return/clear the last variable seen from an InGetVariable message
-	public DVariable lastVariable(int isolateId) {
-		return getIsolateState(isolateId).m_lastInGetVariable;
-	}
-
-	public void clearLastVariable(int isolateId) {
-		getIsolateState(isolateId).m_lastInGetVariable = null;
-	}
-
-	// return/clear the last variable seen from an InCallFunction message
-	public DVariable lastFunctionCall(int isolateId) {
-		return getIsolateState(isolateId).m_lastInCallFunction;
-	}
-
-	public void clearLastFunctionCall(int isolateId) {
-		getIsolateState(isolateId).m_lastInCallFunction = null;
-	}
-
-	// return/clear the last binary op result seen from an InBinaryOp message
-	public DVariable lastBinaryOp(int isolateId) {
-		return getIsolateState(isolateId).m_lastInBinaryOp;
-	}
-
-	public void clearLastBinaryOp(int isolateId) {
-		getIsolateState(isolateId).m_lastInBinaryOp = null;
-	}
-
-	/*
-	 * Frees up any information we have kept about
-	 */
-	void freeCaches(int isolateId) {
-		clearFrames(isolateId);
-		freeValueCache(isolateId);
-	}
-
-	void freeValueCache(int isolateId) {
-		DManagerIsolateState state = getIsolateState(isolateId);
-		state.m_previousValues = state.m_values;
-		state.m_values = new HashMap<Long, DValue>();
-
-		int size = getFrameCount(isolateId);
-		for (int i = 0; i < size; i++)
-			getFrame(i, isolateId).markStale();
-	}
-
-	// continuing our execution
-	void continuing(int isolateId) {
-		freeCaches(isolateId);
-		getIsolateState(isolateId).m_suspendInfo = null;
-	}
-
-	/**
-	 * Variables
-	 */
-	DValue getOrCreateValue(long id, int isolateId) {
-		DValue v = getValue(id, isolateId);
-		if (v == null) {
-			v = new DValue(id, isolateId);
-			putValue(id, v, isolateId);
-		}
-		return v;
-	}
-
-	public DSwfInfo[] getSwfInfos(int isolateId) {
-		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
-		synchronized (swfInfos) {
-			return swfInfos.toArray(new DSwfInfo[swfInfos.size()]);
-		}
-	}
-
-	public DSwfInfo getSwfInfo(int at, int isolateId) {
-		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
-		synchronized (swfInfos) {
-			return swfInfos.get(at);
-		}
-	}
-
-	public int getSwfInfoCount(int isolateId) {
-		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
-		synchronized (swfInfos) {
-			return swfInfos.size();
-		}
-	}
-
-	/**
-	 * Obtains a SwfInfo object at the given index or if one doesn't yet exist
-	 * at that location, creates a new empty one there and returns it.
-	 */
-	DSwfInfo getOrCreateSwfInfo(int at, int isolateId) {
-		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
-		synchronized (swfInfos) {
-			DSwfInfo i = (at > -1 && at < getSwfInfoCount(isolateId)) ? getSwfInfo(
-					at, isolateId) : null;
-			if (i == null) {
-				// are we above water
-				at = (at < 0) ? 0 : at;
-
-				// fill all the gaps with null; really shouldn't be any...
-				while (at >= swfInfos.size())
-					swfInfos.add(null);
-
-				i = new DSwfInfo(at, isolateId);
-				swfInfos.set(at, i);
-			}
-			return i;
-		}
-	}
-
-	/**
-	 * Get the most recently active swfInfo object. We define active as the most
-	 * recently seen swfInfo
-	 */
-	DSwfInfo getActiveSwfInfo(int isolateId) {
-		int count = getSwfInfoCount(isolateId);
-
-		// pick up the last one seen
-		DSwfInfo swf = getIsolateState(isolateId).m_lastSwfInfo;
-
-		// still don't have one then get or create the most recent one
-		// works if count = 0
-		if (swf == null)
-			swf = getOrCreateSwfInfo(count - 1, isolateId);
-
-		if (swf.hasAllSource()) {
-			// already full so create a new one on the end
-			swf = getOrCreateSwfInfo(count, isolateId);
-		}
-		return swf;
-	}
-
-	/**
-	 * Walk the list of scripts and add them to our swfInfo object This method
-	 * may be called when min/max are zero and the swd has not yet fully loaded
-	 * in the player or it could be called before we have all the scripts.
-	 */
-	void tieScriptsToSwf(DSwfInfo info, int isolateId) {
-		if (!info.hasAllSource()) {
-			int min = info.getFirstSourceId();
-			int max = info.getLastSourceId();
-			// System.out.println("attaching scripts "+min+"-"+max+" to "+info.getUrl());
-			for (int i = min; i <= max; i++) {
-				DModule m = getSource(i, isolateId);
-				if (m == null) {
-					// this is ok, it means the scripts are coming...
-				} else {
-					info.addSource(i, m);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Record a new source file.
-	 * 
-	 * @param name
-	 *            filename in "basepath;package;filename" format
-	 * @param swfIndex
-	 *            the index of the SWF with which this source is associated, or
-	 *            -1 is we don't know
-	 * @return true if our list of source files was modified, or false if we
-	 *         already knew about that particular source file.
-	 */
-	private boolean putSource(int swfIndex, int moduleId, int bitmap,
-			String name, String text, int isolateId) {
-		// if isolateIndex is not -1, augment swfIndex and moduleId with isolate
-		// info.
-		Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
-		synchronized (source) {
-			// if we haven't already recorded this script then do so.
-			if (!source.containsKey(moduleId)) {
-				DModule s = new DModule(this, moduleId, bitmap, name, text, isolateId);
-
-				// put source in our large pool
-				source.put(moduleId, s);
-
-				// put the source in the currently active swf
-				DSwfInfo swf;
-				if (swfIndex == -1) // caller didn't tell us what swf thi is for
-					swf = getActiveSwfInfo(isolateId); // ... so guess
-				else
-					swf = getOrCreateSwfInfo(swfIndex, isolateId);
-
-				swf.addSource(moduleId, s);
-
-				return true;
-			}
-
-			return false;
-		}
-	}
-
-	/**
-	 * Remove our record of a particular source file.
-	 * 
-	 * @param id
-	 *            the id of the file to forget about.
-	 * @return true if source file was removed; false if we didn't know about it
-	 *         to begin with.
-	 */
-	private boolean removeSource(int id, int isolateId) {
-		Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
-		synchronized (source) {
-			try {
-				source.remove(id);
-			} catch (Exception e) {
-				return false;
-			}
-			return true;
-		}
-	}
-
-	public DModule getSource(int id, int isolateId) {
-		Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
-		synchronized (source) {
-			return source.get(id);
-		}
-	}
-
-	// @deprecated
-	public DModule[] getSources() {
-		Map<Integer, DModule> source = getIsolateState(Isolate.DEFAULT_ID).m_source;
-		synchronized (source) {
-			m_sourceListModified = false;
-
-			/* find out the size of the array */
-			int count = source.size();
-			DModule[] ar = new DModule[count];
-
-			count = 0;
-			for (DModule sf : source.values())
-				ar[count++] = sf;
-			return ar;
-		}
-	}
-
-	// @deprecated
-	boolean sourceListModified() {
-		Map<Integer, DModule> source = getIsolateState(Isolate.DEFAULT_ID).m_source;
-		synchronized (source) {
-			return m_sourceListModified;
-		}
-	}
-
-	public DValue getValue(long id, int isolateId) {
-		return getIsolateState(isolateId).m_values.get(id);
-	}
-
-	/**
-	 * Returns the previous value object for the given id -- that is, the value
-	 * that that object had the last time the player was suspended. Never
-	 * requests it from the player (because it can't, of course). Returns
-	 * <code>null</code> if we don't have a value for that id.
-	 */
-	public DValue getPreviousValue(long id, int isolateId) {
-		return getIsolateState(isolateId).m_previousValues.get(id);
-	}
-
-	void putValue(long id, DValue v, int isolateId) {
-		if (id != Value.UNKNOWN_ID) {
-			getIsolateState(isolateId).m_values.put(id, v);
-		}
-	}
-
-	DValue removeValue(long id, int isolateId) {
-		return getIsolateState(isolateId).m_values.remove((int)id);
-	}
-
-	void addVariableMember(long parentId, DVariable child, int isolateId) {
-		DValue parent = getValue(parentId, isolateId);
-		addVariableMember(parent, child, isolateId);
-	}
-
-	void addVariableMember(DValue parent, DVariable child, int isolateId) {
-		if (getIsolateState(isolateId).m_attachChildren) {
-			// There are certain situations when the Flash player will send us
-			// more
-			// than one variable or getter with the same name. Basically, when a
-			// subclass implements (or overrides) something that was also
-			// declared in a
-			// superclass, then we'll see that variable or getter in both the
-			// superclass and the subclass.
-			//
-			// Here are a few situations where that affects the debugger in
-			// different
-			// ways:
-			//
-			// 1. When a class implements an interface, the class instance
-			// actually has
-			// *two* members for each implemented function: One which is public
-			// and
-			// represents the implementation function, and another which is
-			// internal
-			// to the interface, and represents the declaration of the function.
-			// Both of these come in to us. In the UI, the one we want to show
-			// is
-			// the public one. They come in in random order (they are stored in
-			// a
-			// hash table in the VM), so we don't know which one will come
-			// first.
-			//
-			// 2. When a superclass has a private member "m", and a subclass has
-			// its own
-			// private member with the same name "m", we will receive both of
-			// them.
-			// (They are scoped by different packages.) In this case, the first
-			// one
-			// the player sent us is the one from the subclass, and that is the
-			// one
-			// we want to display in the debugger.
-			//
-			// The following logic correctly deals with all variations of those
-			// cases.
-			if (parent != null) {
-				DVariable existingChildWithSameName = parent.findMember(child
-						.getName());
-				if (existingChildWithSameName != null) {
-					int existingScope = existingChildWithSameName.getScope();
-					int newScope = child.getScope();
-
-					if (existingScope == VariableAttribute.NAMESPACE_SCOPE
-							&& newScope == VariableAttribute.PUBLIC_SCOPE) {
-						// This is the case described above where a class
-						// implements an interface,
-						// so that class's definition includes both a
-						// namespace-scoped declaration
-						// and a public declaration, in random order; in this
-						// case, the
-						// namespace-scoped declaration came first. We want to
-						// use the public
-						// declaration.
-						parent.addMember(child);
-					} else if (existingScope == VariableAttribute.PUBLIC_SCOPE
-							&& newScope == VariableAttribute.NAMESPACE_SCOPE) {
-						// One of two things happened here:
-						//
-						// 1. This is the case described above where a class
-						// implements an interface,
-						// so that class's definition includes both a
-						// namespace-scoped declaration
-						// and a public declaration, in random order; in this
-						// case, the
-						// public declaration came first. It is tempting to use
-						// the public
-						// member in this case, but there is a catch...
-						// 2. It might be more complicated than that: Perhaps
-						// there is interface I,
-						// and class C1 implements I, but class C2 extends C1,
-						// and overrides
-						// one of the members of I that was already implemented
-						// by C1. In this
-						// case, the public declaration from C2 came first, but
-						// now we are seeing
-						// a namespace-scoped declaration in C1. We need to
-						// record that the
-						// member is public, but we also need to record that it
-						// is a member
-						// of the base class, not just a member of the
-						// superclass.
-						//
-						// The easiest way to deal with both cases is to use the
-						// child that came from
-						// the superclass, but to change its scope to public.
-						child.makePublic();
-						parent.addMember(child);
-					} else if (existingScope != VariableAttribute.PRIVATE_SCOPE
-							&& existingScope == newScope) {
-						// This is a public, protected, internal, or
-						// namespace-scoped member which
-						// was defined in a base class and overridden in a
-						// subclass. We want to
-						// use the member from the base class, to that the
-						// debugger knows where the
-						// variable was actually defined.
-						parent.addMember(child);
-					} else if (existingScope == VariableAttribute.PRIVATE_SCOPE
-							&& existingScope == newScope) {
-						parent.addInheritedPrivateMember(child);
-					}
-				} else {
-					parent.addMember(child);
-				}
-			}
-			// put child in the registry if it has an id and not already there
-			DValue childValue = (DValue) child.getValue();
-			long childId = childValue.getId();
-			if (childId != Value.UNKNOWN_ID) {
-				DValue existingValue = getValue(childId, isolateId);
-				if (existingValue != null) {
-					assert existingValue == childValue; // TODO is this right?
-														// what about getters?
-				} else {
-					putValue(childId, childValue, isolateId);
-				}
-			}
-		}
-	}
-
-	// TODO is this right?
-	void addVariableMember(long parentId, DVariable child, long doubleAsId,
-			int isolateId) {
-		addVariableMember(parentId, child, isolateId);
-
-		// double book the child under another id
-		if (getIsolateState(isolateId).m_attachChildren)
-			putValue(doubleAsId, (DValue) child.getValue(), isolateId);
-	}
-
-	// @deprecated last pool that was read
-	public String[] getConstantPool() {
-		return m_lastConstantPool;
-	}
-
-	/**
-	 * Breakpoints
-	 */
-	public DLocation getBreakpoint(int id, int isolateId) {
-		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
-		synchronized (breakpoints) {
-			DLocation loc = null;
-			int which = findBreakpoint(id, isolateId);
-			if (which > -1)
-				loc = breakpoints.get(which);
-			return loc;
-		}
-	}
-
-	int findBreakpoint(int id, int isolateId) {
-		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
-		synchronized (breakpoints) {
-			int which = -1;
-			int size = breakpoints.size();
-			for (int i = 0; which < 0 && i < size; i++) {
-				DLocation l = breakpoints.get(i);
-				if (l.getId() == id)
-					which = i;
-			}
-			return which;
-		}
-	}
-
-	DLocation removeBreakpoint(int id, int isolateId) {
-		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
-		synchronized (breakpoints) {
-			DLocation loc = null;
-			int which = findBreakpoint(id, isolateId);
-			if (which > -1) {
-				loc = breakpoints.get(which);
-				breakpoints.remove(which);
-			}
-
-			return loc;
-		}
-	}
-
-	void addBreakpoint(int id, DLocation l, int isolateId) {
-		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
-		synchronized (breakpoints) {
-			breakpoints.add(l);
-		}
-	}
-
-	public DLocation[] getBreakpoints(int isolateId) {
-		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
-		synchronized (breakpoints) {
-			return breakpoints.toArray(new DLocation[breakpoints.size()]);
-		}
-	}
-
-	/**
-	 * Watchpoints
-	 */
-	public DWatch getWatchpoint(int at, int isolateId) {
-		DManagerIsolateState state = getIsolateState(isolateId);
-		synchronized (state.m_watchpoints) {
-			return state.m_watchpoints.get(at);
-		}
-	}
-
-	public int getWatchpointCount(int isolateId) {
-		DManagerIsolateState state = getIsolateState(isolateId);
-		synchronized (state.m_watchpoints) {
-			return state.m_watchpoints.size();
-		}
-	}
-
-	public DWatch[] getWatchpoints(int isolateId) {
-		DManagerIsolateState state = getIsolateState(isolateId);
-		synchronized (state.m_watchpoints) {
-			return state.m_watchpoints.toArray(new DWatch[state.m_watchpoints.size()]);
-		}
-	}
-
-	boolean addWatchpoint(DWatch w, int isolateId) {
-		ArrayList<DWatch> lockObject = getIsolateState(isolateId).m_watchpoints;
-		synchronized (lockObject) {
-			return lockObject.add(w);
-		}
-	}
-
-	DWatch removeWatchpoint(int tag, int isolateId) {
-		ArrayList<DWatch> lockObject = getIsolateState(isolateId).m_watchpoints;
-		synchronized (lockObject) {
-			DWatch w = null;
-			int at = findWatchpoint(tag, isolateId);
-			if (at > -1)
-				w = lockObject.remove(at);
-			return w;
-		}
-	}
-
-	int findWatchpoint(int tag, int isolateId) {
-		ArrayList<DWatch> lockObject = getIsolateState(isolateId).m_watchpoints;
-		synchronized (lockObject) {
-			int at = -1;
-			int size = getWatchpointCount(isolateId);
-			for (int i = 0; i < size && at < 0; i++) {
-				DWatch w = getWatchpoint(i, isolateId);
-				if (w.getTag() == tag)
-					at = i;
-			}
-			return at;
-		}
-	}
-
-	/**
-	 * Isolates
-	 */
-	public DIsolate getIsolate(int at) {
-
-		if (at == Isolate.DEFAULT_ID)
-			return (DIsolate) DEFAULT_ISOLATE;
-
-		synchronized (m_isolates) {
-			return m_isolates.get(at);
-		}
-	}
-
-	public DIsolate getOrCreateIsolate(int at) {
-		synchronized (m_isolates) {
-			if (m_isolates.containsKey(at)) {
-				return m_isolates.get(at);
-			} else {
-				DIsolate isolate = new DIsolate(at);
-				m_isolates.put(at, isolate);
-				return isolate;
-			}
-		}
-	}
-
-	public int getIsolateCount() {
-		synchronized (m_isolates) {
-			return m_isolates.size();
-		}
-	}
-
-	public DIsolate[] getIsolates() {
-		synchronized (m_isolates) {
-			return m_isolates.values().toArray(new DIsolate[m_isolates.size()]);
-		}
-	}
-
-	boolean addIsolate(DIsolate t) {
-		synchronized (m_isolates) {
-			m_isolates.put(t.getId(), t);
-			return true;
-		}
-	}
-
-	void clearIsolates() {
-		synchronized (m_isolates) {
-			m_isolates.clear();
-		}
-	}
-
-	DIsolate removeIsolate(int id) {
-		synchronized (m_isolates) {
-			DIsolate t = null;
-			int at = findIsolate(id);
-			if (at > -1)
-				t = m_isolates.remove(at);
-			return t;
-		}
-	}
-
-	int findIsolate(int id) {
-		synchronized (m_isolates) {
-			if (m_isolates.containsKey(id))
-				return id;
-			else
-				return -1;
-		}
-	}
-
-	void setActiveIsolate(Isolate t) {
-		synchronized (m_activeIsolateLock) {
-			if (t == null) {
-				m_activeIsolate = DEFAULT_ISOLATE;
-			} else
-				m_activeIsolate = t;
-		}
-	}
-	
-	Isolate getActiveIsolate() {
-		synchronized (m_activeIsolateLock) {
-			return m_activeIsolate;
-		}
-	}
-
-
-	void setInIsolate(Isolate t) {
-		synchronized (m_inIsolateLock) {
-			if (t == null) {
-				m_inIsolate = DEFAULT_ISOLATE;
-			} else
-				m_inIsolate = t;
-		}
-	}
-
-	Isolate getInIsolate() {
-		synchronized (m_inIsolateLock) {
-			return m_inIsolate;
-		}
-	}
-
-	Isolate getDefaultIsolate() {
-		return DEFAULT_ISOLATE;
-	}
-
-
-	/**
-	 * Frame stack management related stuff
-	 * 
-	 * @return true if we added this frame; false if we ignored it
-	 */
-	boolean addFrame(DStackContext ds, int isolateId) {
-		getIsolateState(isolateId).m_frames.add(ds);
-		return true;
-	}
-
-	void clearFrames(int isolateId) {
-		if (getIsolateState(isolateId).m_frames.size() > 0)
-			getIsolateState(isolateId).m_previousFrames = getIsolateState(isolateId).m_frames;
-		getIsolateState(isolateId).m_frames = new ArrayList<DStackContext>();
-	}
-
-	public DStackContext getFrame(int at, int isolateId) {
-		return getIsolateState(isolateId).m_frames.get(at);
-	}
-
-	public int getFrameCount(int isolateId) {
-		return getIsolateState(isolateId).m_frames.size();
-	}
-
-	public DStackContext[] getFrames(int isolateId) {
-		ArrayList<DStackContext> frames = getIsolateState(isolateId).m_frames;
-		return frames.toArray(new DStackContext[frames.size()]);
-	}
-
-	private boolean stringsEqual(String s1, String s2) {
-		if (s1 == null)
-			return s2 == null;
-		else
-			return s1.equals(s2);
-	}
-
-	/**
-	 * Correlates the old list of stack frames, from the last time the player
-	 * was suspended, with the new list of stack frames, attempting to guess
-	 * which frames correspond to each other. This is done so that
-	 * Variable.hasValueChanged() can work correctly for local variables.
-	 */
-	private void mapOldFramesToNew(int isolateId) {
-		ArrayList<DStackContext> previousFrames = null;
-		ArrayList<DStackContext> frames = null;
-		Map<Long, DValue> previousValues = null;
-
-		previousFrames = getIsolateState(isolateId).m_previousFrames;
-		frames = getIsolateState(isolateId).m_frames;
-		previousValues = getIsolateState(isolateId).m_previousValues;
-
-		int oldSize = previousFrames.size();
-		int newSize = frames.size();
-
-		// discard all old frames (we will restore some of them below)
-		DValue[] oldFrames = new DValue[oldSize];
-		for (int depth = 0; depth < oldSize; depth++) {
-			oldFrames[depth] = (DValue) previousValues.remove(Value.BASE_ID
-					- depth);
-		}
-
-		// Start at the end of the stack (the stack frame farthest from the
-		// current one), and try to match up stack frames
-		int oldDepth = oldSize - 1;
-		int newDepth = newSize - 1;
-		while (oldDepth >= 0 && newDepth >= 0) {
-			DStackContext oldFrame = previousFrames.get(oldDepth);
-			DStackContext newFrame = frames.get(newDepth);
-			if (oldFrame != null && newFrame != null) {
-				if (stringsEqual(oldFrame.getCallSignature(),
-						newFrame.getCallSignature())) {
-					DValue frame = oldFrames[oldDepth];
-					if (frame != null)
-						previousValues.put(Value.BASE_ID - newDepth, frame);
-				}
-			}
-			oldDepth--;
-			newDepth--;
-		}
-	}
-
-	/**
-	 * Get function is only supported in players that recognize the squelch
-	 * message.
-	 */
-	public boolean isGetSupported() {
-		return m_squelchEnabled;
-	}
-
-
-	/**
-	 * Returns a suspend information on why the Player has suspended execution.
-	 * 
-	 * @return see SuspendReason
-	 */
-	public DSuspendInfo getSuspendInfo(int isolateId) {
-		if (m_isolateState.containsKey(isolateId)) {
-			return m_isolateState.get(isolateId).m_suspendInfo;
-		}
-		return null;
-	}
-
-	public ArrayList<SwfInfo> getIsolateSwfList() {
-		ArrayList<SwfInfo> result = new ArrayList<SwfInfo>();
-
-		for (DManagerIsolateState state : m_isolateState.values()) {
-			if (state.m_swfInfo != null) {
-				result.addAll(state.m_swfInfo);
-			}
-		}
-
-		return result;
-	}
-
-	/**
-	 * Event management related stuff
-	 */
-	public int getEventCount() {
-		synchronized (m_event) {
-			return m_event.size();
-		}
-	}
-
-	/**
-	 * Get an object on which callers can call wait(), in order to wait until
-	 * something happens.
-	 * 
-	 * Note: The object will be signalled when EITHER of the following happens:
-	 * (1) An event is added to the event queue; (2) The network connection is
-	 * broken (and thus there will be no more events).
-	 * 
-	 * @return an object on which the caller can call wait()
-	 */
-	public Object getEventNotifier() {
-		return m_event;
-	}
-
-	public DebugEvent nextEvent() {
-		DebugEvent s = null;
-		synchronized (m_event) {
-			if (m_event.size() > 0)
-				s = m_event.removeFirst();
-		}
-		return s;
-	}
-
-	public synchronized void addEvent(DebugEvent e) {
-		synchronized (m_event) {
-			m_event.add(e);
-			m_event.notifyAll(); // wake up listeners (see getEventNotifier())
-		}
-	}
-
-	/**
-	 * Issued when the socket connection to the player is cut
-	 */
-	public void disconnected() {
-		synchronized (m_event) {
-			m_event.notifyAll(); // see getEventNotifier()
-		}
-	}
-
-	/**
-	 * This is the core routine for decoding incoming messages and deciding what
-	 * should be done with them. We have registered ourself with DProtocol to be
-	 * notified when any incoming messages have been received.
-	 * 
-	 * It is important to note that we should not rely on the contents of the
-	 * message since it may be reused after we exit this method.
-	 */
-	public void messageArrived(DMessage msg, DProtocol which) {
-		/*
-		 * at this point we just open up a big switch statement and walk through
-		 * all possible cases
-		 */
-		int type = msg.getType();
-		// System.out.println("manager msg = "+DMessage.inTypeName(type));
-		int inIsolateId = getInIsolate() != null ? getInIsolate().getId()
-				: Isolate.DEFAULT_ID;
-		if (inIsolateId != Isolate.DEFAULT_ID) {
-			msg.setTargetIsolate(inIsolateId);
-		}
-		switch (type) {
-		case DMessage.InVersion: {
-			long ver = msg.getDWord();
-			m_playerVersion = (int) ver;
-
-			// Newer players will send another byte, which is the pointer size
-			// that is used by the player (in bytes).
-			int pointerSize;
-			if (msg.getRemaining() >= 1)
-				pointerSize = msg.getByte();
-			else
-				pointerSize = 4;
-			DMessage.setSizeofPtr(pointerSize);
-			break;
-		}
-
-		case DMessage.InErrorExecLimit: {
-			handleFaultEvent(new RecursionLimitFault(msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorWith: {
-			handleFaultEvent(new InvalidWithFault(msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorProtoLimit: {
-			handleFaultEvent(new ProtoLimitFault(msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorURLOpen: {
-//			String url = msg.getString();
-//			handleFaultEvent(new InvalidURLFault(url, msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorTarget: {
-//			String name = msg.getString();
-//			handleFaultEvent(new InvalidTargetFault(name, msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorException: {
-			long offset = msg.getDWord();
-			// As of FP9, the player will also send the "toString()" message
-			// of the exception. But for backward compatibility with older
-			// players, we won't assume that that is there.
-			String exceptionMessage;
-			boolean willExceptionBeCaught = false;
-			Value thrown = null;
-			if (msg.getRemaining() > 0) {
-				exceptionMessage = msg.getString();
-				if (msg.getRemaining() > 0) {
-					if (msg.getByte() != 0) {
-						willExceptionBeCaught = (msg.getByte() != 0 ? true
-								: false);
-						msg.getPtr();
-						DVariable thrownVar = extractVariable(msg);
-						thrown = thrownVar.getValue();
-					}
-				}
-			} else {
-				exceptionMessage = ""; //$NON-NLS-1$
-			}
-			ExceptionFault exceptionFault = new ExceptionFault(
-					exceptionMessage, willExceptionBeCaught, thrown, msg.getTargetIsolate());
-			exceptionFault.isolateId = msg.getTargetIsolate();
-			handleFaultEvent(exceptionFault);
-			break;
-		}
-
-		case DMessage.InErrorStackUnderflow: {
-//			long offset = msg.getDWord();
-			handleFaultEvent(new StackUnderFlowFault(msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorZeroDivide: {
-//			long offset = msg.getDWord();
-			handleFaultEvent(new DivideByZeroFault(msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorScriptStuck: {
-			handleFaultEvent(new ScriptTimeoutFault(msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InErrorConsole: {
-			String s = msg.getString();
-			handleFaultEvent(new ConsoleErrorFault(s, msg.getTargetIsolate()));
-			break;
-		}
-
-		case DMessage.InTrace: {
-			String text = msg.getString();
-			addEvent(new TraceEvent(text));
-			break;
-		}
-
-		case DMessage.InSquelch: {
-			long state = msg.getDWord();
-			m_squelchEnabled = (state != 0) ? true : false;
-			break;
-		}
-
-		case DMessage.InParam: {
-			String name = msg.getString();
-			String value = msg.getString();
-
-			// here's where we get movie = URL and password which I'm not sure
-			// what to do with?
-			// System.out.println(name+"="+value);
-			m_parms.put(name, value);
-
-			// if string is a "movie", then this is a URL
-			if (name.startsWith("movie")) //$NON-NLS-1$
-				m_uri = convertToURI(value);
-			break;
-		}
-
-		case DMessage.InPlaceObject: {
-			long objId = msg.getPtr();
-			String path = msg.getString();
-			// m_bag.placeObject((int)objId, path);
-			break;
-		}
-
-		case DMessage.InSetProperty: {
-			long objId = msg.getPtr();
-			int item = msg.getWord();
-			String value = msg.getString();
-			break;
-		}
-
-		case DMessage.InNewObject: {
-			long objId = msg.getPtr();
-			break;
-		}
-
-		case DMessage.InRemoveObject: {
-			long objId = msg.getPtr();
-			// m_bag.removeObject((int)objId);
-			break;
-		}
-
-		case DMessage.InSetVariable: {
-			long objId = msg.getPtr();
-			String name = msg.getString();
-			int dType = msg.getWord();
-			int flags = (int) msg.getDWord();
-			String value = msg.getString();
-
-			// m_bag.createVariable((int)objId, name, dType, flags, value);
-			break;
-		}
-
-		case DMessage.InDeleteVariable: {
-			long objId = msg.getPtr();
-			String name = msg.getString();
-			// m_bag.deleteVariable((int)objId, name);
-			break;
-		}
-
-		case DMessage.InScript: {
-			int module = (int) msg.getDWord();
-			int bitmap = (int) msg.getDWord();
-			String name = msg.getString(); // in "basepath;package;filename"
-											// format
-			String text = msg.getString();
-			int swfIndex = -1;
-			int isolateIndex = -1;
-
-			/* new in flash player 9: player tells us what swf this is for */
-			if (msg.getRemaining() >= 4)
-				swfIndex = (int) msg.getDWord();
-
-			isolateIndex = msg.getTargetIsolate();
-			getOrCreateIsolate(isolateIndex);
-			if (putSource(swfIndex, module, bitmap, name, text,
-					isolateIndex)) {
-				// have we changed the list since last query
-				if (!m_sourceListModified)
-					addEvent(new FileListModifiedEvent());
-
-				m_sourceListModified = true; 
-			}
-			break;
-		}
-
-		case DMessage.InRemoveScript: {
-			long module = msg.getDWord();
-			int isolateId = msg.getTargetIsolate();
-			Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
-			synchronized (source) {
-				if (removeSource((int) module, isolateId)) {
-					// have we changed the list since last query
-					if (!m_sourceListModified)
-						addEvent(new FileListModifiedEvent());
-
-					m_sourceListModified = true; /* current source list is stale */
-				}
-			}
-			break;
-		}
-
-		case DMessage.InAskBreakpoints: {
-			// the player has just loaded a swf and we know the player
-			// has halted, waiting for us to continue. The only caveat
-			// is that it looks like it still does a number of things in
-			// the background which take a few seconds to complete.
-			int targetIsolate = msg.getTargetIsolate();
-			DSuspendInfo iSusInfo = getIsolateState(targetIsolate).m_suspendInfo;
-			if (iSusInfo == null) {
-				iSusInfo = new DSuspendInfo(SuspendReason.ScriptLoaded, 0,
-						0, 0, 0);
-			}
-			break;
-		}
-
-		case DMessage.InBreakAt: {
-			long bp = 0, wideLine = 0, wideModule = 0;
-			if (!m_wideLines) {
-				bp = msg.getDWord();
-			}
-			else {
-				wideModule = msg.getDWord();
-				wideLine = msg.getDWord();
-			}
-			long id = msg.getPtr();
-			String stack = msg.getString();
-			int targetIsolate = msg.getTargetIsolate();
-
-			int module = DLocation.decodeFile(bp);
-			int line = DLocation.decodeLine(bp);
-			if (m_wideLines) {
-				module = (int)wideModule;
-				line = (int)wideLine;
-			}
-			addEvent(new BreakEvent(module, line, targetIsolate));
-			break;
-		}
-
-		case DMessage.InContinue: {
-			/* we are running again so trash all our variable contents */
-			continuing(msg.getTargetIsolate());
-			break;
-		}
-
-		case DMessage.InSetLocalVariables: {
-//			long objId = msg.getPtr();
-			// m_bag.markObjectLocal((int)objId, true);
-			break;
-		}
-
-		case DMessage.InSetBreakpoint: {
-			long count = msg.getDWord();
-			int targetIsolate = msg.getTargetIsolate();
-			while (count-- > 0) {
-				long bp = 0, moduleNumber = 0, lineNumber = 0;
-				if (!m_wideLines) {
-					bp = msg.getDWord();
-				}
-				else {
-					moduleNumber = msg.getDWord();
-					lineNumber = msg.getDWord();
-				}
-
-				int fileId = DLocation.decodeFile(bp);
-				int line = DLocation.decodeLine(bp);
-				if (m_wideLines) {
-					fileId = (int)moduleNumber;
-					line = (int)lineNumber;
-				}
-
-				DModule file = null;
-				file = getSource(fileId, targetIsolate);
-
-				DLocation l = new DLocation(file, line, targetIsolate);
-
-				if (file != null) {
-					addBreakpoint((int) bp, l, targetIsolate);
-				}
-			}
-			break;
-		}
-
-		case DMessage.InNumScript: {
-			/* lets us know how many scripts there are */
-			int num = (int) msg.getDWord();
-			int targetIsolate = msg.getTargetIsolate();
-			DSwfInfo swf;
-
-			/*
-			 * New as of flash player 9: another dword indicating which swf this
-			 * is for. That means we don't have to guess whether this is for an
-			 * old SWF which has just had some more modules loaded, or for a new
-			 * SWF!
-			 */
-			if (msg.getRemaining() >= 4) {
-				int swfIndex = (int) msg.getDWord();
-				swf = getOrCreateSwfInfo(swfIndex, targetIsolate);
-				getIsolateState(targetIsolate).m_lastSwfInfo = swf;
-			} else {
-				/*
-				 * This is not flash player 9 (or it is an early build of fp9).
-				 * 
-				 * We use this message as a trigger that a new swf has been
-				 * loaded, so make sure we are ready to accept the scripts.
-				 */
-				swf = getActiveSwfInfo(targetIsolate);
-			}
-
-			// It is NOT an error for the player to have sent us a new,
-			// different sourceExpectedCount from whatever we had before!
-			// In fact, this happens all the time, whenever a SWF has more
-			// than one ABC.
-			swf.setSourceExpectedCount(num);
-			break;
-		}
-
-		case DMessage.InRemoveBreakpoint: {
-			long count = msg.getDWord();
-			int isolateId = msg.getTargetIsolate();
-			while (count-- > 0) {
-				long bp = msg.getDWord();
-				removeBreakpoint((int) bp, isolateId);
-			}
-			break;
-
-		}
-
-		case DMessage.InBreakAtExt: {
-			long bp = 0, wideLine = 0, wideModule = 0;
-			if (!m_wideLines) {
-				bp = msg.getDWord();
-			}
-			else {
-				wideModule = msg.getDWord();
-				wideLine = msg.getDWord();
-			}
-			long num = msg.getDWord();
-
-			int targetIsolate = msg.getTargetIsolate();
-			// System.out.println(msg.getInTypeName()+",bp="+(bp&0xffff)+":"+(bp>>16));
-			/* we have stack info to store away */
-			clearFrames(targetIsolate); // just in case
-			int depth = 0;
-
-			while (num-- > 0) {
-				long bpi = 0, wideLinei= 0, wideModulei = 0;
-				if (!m_wideLines) {
-					bpi = msg.getDWord();
-				}
-				else {
-					wideModulei = msg.getDWord();
-					wideLinei = msg.getDWord();
-				}
-				long id = msg.getPtr();
-				String stack = msg.getString();
-				int module = DLocation.decodeFile(bpi);
-				int line = DLocation.decodeLine(bpi);
-				if (m_wideLines) {
-					module = (int)wideModulei;
-					line = (int)wideLinei;
-				}
-				DModule m = null;
-				m = getSource(module, targetIsolate);
-				DStackContext c = new DStackContext(module, line, m, id, stack,
-						depth, targetIsolate);
-				// If addFrame() returns false, that means it chose to ignore
-				// this
-				// frame, so we do NOT want to increment our depth for the next
-				// time through the loop. If it returns true, then we do want
-				// to.
-				if (addFrame(c, targetIsolate))
-					++depth;
-				// System.out.println("   this="+id+",@"+(bpi&0xffff)+":"+(bpi>>16)+",stack="+stack);
-			}
-			mapOldFramesToNew(targetIsolate);
-			if (targetIsolate != Isolate.DEFAULT_ID) {
-				// ask for isolate id if it is present
-				appendIsolateInfoToFrame(targetIsolate);
-
-			}
-			break;
-
-		}
-
-		case DMessage.InFrame: {
-			// For InFrame the first element is really our frame id
-			DValue frame = null;
-			DVariable child = null;
-			ArrayList<DVariable> v = new ArrayList<DVariable>();
-			ArrayList<DVariable> registers = new ArrayList<DVariable>();
-			int targetIsolate = msg.getTargetIsolate();
-			int depth = (int) msg.getDWord(); // depth of frame
-
-			// make sure we have a valid depth
-			if (depth > -1) {
-				// first thing is number of registers
-				int num = (int) msg.getDWord();
-				for (int i = 0; i < num; i++)
-					registers.add(extractRegister(msg, i + 1));
-			}
-
-			int currentArg = -1;
-			boolean gettingScopeChain = false;
-
-			// then our frame itself
-			while (msg.getRemaining() > 0) {
-				long frameId = msg.getPtr();
-
-				if (frame == null) {
-					frame = getOrCreateValue(frameId, targetIsolate);
-					extractVariable(msg); // put the rest of the info in the
-											// trash
-				} else {
-					child = extractVariable(msg);
-					if (currentArg == -1
-							&& child.getName().equals(ARGUMENTS_MARKER)) {
-						currentArg = 0;
-						gettingScopeChain = false;
-					} else if (child.getName().equals(SCOPE_CHAIN_MARKER)) {
-						currentArg = -1;
-						gettingScopeChain = true;
-					} else if (currentArg >= 0) {
-						// work around a compiler bug: If the variable's name is
-						// "undefined",
-						// then change its name to "_argN", where "N" is the
-						// argument index,
-						// e.g. _arg1, _arg2, etc.
-						++currentArg;
-						if (child.getName().equals("undefined")) //$NON-NLS-1$
-							child.setName("_arg" + currentArg); //$NON-NLS-1$
-					}
-
-					// All args and locals get added as "children" of
-					// the frame; but scope chain entries do not.
-					if (!gettingScopeChain)
-						addVariableMember(frameId, child, targetIsolate);
-
-					// Everything gets added to the ordered list of
-					// variables that came in.
-					v.add(child);
-				}
-			}
-
-			// let's transfer our newly gained knowledge into the stack context
-			if (depth == 0)
-				populateRootNode(frame, v, targetIsolate);
-			else
-				populateFrame(depth, v, targetIsolate);
-
-			break;
-		}
-
-		case DMessage.InOption: {
-			String s = msg.getString();
-			String v = msg.getString();
-			m_options.put(s, v);
-			break;
-		}
-
-		case DMessage.InGetVariable: {
-			// For InGetVariable the first element is the original entity we
-			// requested
-			DValue parent = null;
-			DVariable child = null;
-			String definingClass = null;
-			int level = 0;
-			int targetIsolate = msg.getTargetIsolate();
-			int highestLevelWithMembers = -1;
-			List<String> classes = new ArrayList<String>();
-
-			while (msg.getRemaining() > 0) {
-				long parentId = msg.getPtr();
-
-				// build or get parent node
-				if (parent == null) {
-					String name = msg.getString();
-
-					// pull the contents of the node which normally are disposed
-					// of except if we did a 0,name call
-					getIsolateState(targetIsolate).m_lastInGetVariable = extractVariable(msg, name); 
-
-					parent = getOrCreateValue(parentId, targetIsolate);
-				} else {
-					// extract the child and add it to the parent.
-					child = extractVariable(msg);
-					if (showMember(child)) {
-						if (child.isAttributeSet(VariableAttribute.IS_DYNAMIC)) {
-							// Dynamic attributes always come in marked as a
-							// member of
-							// class "Object"; but to the user, it makes more
-							// sense to
-							// consider them as members of the topmost class.
-							if (classes.size() > 0) {
-								child.setDefiningClass(0, classes.get(0));
-								highestLevelWithMembers = Math.max(
-										highestLevelWithMembers, 0);
-							}
-						} else {
-							child.setDefiningClass(level, definingClass);
-							if (definingClass != null) {
-								highestLevelWithMembers = Math.max(
-										highestLevelWithMembers, level);
-							}
-						}
-						addVariableMember(parent.getId(), child, targetIsolate);
-					} else {
-						if (isTraits(child)) {
-							definingClass = child.getQualifiedName();
-							level = classes.size();
-
-							// If the traits name end with "$", then it
-							// represents a class object --
-							// in other words, the variables inside it are
-							// static variables of that
-							// class. In that case, we need to juggle the
-							// information. For example,
-							// if we are told that a variable is a member of
-							// "MyClass$", we actually
-							// store it into the information for "MyClass".
-							if (definingClass.endsWith("$")) { //$NON-NLS-1$
-								String classWithoutDollar = definingClass
-										.substring(0,
-												definingClass.length() - 1);
-								int indexOfClass = classes
-										.indexOf(classWithoutDollar);
-								if (indexOfClass != -1) {
-									level = indexOfClass;
-									definingClass = classWithoutDollar;
-								}
-							}
-
-							// It wasn't static -- so, add this class to the end
-							// of the list of classes
-							if (level == classes.size()) {
-								classes.add(definingClass);
-							}
-						}
-					}
-				}
-			}
-
-			if (parent != null && parent.getClassHierarchy(true) == null) {
-				parent.setClassHierarchy(
-						classes.toArray(new String[classes.size()]),
-						highestLevelWithMembers + 1);
-			}
-
-			break;
-		}
-
-		case DMessage.InWatch: // for AS2; sends 16-bit ID field
-		case DMessage.InWatch2: // for AS3; sends 32-bit ID field
-		{
-			// This message is sent whenever a watchpoint is added
-			// modified or removed.
-			//
-			// For an addition, flags will be non-zero and
-			// success will be true.
-			//
-			// For a modification flags will be non-zero.
-			// and oldFlags will be non-zero and success
-			// will be true. Additionally oldFlags will not
-			// be equal to flags.
-			//
-			// For a removal flags will be zero. oldFlags
-			// will be non-zero.
-			//
-			// flags identifies the type of watchpoint added,
-			// see WatchKind.
-			//
-			// success indicates whether the operation was successful
-			//
-			// request. It will be associated with the watchpoint.
-			int success = msg.getWord();
-			int oldFlags = msg.getWord();
-			int oldTag = msg.getWord();
-			int flags = msg.getWord();
-			int tag = msg.getWord();
-			// for AS2, the ID came in above as a Word. For AS3, the above value
-			// is
-			// bogus, and it has been sent again as a DWord.
-			long id = ((type == DMessage.InWatch2) ? msg.getPtr() : msg
-					.getWord());
-			String name = msg.getString();
-			int targetIsolate = msg.getTargetIsolate();
-
-			if (success != 0) {
-				if (flags == 0) {
-					removeWatchpoint(oldTag, targetIsolate);
-				} else {
-					// modification or addition is the same to us
-					// a new watch is created and added into the table
-					// while any old entry if it exists is removed.
-					removeWatchpoint(oldTag, targetIsolate);
-					DWatch w = new DWatch(id, name, flags, tag, targetIsolate);
-					addWatchpoint(w, targetIsolate);
-				}
-			}
-			break;
-		}
-
-		case DMessage.InGetSwf: {
-			// we only house the swf temporarily, PlayerSession then
-			// pieces it back into swfinfo record. Also, we don't
-			// send any extra data in the message so that we need not
-			// copy the bytes.
-			m_swf = msg.getData();
-			break;
-		}
-
-		case DMessage.InGetSwd: {
-			// we only house the swd temporarily, PlayerSession then
-			// pieces it back into swfinfo record.
-			m_swd = msg.getData();
-			break;
-		}
-
-		case DMessage.InBreakReason: {
-			// the id map 1-1 with out SuspendReason interface constants
-			int suspendReason = msg.getWord();
-			int suspendPlayer = msg.getWord(); // item index of player
-			int breakOffset = (int) msg.getDWord(); // current script offset
-			int prevBreakOffset = (int) msg.getDWord(); // prev script offset
-			int nextBreakOffset = (int) msg.getDWord(); // next script offset
-			int targetIsolate = msg.getTargetIsolate();
-
-			getIsolateState(targetIsolate).m_suspendInfo = new DSuspendInfo(
-					suspendReason, suspendPlayer, breakOffset,
-					prevBreakOffset, nextBreakOffset);
-
-			// augment the current frame with this information. It
-			// should work ok since we only get this message after a
-			// InBreakAtExt message
-			try {
-				DStackContext c = getFrame(0, targetIsolate);
-				c.setOffset(breakOffset);
-				c.setSwfIndex(suspendPlayer);
-			} catch (Exception e) {
-				if (Trace.error) {
-					Trace.trace("Oh my god, gag me with a spoon...getFrame(0) call failed"); //$NON-NLS-1$
-					e.printStackTrace();
-				}
-			}
-			break;
-		}
-
-			// obtain raw action script byte codes
-		case DMessage.InGetActions: {
-			int item = msg.getWord();
-			int rsvd = msg.getWord();
-			int at = (int) msg.getDWord();
-			int len = (int) msg.getDWord();
-			int i = 0;
-
-			m_actions = (len <= 0) ? null : new byte[len];
-			while (len-- > 0)
-				m_actions[i++] = (byte) msg.getByte();
-
-			break;
-		}
-
-			// obtain data about a SWF
-		case DMessage.InSwfInfo: {
-			int count = msg.getWord();
-			int targetIsolate = msg.getTargetIsolate();
-			for (int i = 0; i < count; i++) {
-				long index = msg.getDWord();
-				long id = msg.getPtr();
-
-				// get it
-				DSwfInfo info = null;
-
-				info = getOrCreateSwfInfo((int) index, targetIsolate);
-				getIsolateState(targetIsolate).m_lastSwfInfo = info;
-
-				// remember which was last seen
-
-				if (id != 0) {
-					boolean debugComing = (msg.getByte() == 0) ? false : true;
-					byte vmVersion = (byte) msg.getByte(); // AS vm version
-															// number (1 = avm+,
-															// 0 == avm-)
-					int rsvd1 = msg.getWord();
-
-					long swfSize = msg.getDWord();
-					long swdSize = msg.getDWord();
-					long scriptCount = msg.getDWord();
-					long offsetCount = msg.getDWord();
-					long breakpointCount = msg.getDWord();
-
-					long port = msg.getDWord();
-					String path = msg.getString();
-					String url = msg.getString();
-					String host = msg.getString();
-					Map<Long, Integer> local2global = new HashMap<Long, Integer>();
-					int minId = Integer.MAX_VALUE;
-					int maxId = Integer.MIN_VALUE;
-					// now we read in the swd debugging map (which provides
-					// local to global mappings of the script ids
-					/* anirudhs: Parsing this is only necessary if we are in
-					   AVM1. (See PlayerSession::run(), there is a vmVersion 
-					   check before calling parseSwfSwd(). */ 
-					if (swdSize > 0) {
-						long num = msg.getDWord();
-						for (int j = 0; j < num; j++) {
-							if (msg.getRemaining() < DMessage.getSizeofPtr()) {
-								/* The SWD debugging map sent out by 
-								 * AVM2 often runs short usually in 64-bit
-								 * debug player. We can stop with what we know
-								 * and move on.
-								 */
-								break;
-							}
-							long local = msg.getPtr();
-							int global = (int) msg.getDWord();
-							local2global.put(local, global);
-							minId = (global < minId) ? global : minId;
-							maxId = (global > maxId) ? global : maxId;
-						}
-					}
-					// If its a new record then the swf size would have been
-					// unknown at creation time
-					boolean justCreated = (info.getSwfSize() == 0);
-
-					// if we are a avm+ engine then we don't wait for the swd to
-					// load
-					if (vmVersion > 0) {
-						debugComing = false;
-						info.setVmVersion(vmVersion);
-						info.setPopulated(); // added by mmorearty on 9/5/05 for
-												// RSL debugging
-					}
-
-					// update this swfinfo with the lastest data
-					info.freshen(id, path, url, host, port, debugComing,
-							swfSize, swdSize, breakpointCount, offsetCount,
-							scriptCount, local2global, minId, maxId);
-					// now tie any scripts that have been loaded into this
-					// swfinfo object
-					tieScriptsToSwf(info, targetIsolate);
-
-					// notify if its newly created
-					if (justCreated)
-						addEvent(new SwfLoadedEvent(id, (int) index, path, url,
-								host, port, swfSize));
-				} else {
-					// note our state before marking it
-					boolean alreadyUnloaded = info.isUnloaded();
-
-					// clear it out
-					info.setUnloaded();
-
-					// notify if this information is new.
-					if (!alreadyUnloaded)
-						addEvent(new SwfUnloadedEvent(info.getId(),
-								info.getPath(), (int) index));
-				}
-				// System.out.println("[SWFLOAD] Loaded "+path+", size="+swfSize+", scripts="+scriptCount);
-			}
-			break;
-		}
-
-			// obtain the constant pool of some player
-		case DMessage.InConstantPool: {
-			int item = msg.getWord();
-			int count = (int) msg.getDWord();
-
-			String[] pool = new String[count];
-			for (int i = 0; i < count; i++) {
-				long id = msg.getPtr();
-				DVariable var = extractVariable(msg);
-
-				// we only need the contents of the variable
-				pool[i] = var.getValue().getValueAsString();
-			}
-			m_lastConstantPool = pool;
-			break;
-		}
-
-			// obtain one or more function name line number mappings.
-		case DMessage.InGetFncNames: {
-			long id = msg.getDWord(); // module id
-			long count = msg.getDWord(); // number of entries
-
-			// get the DModule
-			DModule m = getSource((int) id, msg.getTargetIsolate());
-			if (m != null) {
-				for (int i = 0; i < count; i++) {
-					int offset = (int) msg.getDWord();
-					int firstLine = (int) msg.getDWord();
-					int lastLine = (int) msg.getDWord();
-					String name = msg.getString();
-
-					// now add the entries
-					m.addLineFunctionInfo(offset, firstLine, lastLine, name);
-				}
-			}
-			break;
-		}
-
-		case DMessage.InCallFunction:
-		case DMessage.InBinaryOp: {
-			// For InCallFunction the first element is the original function we
-			// requested
-			DValue parent = null;
-			int targetIsolate = msg.getTargetIsolate();
-			DVariable child = null;
-			String definingClass = null;
-			int level = 0;
-			int highestLevelWithMembers = -1;
-			List<String> classes = new ArrayList<String>();
-
-			if (type == DMessage.InBinaryOp)
-				msg.getDWord(); // id
-
-			while (msg.getRemaining() > 0) {
-				long parentId = msg.getPtr();
-
-				// build or get parent node
-				if (parent == null) {
-					String name = msg.getString();
-
-					// pull the contents of the node which normally are disposed
-					// of except if we did a 0,name call
-					DVariable var = extractVariable(msg, name);
-					if (type == DMessage.InCallFunction) {
-						getIsolateState(targetIsolate).m_lastInCallFunction = var;
-					}
-					else {
-						getIsolateState(targetIsolate).m_lastInBinaryOp = var;
-					}
-
-					parent = getOrCreateValue(parentId, targetIsolate);
-				} else {
-					// extract the child and add it to the parent.
-					child = extractVariable(msg);
-					if (showMember(child)) {
-						if (child.isAttributeSet(VariableAttribute.IS_DYNAMIC)) {
-							// Dynamic attributes always come in marked as a
-							// member of
-							// class "Object"; but to the user, it makes more
-							// sense to
-							// consider them as members of the topmost class.
-							if (classes.size() > 0) {
-								child.setDefiningClass(0, classes.get(0));
-								highestLevelWithMembers = Math.max(
-										highestLevelWithMembers, 0);
-							}
-						} else {
-							child.setDefiningClass(level, definingClass);
-							if (definingClass != null) {
-								highestLevelWithMembers = Math.max(
-										highestLevelWithMembers, level);
-							}
-						}
-						addVariableMember(parent.getId(), child, targetIsolate);
-					} else {
-						if (isTraits(child)) {
-							definingClass = child.getQualifiedName();
-							level = classes.size();
-
-							// If the traits name end with "$", then it
-							// represents a class object --
-							// in other words, the variables inside it are
-							// static variables of that
-							// class. In that case, we need to juggle the
-							// information. For example,
-							// if we are told that a variable is a member of
-							// "MyClass$", we actually
-							// store it into the information for "MyClass".
-							if (definingClass.endsWith("$")) { //$NON-NLS-1$
-								String classWithoutDollar = definingClass
-										.substring(0,
-												definingClass.length() - 1);
-								int indexOfClass = classes
-										.indexOf(classWithoutDollar);
-								if (indexOfClass != -1) {
-									level = indexOfClass;
-									definingClass = classWithoutDollar;
-								}
-							}
-
-							// It wasn't static -- so, add this class to the end
-							// of the list of classes
-							if (level == classes.size()) {
-								classes.add(definingClass);
-							}
-						}
-					}
-				}
-			}
-
-			if (parent != null && parent.getClassHierarchy(true) == null) {
-				parent.setClassHierarchy(
-						classes.toArray(new String[classes.size()]),
-						highestLevelWithMembers + 1);
-			}
-
-			break;
-		}
-
-		case DMessage.InIsolateCreate: {
-			long id = msg.getDWord();
-			isolateCreate((int) id);
-
-			break;
-		}
-
-		case DMessage.InIsolateExit: {
-			long id = msg.getDWord();
-			// Implementation dependency on runtime in case id mechanism is
-			// changed:
-			// Typecast id into an int.
-			DIsolate isolate = removeIsolate((int) id);
-			addEvent(new IsolateExitEvent(isolate));
-
-			break;
-		}
-
-		case DMessage.InIsolateEnumerate: {
-			// clearIsolates();
-			//
-			// long lenIsolate = msg.getDWord();
-			//
-			// for ( int i = 0; i < lenIsolate; i++) {
-			// long id = msg.getDWord();
-			// addIsolate(new DIsolate(id));
-			// }
-
-			break;
-		}
-
-		case DMessage.InSetActiveIsolate: {
-			long id = msg.getDWord();
-
-			boolean success = msg.getByte() != 0 ? true : false;
-
-			/** Ignore inset since we don't wait
-			 * for response anymore.
-			 */
-//			synchronized (m_activeIsolateLock) {
-//				if (success) {
-//					int at = findIsolate((int) id);
-//					if (at > -1)
-//						setActiveIsolate(getIsolate(at));
-//				} else {
-//					setActiveIsolate(null);
-//				}
-//			}
-
-			break;
-		}
-
-		case DMessage.InIsolate: {
-			long id = msg.getDWord();
-			synchronized (m_inIsolateLock) {
-				int at = findIsolate((int) id);
-				if (at != -1)
-					setInIsolate(getIsolate(at));
-				else {
-					if (id != Isolate.DEFAULT_ID) {
-						setInIsolate(isolateCreate((int) id));
-					} else
-						setInIsolate(null);
-				}
-			}
-			break;
-		}
-		
-		case DMessage.InSetExceptionBreakpoint: {
-
-			int result = msg.getWord();
-			String exceptionBP = msg.getString();
-			int remaining = msg.getRemaining();
-			break;
-		}
-
-		case DMessage.InRemoveExceptionBreakpoint: {
-			int result = msg.getWord();
-			String exceptionBP = msg.getString();
-			int remaining = msg.getRemaining();
-			break;
-		}
-
-		default: {
-			break;
-		}
-		}
-	}
-
-	private DIsolate isolateCreate(int id) {
-		int idx = findIsolate(id);
-		if (idx == -1) {
-			DIsolate isolate = new DIsolate(id);
-			addIsolate(isolate);
-			setInIsolate(isolate);
-			addEvent(new IsolateCreateEvent(isolate));
-			return isolate;
-		}
-		return getIsolate(idx);
-
-	}
-
-	private void appendIsolateInfoToFrame(int isolateid) {
-		// augment the current frame with this information. It
-		// should work ok since we only get this message after a
-		// InBreakAtExt message
-		try {
-			DStackContext c = getFrame(0, isolateid);
-			c.setIsolateId(isolateid);
-		} catch (Exception e) {
-			if (Trace.error) {
-				Trace.trace("Oh my god, gag me with a spoon...getFrame(0) call failed"); //$NON-NLS-1$
-				e.printStackTrace();
-			}
-		}
-	}
-
-	/**
-	 * Returns whether a given child member should be shown, or should be
-	 * filtered out.
-	 */
-	private boolean showMember(DVariable child) {
-		if (isTraits(child))
-			return false;
-		return true;
-	}
-
-	/**
-	 * Returns whether this is not a variable at all, but is instead a
-	 * representation of a "traits" object. A "traits" object is the Flash
-	 * player's way of describing one class.
-	 */
-	private boolean isTraits(DVariable variable) {
-		Value value = variable.getValue();
-		if (value.getType() == VariableType.UNKNOWN
-				&& Value.TRAITS_TYPE_NAME.equals(value.getTypeName())) {
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Here's where some ugly stuff happens. Since our context contains more
-	 * info than what's contained within the stackcontext, we augment it with
-	 * the variables. Also, we build up a list of variables that appears under
-	 * root, that can be accessed without further qualification; this includes
-	 * args, locals and _global.
-	 */
-	void populateRootNode(DValue frame, ArrayList<DVariable> orderedChildList,
-			int isolateId) {
-		// first populate the stack node with children
-		populateFrame(0, orderedChildList, isolateId);
-
-		/**
-		 * We mark it as members obtained so that we don't go to the player and
-		 * request it, which would be bad, since its our artifical creation.
-		 */
-		DValue base = getOrCreateValue(Value.BASE_ID, isolateId);
-		base.setMembersObtained(true);
-
-		/**
-		 * Technically, we don't need to create the following nodes, but we like
-		 * to give them nice type names
-		 */
-
-		// now let's create a _global node and attach it to base
-	}
-
-	/**
-	 * We are done, so let's look for a number of special variables, since our
-	 * frame comes in 3 pieces. First off is a "this" pointer, followed by a
-	 * "$arguments" dummy node, followed by a "super" which marks the end of the
-	 * arguments.
-	 * 
-	 * All of this stuff gets pulled apart after we build the frame node.
-	 */
-	void populateFrame(int depth, ArrayList<DVariable> frameVars, int isolateId) {
-		// get our stack context
-		DStackContext context = null;
-		boolean inArgs = false;
-		int nArgs = -1;
-		boolean inScopeChain = false;
-
-		// create a root node for each stack frame; first is at BASE_ID
-		DValue root = getOrCreateValue(Value.BASE_ID - depth, isolateId);
-
-		if (depth < getFrameCount(isolateId))
-			context = getFrame(depth, isolateId);
-
-		// trim all current args from this context
-		if (context != null)
-			context.removeAllVariables();
-
-		// use the ordered child list
-		Iterator<DVariable> e = frameVars.iterator();
-		while (e.hasNext()) {
-			DVariable v = e.next();
-			String name = v.getName();
-
-			// let's clear a couple of attributes that may get in our way
-			v.clearAttribute(VariableAttribute.IS_LOCAL);
-			v.clearAttribute(VariableAttribute.IS_ARGUMENT);
-			if (name.equals("this")) //$NON-NLS-1$
-			{
-				if (context != null)
-					context.setThis(v);
-
-				// from our current frame, put a pseudo this entry into the
-				// cache and hang it off base, mark it as an implied arg
-				v.setAttribute(VariableAttribute.IS_ARGUMENT);
-				addVariableMember(root, v, isolateId);
-
-				// also add this variable under THIS_ID
-				if (depth == 0)
-					putValue(Value.THIS_ID, (DValue) v.getValue(), isolateId);
-			} else if (name.equals("super")) //$NON-NLS-1$
-			{
-				// we are at the end of the arg list and let's make super part
-				// of global
-				inArgs = false;
-			} else if (name.equals(ARGUMENTS_MARKER)) {
-				inArgs = true;
-
-				// see if we can extract an arg count from this variable
-				try {
-					nArgs = ((Number) (v.getValue().getValueAsObject()))
-							.intValue();
-				} catch (NumberFormatException nfe) {
-				}
-			} else if (name.equals(SCOPE_CHAIN_MARKER)) {
-				inArgs = false;
-				inScopeChain = true;
-			} else {
-				// add it to our root, marking it as an arg if we know,
-				// otherwise local
-				if (inArgs) {
-					v.setAttribute(VariableAttribute.IS_ARGUMENT);
-
-					if (context != null)
-						context.addArgument(v);
-
-					// decrement arg count if we have it
-					if (nArgs > -1) {
-						if (--nArgs <= 0)
-							inArgs = false;
-					}
-				} else if (inScopeChain) {
-					if (context != null)
-						context.addScopeChainEntry(v);
-				} else {
-					v.setAttribute(VariableAttribute.IS_LOCAL);
-					if (context != null)
-						context.addLocal(v);
-				}
-
-				// add locals and arguments to root
-				if (!inScopeChain)
-					addVariableMember(root, v, isolateId);
-			}
-		}
-	}
-
-	/**
-	 * Map DMessage / Player attributes to VariableAttributes
-	 */
-	int toAttributes(int pAttr) {
-		int attr = pAttr; /* 1-1 mapping */
-		return attr;
-	}
-
-	DVariable extractVariable(DMessage msg) {
-		DVariable v = extractVariable(msg, msg.getString());
-		return v;
-	}
-
-	/**
-	 * Build a variable based on the information we can extract from the
-	 * messsage
-	 */
-	DVariable extractVariable(DMessage msg, String name) {
-		int oType = msg.getWord();
-		int flags = (int) msg.getDWord();
-		return extractAtom(msg, name, oType, flags);
-	}
-
-	/**
-	 * Extracts an builds a register variable
-	 */
-	DVariable extractRegister(DMessage msg, int number) {
-		int oType = msg.getWord();
-		return extractAtom(msg, "$" + number, oType, 0); //$NON-NLS-1$
-	}
-
-	/**
-	 * Does the job of pulling together a variable based on the type of object
-	 * encountered.
-	 */
-	DVariable extractAtom(DMessage msg, String name, int oType, int flags) {
-		int vType = VariableType.UNKNOWN;
-		Object value = null;
-		String typeName = ""; //$NON-NLS-1$
-		String className = ""; //$NON-NLS-1$
-		boolean isPrimitive = false;
-
-		/* now we vary depending upon type */
-		switch (oType) {
-		case DMessage.kNumberType: {
-			String s = msg.getString();
-			double dval = Double.NaN;
-			try {
-				dval = Double.parseDouble(s);
-			} catch (NumberFormatException nfe) {
-			}
-
-			value = new Double(dval);
-			isPrimitive = true;
-			break;
-		}
-
-		case DMessage.kBooleanType: {
-			int bval = msg.getByte();
-			value = new Boolean((bval == 0) ? false : true);
-			isPrimitive = true;
-			break;
-		}
-
-		case DMessage.kStringType: {
-			String s = msg.getString();
-
-			value = s;
-			isPrimitive = true;
-			break;
-		}
-
-		case DMessage.kObjectType:
-		case DMessage.kNamespaceType: {
-			long oid = msg.getPtr();
-			long cType = (oid == -1) ? 0 : msg.getDWord();
-			int isFnc = (oid == -1) ? 0 : msg.getWord();
-			int rsvd = (oid == -1) ? 0 : msg.getWord();
-			typeName = (oid == -1) ? "" : msg.getString(); //$NON-NLS-1$
-			/* anirudhs: Date fix for expression evaluation */
-			/* Player 10.2 onwards, the typename for Date comes
-			 * as <dateformat>@oid where example of date format is:
-			 * <Tue Feb 7 15:41:16 GMT+0530 2012>
-			 * We have to fix the typename to how it originally
-			 * appeared prior to this bug which is Date@oid.
-			 * Note that even player 9 did not send oType as 11,
-			 * instead oType was Object where as typeName was Date.
-			 * What the customer sees is expression evaluation will
-			 * always try to interpret date as a number. (ECMA.defaultValue
-			 * has a check for preferredType of Date to be String) 
-			 */
-			if (typeName.startsWith("<")) { //$NON-NLS-1$
-				int atIndex = typeName.indexOf('@');
-				String dateVal = typeName;
-				if (atIndex > -1) {
-					dateVal = typeName.substring(0, atIndex);
-				}
-				SimpleDateFormat dFormat = new SimpleDateFormat("<EEE MMM d HH:mm:ss 'GMT'z yyyy>"); //$NON-NLS-1$
-				try {
-					Date dateObj = dFormat.parse(dateVal);
-					if (dateObj != null && dateObj.getTime() != 0) {
-						oType = DMessage.kDateType;
-						typeName = "Date" + typeName.substring(atIndex); //$NON-NLS-1$
-					}
-				}
-				catch (ParseException e) {
-					//ignore
-				}
-			}
-			
-			className = DVariable.classNameFor(cType, false);
-			value = new Long(oid);
-			vType = (isFnc == 0) ? VariableType.OBJECT : VariableType.FUNCTION;
-			break;
-		}
-
-		case DMessage.kMovieClipType: {
-			long oid = msg.getPtr();
-			long cType = (oid == -1) ? 0 : msg.getDWord();
-			long rsvd = (oid == -1) ? 0 : msg.getDWord();
-			typeName = (oid == -1) ? "" : msg.getString(); //$NON-NLS-1$
-			className = DVariable.classNameFor(cType, true);
-
-			value = new Long(oid);
-			vType = VariableType.MOVIECLIP;
-			break;
-		}
-
-		case DMessage.kNullType: {
-			value = null;
-			isPrimitive = true;
-			break;
-		}
-
-		case DMessage.kUndefinedType: {
-			value = Value.UNDEFINED;
-			isPrimitive = true;
-			break;
-		}
-
-		case DMessage.kTraitsType: {
-			// This one is special: When passed to the debugger, it indicates
-			// that the "variable" is not a variable at all, but rather is a
-			// class name. For example, if class Y extends class X, then
-			// we will send a kDTypeTraits for class Y; then we'll send all the
-			// members of class Y; then we'll send a kDTypeTraits for class X;
-			// and then we'll send all the members of class X. This is only
-			// used by the AVM+ debugger.
-			vType = VariableType.UNKNOWN;
-			typeName = Value.TRAITS_TYPE_NAME;
-			break;
-		}
-
-		case DMessage.kReferenceType:
-		case DMessage.kArrayType:
-		case DMessage.kObjectEndType:
-		case DMessage.kStrictArrayType:
-		case DMessage.kDateType:
-		case DMessage.kLongStringType:
-		case DMessage.kUnsupportedType:
-		case DMessage.kRecordSetType:
-		case DMessage.kXMLType:
-		case DMessage.kTypedObjectType:
-		case DMessage.kAvmPlusObjectType:
-		default: {
-			// System.out.println("<unknown>");
-			break;
-		}
-		}
-		int isolateId = msg.getTargetIsolate();
-		// create the variable based on the content we received.
-		DValue valueObject = null;
-
-		// If value is a Long, then it is the ID of a non-primitive object;
-		// look up to see if we already have that object in our cache. If
-		// it is already in our cache, then we just want to modify the
-		// existing object with the new values.
-		if (value instanceof Long) {
-			valueObject = getValue(((Long) value).longValue(), isolateId);
-		}
-
-		if (valueObject == null) {
-			// we didn't find it in the cache, so make a new Value
-
-			if (isPrimitive) {
-				valueObject = DValue.forPrimitive(value, isolateId);
-				valueObject.setAttributes(toAttributes(flags));
-			} else {
-				valueObject = new DValue(vType, typeName, className,
-						toAttributes(flags), value, isolateId);
-			}
-
-			if (value instanceof Long
-					&& (toAttributes(flags) & VariableAttribute.HAS_GETTER) == 0)
-				putValue(((Long) value).longValue(), valueObject, isolateId);
-		} else {
-			// we found it in the cache, so just modify the properties
-			// of the old Value
-
-			if (isPrimitive) {
-				// figure out some of the properties
-				DValue temp = DValue.forPrimitive(value, isolateId);
-				vType = temp.getType();
-				typeName = temp.getTypeName();
-				className = temp.getClassName();
-			}
-
-			valueObject.setType(vType);
-			valueObject.setTypeName(typeName);
-			valueObject.setClassName(className);
-			valueObject.setAttributes(toAttributes(flags));
-			valueObject.setValue(value);
-		}
-		if (valueObject != null) {
-			valueObject.setIsolateId(isolateId);
-		}
-		DVariable var = new DVariable(name, valueObject, isolateId);
-		return var;
-	}
-
-	/**
-	 * The player sends us a URI using '|' instead of ':'
-	 */
-	public static String convertToURI(String playerURL) {
-		int index = playerURL.indexOf('|');
-		StringBuilder sb = new StringBuilder(playerURL);
-		while (index > 0) {
-			sb.setCharAt(index, ':');
-			index = playerURL.indexOf('|', index + 1);
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * Tell us that we are about to start executing user code in the player,
-	 * such as a getter, a setter, or a function call. If a FaultEvent comes in
-	 * while the code is executing, it is not added to the event queue in the
-	 * normal way -- instead, it is saved, and is returned when
-	 * endPlayerCodeExecution() is called.
-	 */
-	public void beginPlayerCodeExecution(int isolateId) {
-		DManagerIsolateState state = getIsolateState(isolateId);
-		state.m_executingPlayerCode = true;
-		state.m_faultEventDuringPlayerCodeExecution = null;
-	}
-
-	/**
-	 * Informs us that user code is no longer executing, and returns the fault,
-	 * if any, which occurred while the code was executing.
-	 */
-	public FaultEvent endPlayerCodeExecution(int isolateId) {
-		DManagerIsolateState state = getIsolateState(isolateId);
-		state.m_executingPlayerCode = false;
-		FaultEvent e = state.m_faultEventDuringPlayerCodeExecution;
-		state.m_faultEventDuringPlayerCodeExecution = null;
-		return e;
-	}
-
-	/**
-	 * When we've just received any FaultEvent from the player, this function
-	 * gets called. If a getter/setter is currently executing, we'll save the
-	 * fault for someone to get later by calling endGetterSetter(). Otherwise,
-	 * normal code execution is taking place, so we'll add the event to the
-	 * event queue.
-	 */
-	private void handleFaultEvent(FaultEvent faultEvent) {
-		DManagerIsolateState isolateState = getIsolateState(faultEvent.isolateId);
-		boolean executingPlayerCode = isolateState.m_executingPlayerCode;
-		if (executingPlayerCode) {
-			FaultEvent faultEventDuringPlayerCodeExecution = isolateState.m_faultEventDuringPlayerCodeExecution;
-			
-			if (faultEventDuringPlayerCodeExecution == null) // only save the
-																// first fault
-			{
-				// save the event away so that when someone later calls
-				// endGetterSetter(), we can return the fault that
-				// occurred
-				isolateState.m_faultEventDuringPlayerCodeExecution = faultEvent;
-			}
-		} else {
-			// regular code is running; so post the event to the
-			// event queue which the client debugger will see
-			addEvent(faultEvent);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see flash.tools.debugger.SourceLocator#locateSource(java.lang.String,
-	 * java.lang.String, java.lang.String)
-	 */
-	public InputStream locateSource(String path, String pkg, String name) {
-		if (m_sourceLocator != null)
-			return m_sourceLocator.locateSource(path, pkg, name);
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see flash.tools.debugger.SourceLocator#getChangeCount()
-	 */
-	public int getChangeCount() {
-		if (m_sourceLocator != null)
-			return m_sourceLocator.getChangeCount();
-
-		return 0;
-	}
-
-	/**
-	 * Returns the value of a Flash Player option that was requested by
-	 * OutGetOption and returned by InOption.
-	 * 
-	 * @param optionName
-	 *            the name of the option
-	 * @return its value, or null
-	 */
-	public String getOption(String optionName) {
-		return m_options.get(optionName);
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessage.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessage.java
deleted file mode 100644
index a0658a5..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessage.java
+++ /dev/null
@@ -1,1016 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.lang.ArrayIndexOutOfBoundsException;
-import java.io.UnsupportedEncodingException;
-
-import flash.tools.debugger.Isolate;
-import flash.util.FieldFormat;
-import flash.util.Trace;
-
-/**
- * DMessage.java
- *
- *    Wraps the contents of a specific message and provides a set of APIs that allow for
- *    typed extraction of fields within the message.
- *
- *    No interpretation of the messages contents is performed, this is left to the
- *    user of this class.  The code was constructed in this fashion, so that it more
- *    closely mimics the DataReader/DataWriter classes used in the Player code.
- *
- *    The type of the message should be one of the InXXX or OutXXX constant integers,
- *    but no checking of conformance is provided in this class.
- */
-public class DMessage
-{
-	/**
-     * This set of constants defines the message types RECEIVED from the player
-	 * through our debug socket
-	 */
-	public static final int InUnknown					= -1;
-	public static final int InSetMenuState				=  0;
-	public static final int InSetProperty				=  1;
-	public static final int InExit						=  2;
-	public static final int InNewObject					=  3;
-	public static final int InRemoveObject				=  4;
-	public static final int InTrace						=  5;
-	public static final int InErrorTarget				=  6;
-	public static final int InErrorExecLimit			=  7;
-	public static final int InErrorWith					=  8;
-	public static final int InErrorProtoLimit			=  9;
-	public static final int InSetVariable				= 10;
-	public static final int InDeleteVariable			= 11;
-	public static final int InParam						= 12;
-	public static final int InPlaceObject				= 13;
-	public static final int InScript					= 14;
-	public static final int InAskBreakpoints			= 15;
-	public static final int InBreakAt					= 16;
-	public static final int InContinue					= 17;
-	public static final int InSetLocalVariables			= 18;
-	public static final int InSetBreakpoint				= 19;
-	public static final int InNumScript					= 20;
-	public static final int InRemoveScript				= 21;
-	public static final int InRemoveBreakpoint			= 22;
-	public static final int InNotSynced					= 23;
-	public static final int InErrorURLOpen				= 24;
-	public static final int InProcessTag				= 25;
-	public static final int InVersion					= 26;
-	public static final int InBreakAtExt				= 27;
-	public static final int InSetVariable2				= 28;
-	public static final int InSquelch					= 29;
-	public static final int InGetVariable				= 30;
-	public static final int InFrame						= 31;
-	public static final int InOption					= 32;
-    public static final int InWatch						= 33;
-    public static final int InGetSwf					= 34;
-    public static final int InGetSwd					= 35;
-	public static final int InErrorException			= 36;
-	public static final int InErrorStackUnderflow		= 37;
-	public static final int InErrorZeroDivide			= 38;
-	public static final int InErrorScriptStuck			= 39;
-	public static final int InBreakReason				= 40;
-	public static final int InGetActions				= 41;
-	public static final int InSwfInfo					= 42;
-	public static final int InConstantPool				= 43;
-	public static final int InErrorConsole				= 44;
-    public static final int InGetFncNames				= 45;
-	// 46 through 52 are for profiling
-    public static final int InCallFunction				= 54;
-    public static final int InWatch2					= 55;
-    public static final int InPassAllExceptionsToDebugger = 56;
-    public static final int InBinaryOp					= 57;
-    public static final int InIsolateCreate				= 58;
-    public static final int InIsolateExit   			= 59;
-    public static final int InIsolateEnumerate			= 60;
-    public static final int InSetActiveIsolate			= 61;
-    public static final int InIsolate			        = 62;
-    public static final int InSetExceptionBreakpoint	= 63;
-    public static final int InRemoveExceptionBreakpoint	= 64;
-    // If you add another message here, adjust the following line
-    // and add a new case to the inTypeName() method below.
-	public static final int InSIZE						= InRemoveExceptionBreakpoint + 1;	 /* last ID used +1 */
-
-	/**
-	 * This set of constants defines the message types SENT to the player from our
-     * debug socket (WARNING: ID space overlaps with InXXX)
-	 */
-	public static final int OutUnknown					= -2;
-	public static final int OutZoomIn					=  0;
-	public static final int OutZoomOut					=  1;
-	public static final int OutZoom100					=  2;
-	public static final int OutHome						=  3;
-	public static final int OutSetQuality				=  4;
-	public static final int OutPlay						=  5;
-	public static final int OutLoop						=  6;
-	public static final int OutRewind					=  7;
-	public static final int OutForward					=  8;
-	public static final int OutBack						=  9;
-	public static final int OutPrint					= 10;
-	public static final int OutSetVariable				= 11;
-	public static final int OutSetProperty				= 12;
-	public static final int OutExit						= 13;
-	public static final int OutSetFocus					= 14;
-	public static final int OutContinue					= 15;
-	public static final int OutStopDebug				= 16;
-	public static final int OutSetBreakpoints			= 17;
-	public static final int OutRemoveBreakpoints		= 18;
-	public static final int OutRemoveAllBreakpoints		= 19;
-	public static final int OutStepOver					= 20;
-	public static final int OutStepInto					= 21;
-	public static final int OutStepOut					= 22;
-	public static final int OutProcessedTag				= 23;
-	public static final int OutSetSquelch				= 24;
-	public static final int OutGetVariable				= 25;
-	public static final int OutGetFrame					= 26;
-	public static final int OutGetOption				= 27;
-	public static final int OutSetOption				= 28;
-	public static final int OutAddWatch					= 29; // 16-bit id; used for as2
-	public static final int OutRemoveWatch				= 30; // 16-bit id; used for as2
-    public static final int OutStepContinue				= 31;
-    public static final int OutGetSwf				    = 32;
-    public static final int OutGetSwd				    = 33;
-	public static final int OutGetVariableWhichInvokesGetter = 34;
-	public static final int OutGetBreakReason			= 35;
-	public static final int OutGetActions				= 36;
-	public static final int OutSetActions				= 37;
-	public static final int OutSwfInfo					= 38;
-	public static final int OutConstantPool				= 39;
-    public static final int OutGetFncNames              = 40;
-	// 41 through 47 are for profiling
-    public static final int OutCallFunction				= 48;
-    public static final int OutAddWatch2				= 49; // 32-bit id; used for as3
-    public static final int OutRemoveWatch2				= 50; // 32-bit id; used for as3
-    public static final int OutPassAllExceptionsToDebugger = 51;
-    public static final int OutBinaryOp					= 52;
-    public static final int OutIsolateEnumerate			= 53;
-    public static final int OutSetActiveIsolate         = 54;
-    public static final int OutSetExceptionBreakpoint   = 55;
-    public static final int OutRemoveExceptionBreakpoint= 56;
-    // If you add another message here, adjust the following line
-    // and add a new case to the outTypeName() method below.
-	public static final int OutSIZE						= OutRemoveExceptionBreakpoint + 1;	 /* last ID used +1 */
-
-	/**
-	 * Enums originally extracted from shared_tcserver/tcparser.h; these correspond
-	 * to Flash player values that are currently in playerdebugger.h, class DebugAtomType.
-	 */
-	public static final int kNumberType			= 0;
-	public static final int kBooleanType		= 1;
-	public static final int kStringType			= 2;
-	public static final int kObjectType			= 3;
-	public static final int kMovieClipType		= 4;
-	public static final int kNullType			= 5;
-	public static final int kUndefinedType		= 6;
-	public static final int kReferenceType		= 7;
-	public static final int kArrayType			= 8;
-	public static final int kObjectEndType		= 9;
-	public static final int kStrictArrayType	= 10;
-	public static final int kDateType			= 11;
-	public static final int kLongStringType		= 12;
-	public static final int kUnsupportedType	= 13;
-	public static final int kRecordSetType		= 14;
-	public static final int kXMLType			= 15;
-	public static final int kTypedObjectType	= 16;
-	public static final int kAvmPlusObjectType	= 17;
-	public static final int kNamespaceType		= 18;
-	public static final int kTraitsType			= 19;	// This one is special: When passed to the debugger, it indicates
-														// that the "variable" is not a variable at all, but rather is a
-														// class name.  For example, if class Y extends class X, then
-														// we will send a kDTypeTraits for class Y; then we'll send all the
-														// members of class Y; then we'll send a kDTypeTraits for class X;
-														// and then we'll send all the members of class X.  This is only
-														// used by the AVM+ debugger.
-
-	/* byte array of our message and current index into it */
-	byte[] m_content;	/* the data bytes of the message */
-	int	   m_index;		/* current position within the content array */
-	int    m_type;		/* one of OutXXX or InXXX integer constants */
-
-	/**
-	 * Pointer size (in bytes) expected by the Flash player; either
-	 * 4 for the 32-bit player, or 8 for the 64-bit player.
-	 */
-	private static int m_sizeofPtr;
-
-	/* Debugging only: The contents of this message, formatted as a string for display */
-	private StringBuilder m_debugFormatted;
-	/* Debugging only: The number of bytes from the input that we have formatted into m_debugFormatted */
-	private int m_debugFormattedThroughIndex;
-
-	private int m_targetIsolate;
-	
-	/* used by our cache to create empty DMessages */
-	public DMessage(int size)
-	{
-		m_content = new byte[size];
-		m_debugFormatted = new StringBuilder();
-		m_debugFormattedThroughIndex = 0;
-		m_targetIsolate = Isolate.DEFAULT_ID;
-		clear();
-	}
-
-	/* getters/setters */
-	public int    getType()				{ return m_type; }
-	public String getInTypeName()		{ return inTypeName(getType()); }
-	public String getOutTypeName()		{ return outTypeName(getType()); }
-	public byte[] getData()				{ return m_content; }
-	public int    getSize()				{ return (m_content == null) ? 0 : m_content.length; }
-	public int    getRemaining()		{ return getSize()-m_index; }
-	public int    getPosition()			{ return m_index; }
-	public int getTargetIsolate()      { return m_targetIsolate; }
-	public void   setType(int t)		{ m_type = t; }
-	public void setTargetIsolate(int id) {m_targetIsolate = id;}
-
-	/**
-	 * Gets pointer size (in bytes) expected by the Flash player; either
-	 * 4 for the 32-bit player, or 8 for the 64-bit player.
-	 */
-	public static int getSizeofPtr()
-	{
-		assert m_sizeofPtr != 0;
-		return m_sizeofPtr;
-	}
-
-	/**
-	 * Sets pointer size (in bytes) expected by the Flash player; either
-	 * 4 for the 32-bit player, or 8 for the 64-bit player.
-	 */
-	public static void setSizeofPtr(int size)
-	{
-		assert size != 0;
-		m_sizeofPtr = size;
-	}
-
-	/**
-	 * Allow the message to be 're-parsed' by someone else
-	 */
-	public void reset()
-	{
-		m_index = 0;
-	}
-
-	/**
-	 * Allow the message to be reused later
-	 */
-	public void clear()
-	{
-		setType(-1);
-		setTargetIsolate(Isolate.DEFAULT_ID);
-		m_debugFormatted.setLength(0);
-		m_debugFormattedThroughIndex = 0;
-		reset();
-	}
-
-	private long get(int bytes) throws ArrayIndexOutOfBoundsException
-	{
-		if (m_index+bytes > m_content.length)
-			throw new ArrayIndexOutOfBoundsException(m_content.length-m_index+" < "+bytes); //$NON-NLS-1$
-
-		long value = 0;
-		for (int i=0; i<bytes; ++i) {
-			long byteValue = m_content[m_index++] & 0xff;
-			long byteValueShifted = byteValue << (8*i);
-			value |= byteValueShifted;
-		}
-
-		debugAppendNumber(value, bytes);
-		return value;
-	}
-
-	/**
-	 * Extract the next byte
-	 */
-	public int getByte() throws ArrayIndexOutOfBoundsException
-	{
-		return (int) get(1);
-	}
-
- 	/**
-	 * Extract the next 2 bytes, which form a 16b integer, from the message
-	 */
-	public int getWord() throws ArrayIndexOutOfBoundsException
-	{
-		return (int) get(2);
-	}
-
-	/**
-	 * Extract the next 4 bytes, which form a 32b integer, from the message
-	 */
-	public long getDWord() throws ArrayIndexOutOfBoundsException
-	{
-		return get(4);
-	}
-
-	/**
-	 * Extract the next 8 bytes, which form a 64b integer, from the message
-	 */
-	public long getLong() throws ArrayIndexOutOfBoundsException
-	{
-		return get(8);
-	}
-
-	/**
-	 * Extract a pointer from the message -- either 8 bytes or 4 bytes,
-	 * depending on how big pointers are in the target Flash player
-	 */
-	public long getPtr() throws ArrayIndexOutOfBoundsException
-	{
-		return get(getSizeofPtr());
-	}
-
-	/**
-	 * Heart wrenchingly slow but since we don't have a length so we can't
-	 * do much better
-	 */
-	public String getString() throws ArrayIndexOutOfBoundsException
-	{
-		int startAt = m_index;
-		boolean done = false;
-
-		/* scan looking for a terminating null */
-		while(!done)
-		{
-		    int ch = m_content[m_index++];
-			if (ch == 0)
-				done = true;
-			else if (m_index > m_content.length)
-				throw new ArrayIndexOutOfBoundsException("no string terminator found @"+m_index); //$NON-NLS-1$
-		}
-
-		/* build a new string and return it */
-		String s;
-		try
-		{
-			// The player uses UTF-8
-			s = new String(m_content, startAt, m_index-startAt-1, "UTF-8"); //$NON-NLS-1$
-		}
-		catch(UnsupportedEncodingException uee)
-		{
-			// couldn't convert so let's try the default
-			s = new String(m_content, startAt, m_index-startAt-1);
-		}
-		debugAppendString(s);
-		return s;
-	}
-
-	/**
-	 * Appends a number to the end of the message
-	 * @param val the number
-	 * @param bytes how many bytes should be written
-	 */
-	public void put(long val, int bytes) throws ArrayIndexOutOfBoundsException
-	{
-		if (m_index+bytes > m_content.length)
-			throw new ArrayIndexOutOfBoundsException(m_content.length-m_index+" < "+bytes); //$NON-NLS-1$
-
-		for (int i=0; i<bytes; ++i)
-			m_content[m_index++] = (byte)(val >> 8*i);
-
-		debugAppendNumber(val, bytes);
-	}
-
-	/**
-	 * Appends a byte to the end of the message
-	 */
-	public void putByte(byte val) throws ArrayIndexOutOfBoundsException
-	{
-		put(val, 1);
-	}
-
-	/**
-	 * Appends 2 bytes, which form a 16b integer, into the message
-	 */
-	public void putWord(int val) throws ArrayIndexOutOfBoundsException
-	{
-		put(val, 2);
-	}
-
-	/**
-	 * Appends 4 bytes, which form a 32b integer, into the message
-	 */
-	public void putDWord(int val) throws ArrayIndexOutOfBoundsException
-	{
-		put(val, 4);
-	}
-
-	/**
-	 * Appends 8 bytes, which form a 64b integer, into the message
-	 */
-	public void putLong(long val) throws ArrayIndexOutOfBoundsException
-	{
-		put(val, 8);
-	}
-
-	/**
-	 * Appends a pointer into the message -- either 8 bytes or 4 bytes,
-	 * depending on how big pointers are in the target Flash player
-	 */
-	public void putPtr(long val) throws ArrayIndexOutOfBoundsException
-	{
-		put(val, getSizeofPtr());
-	}
-
-	/**
-	 * Helper to get the number of bytes that a string will need when it is sent
-	 * across the socket to the Flash player.  Do *not* use string.length(),
-	 * because that will return an incorrect result for strings that have non-
-	 * ASCII characters.
-	 */
-	public static int getStringLength(String s)
-	{
-		try
-		{
-			return s.getBytes("UTF-8").length; //$NON-NLS-1$
-		}
-		catch (UnsupportedEncodingException e)
-		{
-			if (Trace.error) Trace.trace(e.toString());
-			return 0;
-		}
-	}
-
-	/**
-	 * Place a string into the message (using UTF-8 encoding)
-	 */
-	public void putString(String s) throws ArrayIndexOutOfBoundsException, UnsupportedEncodingException
-	{
-		/* convert the string into a byte array */
-		byte[] bytes = s.getBytes("UTF-8"); //$NON-NLS-1$
-		int length = bytes.length;
-		int endAt = m_index + length + 1;
-
-		if (endAt > m_content.length)
-			throw new ArrayIndexOutOfBoundsException(endAt+" > "+m_content.length); //$NON-NLS-1$
-
-		/* copy the string as a byte array */
-		System.arraycopy(bytes, 0, m_content, m_index, length);
-		m_index += length;
-
-		/* now the null terminator */
-		m_content[m_index++] = '\0';
-		
-		debugAppendString(s);
-	}
-
-	// Debugging helper function: we've parsed a number out of the stream of input bytes,
-	// so record that as a hex number of the appropriate length, e.g. "0x12" or "0x1234"
-	// or "0x12345678", depending on numBytes.
-	private void debugAppendNumber(long value, int numBytes)
-	{
-		if (PlayerSession.m_debugMsgOn || PlayerSession.m_debugMsgFileOn)
-		{
-			StringBuilder sb = new StringBuilder();
-			sb.append("0x"); //$NON-NLS-1$
-			FieldFormat.formatLongToHex(sb, value, numBytes * 2, true);
-			debugAppend(sb.toString());
-		}
-	}
-
-	// Debugging helper function: we've parsed a string out of the stream of input bytes,
-	// so record it as a quoted string in the formatted debugging output.
-	private void debugAppendString(String s)
-	{
-		if (PlayerSession.m_debugMsgOn || PlayerSession.m_debugMsgFileOn)
-			debugAppend('"' + s + '"');
-	}
-
-	// Debugging helper function: append a string to the formatted debugging output.
-	private void debugAppend(String s)
-	{
-		if (PlayerSession.m_debugMsgOn || PlayerSession.m_debugMsgFileOn)
-		{
-			if (m_index > m_debugFormattedThroughIndex)
-			{
-				m_debugFormattedThroughIndex = m_index;
-				if (m_debugFormatted.length() > 0)
-					m_debugFormatted.append(' ');
-				m_debugFormatted.append(s);
-			}
-		}
-	}
-
-	public String inToString() { return inToString(16); }
-
-	public String inToString(int maxContentBytes)
-	{
-		StringBuilder sb = new StringBuilder();
-		sb.append(getInTypeName());
-		sb.append('[');
-		sb.append(getSize());
-		sb.append("] "); //$NON-NLS-1$
-		if (getSize() > 0)
-			appendContent(sb, maxContentBytes);
-
-		return sb.toString();
-	}
-
-	public String outToString() { return outToString(16); }
-
-	public String outToString(int maxContentBytes)
-	{
-		StringBuilder sb = new StringBuilder();
-		sb.append(getOutTypeName());
-		sb.append('[');
-		sb.append(getSize());
-		sb.append("] "); //$NON-NLS-1$
-		if (getSize() > 0)
-			appendContent(sb, maxContentBytes);
-
-		return sb.toString();
-	}
-
-	public StringBuilder appendContent(StringBuilder sb, int max)
-	{
-		int size = getSize();
-		byte[] data = getData();
-		int i = 0;
-
-		// First, output formatted content -- content for which some of the other functions
-		// in this class, such as getDWord and getString, did formatting.
-		sb.append(m_debugFormatted);
-
-		// Now, for any left-over bytes which no one bothered to parse, output them as hex. 
-		for(i=0; i<max && i+m_debugFormattedThroughIndex<size; i++)
-		{
-			int v = data[i+m_debugFormattedThroughIndex] & 0xff;
-			sb.append(" 0x"); //$NON-NLS-1$
-			FieldFormat.formatLongToHex(sb, v, 2, true);
-		}
-
-		if (i+m_debugFormattedThroughIndex < size)
-			sb.append(" ..."); //$NON-NLS-1$
-
-		return sb;
-	}
-
-	/**
-	 * Convenience function for converting a type into a name used mainly for debugging
-	 * but can also be used during trace facility of command line session
-	 */
-	public static String inTypeName(int type)
-	{
-        String s = "InUnknown(" + type + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-
-		switch(type)
-		{
-			case InSetMenuState:
-				s = "InSetMenuState"; //$NON-NLS-1$
-				break;
-
-			case InSetProperty:
-				s = "InSetProperty"; //$NON-NLS-1$
-				break;
-
-			case InExit:
-				s = "InExit"; //$NON-NLS-1$
-				break;
-
-			case InNewObject:
-				s = "InNewObject"; //$NON-NLS-1$
-				break;
-
-			case InRemoveObject:
-				s = "InRemoveObject"; //$NON-NLS-1$
-				break;
-
-		    case InTrace:
-				s = "InTrace"; //$NON-NLS-1$
-				break;
-
-			case InErrorTarget:
-				s = "InErrorTarget"; //$NON-NLS-1$
-				break;
-
-			case InErrorExecLimit:
-				s = "InErrorExecLimit"; //$NON-NLS-1$
-				break;
-
-			case InErrorWith:
-				s = "InErrorWith"; //$NON-NLS-1$
-				break;
-
-			case InErrorProtoLimit:
-				s = "InErrorProtoLimit"; //$NON-NLS-1$
-				break;
-
-			case InSetVariable:
-				s = "InSetVariable"; //$NON-NLS-1$
-				break;
-
-			case InDeleteVariable:
-				s = "InDeleteVariable"; //$NON-NLS-1$
-				break;
-
-			case InParam:
-				s = "InParam"; //$NON-NLS-1$
-				break;
-
-			case InPlaceObject:
-				s = "InPlaceObject"; //$NON-NLS-1$
-				break;
-
-			case InScript:
-				s = "InScript"; //$NON-NLS-1$
-				break;
-
-			case InAskBreakpoints:
-				s = "InAskBreakpoints"; //$NON-NLS-1$
-				break;
-
-			case InBreakAt:
-				s = "InBreakAt"; //$NON-NLS-1$
-				break;
-
-			case InContinue:
-				s = "InContinue"; //$NON-NLS-1$
-				break;
-
-			case InSetLocalVariables:
-				s = "InSetLocalVariables"; //$NON-NLS-1$
-				break;
-
-			case InSetBreakpoint:
-				s = "InSetBreakpoint"; //$NON-NLS-1$
-				break;
-
-			case InNumScript:
-				s = "InNumScript"; //$NON-NLS-1$
-				break;
-
-			case InRemoveScript:
-				s = "InRemoveScript"; //$NON-NLS-1$
-				break;
-
-			case InRemoveBreakpoint:
-				s = "InRemoveBreakpoint"; //$NON-NLS-1$
-				break;
-
-			case InNotSynced:
-				s = "InNotSynced"; //$NON-NLS-1$
-				break;
-
-			case InErrorURLOpen:
-				s = "InErrorURLOpen"; //$NON-NLS-1$
-				break;
-
-			case InProcessTag:
-				s = "InProcessTag"; //$NON-NLS-1$
-				break;
-
-			case InVersion:
-				s = "InVersion"; //$NON-NLS-1$
-				break;
-
-			case InBreakAtExt:
-				s = "InBreakAtExt"; //$NON-NLS-1$
-				break;
-
-			case InSetVariable2:
-				s = "InSetVariable2"; //$NON-NLS-1$
-				break;
-
-			case InSquelch:
-				s = "InSquelch"; //$NON-NLS-1$
-				break;
-
-			case InGetVariable:
-				s = "InGetVariable"; //$NON-NLS-1$
-				break;
-
-			case InFrame:
-				s = "InFrame"; //$NON-NLS-1$
-				break;
-
-			case InOption:
-				s = "InOption"; //$NON-NLS-1$
-				break;
-
-			case InWatch:
-				s = "InWatch"; //$NON-NLS-1$
-				break;
-
-			case InGetSwf:
-				s = "InGetSwf"; //$NON-NLS-1$
-				break;
-
-			case InGetSwd:
-				s = "InGetSwd"; //$NON-NLS-1$
-				break;
-
-			case InErrorException:
-				s = "InErrorException"; //$NON-NLS-1$
-				break;
-
-			case InErrorStackUnderflow:
-				s = "InErrorStackUnderflow"; //$NON-NLS-1$
-				break;
-
-			case InErrorZeroDivide:
-				s = "InErrorZeroDivide"; //$NON-NLS-1$
-				break;
-
-			case InErrorScriptStuck:
-				s = "InErrorScriptStuck"; //$NON-NLS-1$
-				break;
-
-			case InBreakReason:
-				s = "InBreakReason"; //$NON-NLS-1$
-				break;
-
-			case InGetActions:
-				s = "InGetActions"; //$NON-NLS-1$
-				break;
-
-			case InSwfInfo:
-				s = "InSwfInfo"; //$NON-NLS-1$
-				break;
-
-			case InConstantPool:
-				s = "InConstantPool"; //$NON-NLS-1$
-				break;
-
-			case InErrorConsole:
-				s = "InErrorConsole"; //$NON-NLS-1$
-				break;
-
-            case InGetFncNames:
-                s = "InGetFncNames"; //$NON-NLS-1$
-                break;
-                
-            case InCallFunction:
-            	s = "InCallFunction"; //$NON-NLS-1$
-            	break;
-            	
-            case InWatch2:
-            	s = "InWatch2"; //$NON-NLS-1$
-            	break;
-
-            case InPassAllExceptionsToDebugger:
-            	s = "InPassAllExceptionsToDebugger"; //$NON-NLS-1$
-            	break;
-
-            case InBinaryOp:
-            	s = "InBinaryOp"; //$NON-NLS-1$
-            	break;
-            	
-            case InIsolateCreate:
-            	s = "InIsolateCreate"; //$NON-NLS-1$
-            	break;
-            	
-            case InIsolateExit:
-            	s = "InIsolateExit"; //$NON-NLS-1$
-            	break;
-            	
-            case InIsolateEnumerate:
-            	s = "InIsolateEnumerate"; //$NON-NLS-1$
-            	break;
-            	
-            case InSetActiveIsolate:
-            	s = "InSetActiveIsolate"; //$NON-NLS-1$
-            	break;
-            	
-            case InIsolate:
-            	s = "InIsolate"; //$NON-NLS-1$
-            	break;
-            	
-            case InSetExceptionBreakpoint:
-            	s = "InSetExceptionBreakpoint"; //$NON-NLS-1$
-            	break;
-            	
-            case InRemoveExceptionBreakpoint:
-            	s = "InRemoveExceptionBreakpoint"; //$NON-NLS-1$
-            	break;
-		}
-		return s;
-	}
-
-	/**
-	 * Convenience function for converting a type into a name used mainly for debugging
-	 * but can also be used during trace facility of command line session
-	 */
-	public static String outTypeName(int type)
-	{
-		String s = "OutUnknown(" + type + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-
-		switch(type)
-		{
-			case OutZoomIn:
-				s = "OutZoomIn"; //$NON-NLS-1$
-				break;
-
-			case OutZoomOut:
-				s = "OutZoomOut"; //$NON-NLS-1$
-				break;
-
-			case OutZoom100:
-				s = "OutZoom100"; //$NON-NLS-1$
-				break;
-
-			case OutHome:
-				s = "OutHome"; //$NON-NLS-1$
-				break;
-
-			case OutSetQuality:
-				s = "OutSetQuality"; //$NON-NLS-1$
-				break;
-
-			case OutPlay:
-				s = "OutPlay"; //$NON-NLS-1$
-				break;
-
-			case OutLoop:
-				s = "OutLoop"; //$NON-NLS-1$
-				break;
-
-			case OutRewind:
-				s = "OutRewind"; //$NON-NLS-1$
-				break;
-
-			case OutForward:
-				s = "OutForward"; //$NON-NLS-1$
-				break;
-
-			case OutBack:
-				s = "OutBack"; //$NON-NLS-1$
-				break;
-
-			case OutPrint:
-				s = "OutPrint"; //$NON-NLS-1$
-				break;
-
-			case OutSetVariable:
-				s = "OutSetVariable"; //$NON-NLS-1$
-				break;
-
-			case OutSetProperty:
-				s = "OutSetProperty"; //$NON-NLS-1$
-				break;
-
-			case OutExit:
-				s = "OutExit"; //$NON-NLS-1$
-				break;
-
-			case OutSetFocus:
-				s = "OutSetFocus"; //$NON-NLS-1$
-				break;
-
-			case OutContinue:
-				s = "OutContinue"; //$NON-NLS-1$
-				break;
-
-			case OutStopDebug:
-				s = "OutStopDebug"; //$NON-NLS-1$
-				break;
-
-			case OutSetBreakpoints:
-				s = "OutSetBreakpoints"; //$NON-NLS-1$
-				break;
-
-			case OutRemoveBreakpoints:
-				s = "OutRemoveBreakpoints"; //$NON-NLS-1$
-				break;
-
-			case OutRemoveAllBreakpoints:
-				s = "OutRemoveAllBreakpoints"; //$NON-NLS-1$
-				break;
-
-			case OutStepOver:
-				s = "OutStepOver"; //$NON-NLS-1$
-				break;
-
-			case OutStepInto:
-				s = "OutStepInto"; //$NON-NLS-1$
-				break;
-
-			case OutStepOut:
-				s = "OutStepOut"; //$NON-NLS-1$
-				break;
-
-			case OutProcessedTag:
-				s = "OutProcessedTag"; //$NON-NLS-1$
-				break;
-
-			case OutSetSquelch:
-				s = "OutSetSquelch"; //$NON-NLS-1$
-				break;
-
-			case OutGetVariable:
-				s = "OutGetVariable"; //$NON-NLS-1$
-				break;
-
-			case OutGetFrame:
-				s = "OutGetFrame"; //$NON-NLS-1$
-				break;
-
-			case OutGetOption:
-				s = "OutGetOption"; //$NON-NLS-1$
-				break;
-
-			case OutSetOption:
-				s = "OutSetOption"; //$NON-NLS-1$
-				break;
-
-			case OutAddWatch:
-				s = "OutAddWatch"; //$NON-NLS-1$
-				break;
-
-			case OutRemoveWatch:
-				s = "OutRemoveWatch"; //$NON-NLS-1$
-				break;
-
-			case OutStepContinue:
-				s = "OutStepContinue"; //$NON-NLS-1$
-				break;
-
-			case OutGetSwf:
-				s = "OutGetSwf"; //$NON-NLS-1$
-				break;
-
-			case OutGetSwd:
-				s = "OutGetSwd"; //$NON-NLS-1$
-				break;
-
-			case OutGetVariableWhichInvokesGetter:
-				s = "OutGetVariableWhichInvokesGetter"; //$NON-NLS-1$
-				break;
-
-			case OutGetBreakReason:
-				s = "OutGetBreakReason"; //$NON-NLS-1$
-				break;
-
-			case OutGetActions:
-				s = "OutGetActions"; //$NON-NLS-1$
-				break;
-
-			case OutSetActions:
-				s = "OutSetActions"; //$NON-NLS-1$
-				break;
-
-			case OutSwfInfo:
-				s = "OutSwfInfo"; //$NON-NLS-1$
-				break;
-
-			case OutConstantPool:
-				s = "OutConstantPool"; //$NON-NLS-1$
-				break;
-
-            case OutGetFncNames:
-                s = "OutGetFncNames"; //$NON-NLS-1$
-                break;
-
-            case OutCallFunction:
-            	s = "OutCallFunction"; //$NON-NLS-1$
-            	break;
-            	
-            case OutAddWatch2:
-            	s = "OutAddWatch2"; //$NON-NLS-1$
-            	break;
-            	
-            case OutRemoveWatch2:
-            	s = "OutRemoveWatch2"; //$NON-NLS-1$
-            	break;
-
-            case OutPassAllExceptionsToDebugger:
-            	s = "OutPassAllExceptionsToDebugger"; //$NON-NLS-1$
-            	break;
-
-            case OutBinaryOp:
-            	s = "OutBinaryOp"; //$NON-NLS-1$
-            	break;
-            	
-            case OutIsolateEnumerate:
-            	s = "OutIsolateEnumerate"; //$NON-NLS-1$
-            	break;
-            	
-            case OutSetActiveIsolate:
-            	s = "OutSetActiveIsolate"; //$NON-NLS-1$
-            	break;
-            	
-            case OutSetExceptionBreakpoint:
-            	s = "OutSetExceptionBreakpoint"; //$NON-NLS-1$
-            	break;
-            	
-            case OutRemoveExceptionBreakpoint:
-            	s = "OutRemoveExceptionBreakpoint"; //$NON-NLS-1$
-            	break;
-            	
-		}
-   		return s;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessageCache.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessageCache.java
deleted file mode 100644
index 319235b..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessageCache.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-/**
- * This cache directly manages the creation/destruction of DMessages
- * by allowing DMessages to be re-used.
- * 
- * It has been observed that the Player send a tremendous number of
- * small (< 8Byte of data) messages and that by allocating a fixed
- * number of these, and then re-using them, we can assist the garbage
- * collector greatly.
- * 
- * The cache is arranged as an array whereby DMessages with 'index'
- * number of bytes for data are housed.  It is asssumed that at
- * any moment in time only one DMessage will be required and thus
- * this technique works.  If DMessages are to be stored for 
- * later processing (implying that many will exist at any moment)
- * then we need to implement a more sophisticated cache (probably
- * storing a Vector of DMessages at each index).
- *
- * Very large DMessages are currently not cached.
- * 
- * This is class is a singleton.
- */
-public class DMessageCache
-{
-	public static final int MAX_CACHED_DATA_SIZE		= 128;  /* should consume around 4n + n(n+1)/2 bytes */
-
-	/* our cache */
-	static DMessage[] m_cache = new DMessage[MAX_CACHED_DATA_SIZE];
-
-	/**
-	 * Obtain a DMessage from the cache if possible, otherwise make one for me.
-	 */
-	public static DMessage alloc(int size)
-	{
-		DMessage msg;
-
-		int index = size2Index(size);
-
-		/**
-		 * We see if this could possibly be found in our cache,
-		 * if so, then see if there is one for us to use,
-		 * otherwise create a new one 
-		 */
-		if (index < 0)
-			msg = new DMessage(size);
-		else if (m_cache[index] == null)
-			msg = new DMessage(size);
-        else
-		{
-			msg = m_cache[index];
-			m_cache[index] = null;
-		}
-
-//		System.out.println("msgsize="+size+uft());
-		return msg;
-	}
-
-	private static String uft()
-	{
-		Runtime rt = Runtime.getRuntime();
-		long free = rt.freeMemory(), total = rt.totalMemory(), used =  total - free;
-//		long max = rt.maxMemory();
-		java.text.NumberFormat nf = java.text.NumberFormat.getInstance() ;
-//        System.out.println("used: "+nf.format(used)+" free: "+nf.format(free)+" total: "+nf.format(total)+" max: "+nf.format(max));
-        return ", used "+nf.format(used)+", free "+nf.format(free)+", total "+nf.format(total); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    }
-
-	/**
-	 * Put a DMessage into the cache for reuse
-	 */
-	public static void free(DMessage msg)
-	{
-		int index = size2Index(msg.getSize());
-
-		msg.clear(); /* clear stuff up for re-use */
-
-		/** 
-		 * If it is too big we don't store cache, assuming
-		 * the GC can do a better job than us at reusing the memory,
-		 * Otherwise we put it in our cache
-		 */
-		if (index < 0)
-			;
-		else if (m_cache[index] != null)
-			; /* bad => need to use a Vector in the array to house multiple DMessages */
-		else
-			m_cache[index] = msg;
-	}
-
-	public static int size2Index(int size) { return ((size < MAX_CACHED_DATA_SIZE) ? size : -1); }
-//	public static int size2Index(int size) { return -1; }
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessageCounter.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessageCounter.java
deleted file mode 100644
index e13d601..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DMessageCounter.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import flash.tools.debugger.Isolate;
-
-/**
- * This class can be to count the number of messages
- * received during a debug session.
- *
- */
-public class DMessageCounter implements DProtocolNotifierIF
-{
-	long[] m_inCounts;
-	long[] m_outCounts;
-	long m_lastIsolate;
-	Object m_isolateLock;
-	boolean m_isolate;
-	
-	Map<Long, DMessageCounter> m_isolateCounterMap;
-
-	public DMessageCounter()
-	{
-		m_inCounts = new long[DMessage.InSIZE+1];
-		m_outCounts = new long[DMessage.OutSIZE+1];
-		m_lastIsolate = 1;
-		m_isolateCounterMap = new HashMap<Long, DMessageCounter>();
-		m_isolateLock = new Object();
-		clearArray(m_inCounts);
-		clearArray(m_outCounts);
-	}
-
-	public void disconnected()
-	{
-		// We're being notified (via the DProtocolNotifierIF interface) that
-		// the socket connection has been broken.  If anyone is waiting for
-		// a message to come in, they ain't gonna get one.  So, we'll notify()
-		// them so that they can wake up and realize that the connection has
-		// been broken.
-		Object inLock = getInLock();
-		synchronized (inLock) { inLock.notifyAll(); }
-		Object outLock = getOutLock();
-		synchronized (outLock) { outLock.notifyAll(); }
-	}
-
-	/**
-	 * Returns the object on which external code can call "wait" in order
-	 * to block until a message is received.
-	 */
-	public Object getInLock() { return m_inCounts; }
-
-	/**
-	 * Returns the object on which external code can call "wait" in order
-	 * to block until a message is sent.
-	 */
-	public Object getOutLock() { return m_outCounts; }
-	
-	/**
-	 * Collect stats on outgoing messages 
-	 */
-	public void messageSent(DMessage msg)
-	{
-	    int type = msg.getType();
-		if (type < 0 || type >=DMessage.OutSIZE)
-			type = DMessage.OutSIZE;
-		long targetIsolate = msg.getTargetIsolate();
-		Object outLock = getOutLock();
-		if (!m_isolate) {
-			synchronized (m_isolateLock) {
-				if (m_lastIsolate != Isolate.DEFAULT_ID) {
-					DMessageCounter counter = m_isolateCounterMap.get(m_lastIsolate);
-					outLock = counter.getOutLock();
-				}
-			}
-		}
-		synchronized (outLock) {
-			
-			if (!m_isolate && targetIsolate != Isolate.DEFAULT_ID) {
-//				if (m_isolateCounterMap.containsKey(targetIsolate)) {
-					DMessageCounter counter = m_isolateCounterMap.get(targetIsolate);				
-					counter.messageSent(msg);
-					m_outCounts[type] += 1;
-					outLock.notifyAll(); // tell anyone who is waiting that a message has been sent
-					//counter.getOutLock().notifyAll();
-//				}
-//				else {
-//					System.out.println("No counter for worker " + targetIsolate);
-//					m_outCounts[type] += 1;
-//					outLock.notifyAll(); // tell anyone who is waiting that a message has been sent
-//				}
-			}
-			else {
-				m_outCounts[type] += 1;
-				outLock.notifyAll(); // tell anyone who is waiting that a message has been sent
-			}
-		}
-	}
-	
-	public void setIsolate(boolean value) {
-		m_isolate = value;
-	}
-
-	/** 
-	 * Collect stats on the messages 
-	 */
-	public void messageArrived(DMessage msg, DProtocol which)
-	{
-		/* extract type */
-		int type = msg.getType();
-
-//		System.out.println("msg counter ="+type);
-
-		/* anything we don't know about goes in a special slot at the end of the array. */
-		if (type < 0 || type >= DMessage.InSIZE)
-			type = DMessage.InSIZE;
-		Object inLock = getInLock();
-		if (!m_isolate) {
-			synchronized (m_isolateLock) {
-				if (m_lastIsolate != Isolate.DEFAULT_ID) {
-					DMessageCounter counter = m_isolateCounterMap.get(m_lastIsolate);
-					inLock = counter.getInLock();
-				}
-			}
-		}
-		
-		synchronized (inLock) {
-			if (type == DMessage.InIsolate) {
-				long isolate = msg.getDWord();				
-				if (isolate != Isolate.DEFAULT_ID) {
-					/** Check if our map has a counter for this isolate */
-					if (!m_isolateCounterMap.containsKey(isolate)) {
-						DMessageCounter isolateCounter = new DMessageCounter();
-						isolateCounter.setIsolate(true);
-						m_isolateCounterMap.put(isolate, isolateCounter);
-					}
-				}
-				synchronized (m_isolateLock) {
-					m_lastIsolate = isolate;
-				}
-				m_inCounts[type] += 1;
-				inLock.notifyAll(); // tell anyone who is waiting that a message has been received
-			}
-			else if (!m_isolate && m_lastIsolate != Isolate.DEFAULT_ID) {
-				DMessageCounter counter = m_isolateCounterMap.get(m_lastIsolate);
-				counter.messageArrived(msg, which);
-				synchronized (counter.getInLock()) {
-					counter.getInLock().notifyAll();
-				}
-				
-			}
-			else {
-				m_inCounts[type] += 1;
-				inLock.notifyAll(); // tell anyone who is waiting that a message has been received
-			}
-		}
-	}
-
-	/* getters */
-	public long   getInCount(int type)  { synchronized (getInLock()) { return m_inCounts[type]; } }
-	public long   getOutCount(int type) { synchronized (getOutLock()) { return m_outCounts[type]; } }
-	
-	public long   getIsolateInCount(long isolate, int type)  { 
-		DMessageCounter counter = m_isolateCounterMap.get(isolate);
-		return counter.getInCount(type); 
-	}
-
-	public long getIsolateOutCount(long isolate, int type) { 
-		DMessageCounter counter = m_isolateCounterMap.get(isolate);
-		return counter.getOutCount(type); 
-	}
-
-	public Object getIsolateInLock(long isolate)  { 
-		DMessageCounter counter = m_isolateCounterMap.get(isolate);
-		return counter.getInLock(); 
-	}
-
-
-	/* setters */
-	public void clearInCounts()			{ synchronized (getInLock()) { clearArray(m_inCounts); } }
-	public void clearOutCounts()		{ synchronized (getOutLock()) { clearArray(m_outCounts); } }
-
-	/**
-	 * Clear out the array 
-	 */
-	void clearArray(long[] ar)
-	{
-		for(int i=0; i<ar.length; i++)
-			ar[i] = 0;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DModule.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DModule.java
deleted file mode 100644
index d2577cb..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DModule.java
+++ /dev/null
@@ -1,832 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SourceFile;
-import flash.tools.debugger.SourceLocator;
-import flash.tools.debugger.VersionException;
-import flash.util.FileUtils;
-
-/**
- * A module which is uniquly identified by an id, contains
- * a short and long name and also a script
- */
-public class DModule implements SourceFile
-{
-	private ScriptText			m_script;			// lazy-initialized by getScript()
-	private boolean				m_gotRealScript;
-	private final String		m_rawName;
-	private final String		m_shortName;
-	private final String		m_path;
-	private final String		m_basePath;
-	private final int			m_id;
-	private final int			m_bitmap;
-	private final ArrayList<Integer>		m_line2Offset;
-	private final ArrayList<Object>			m_line2Func;		// each array is either null, String, or String[]
-	private final HashMap<String, Integer>	m_func2FirstLine;	// maps function name (String) to first line of function (Integer)
-	private final HashMap<String, Integer>	m_func2LastLine;	// maps function name (String) to last line of function (Integer)
-	private String				m_packageName;
-	private boolean				m_gotAllFncNames;
-	private int					m_anonymousFunctionCounter = 0;
-	private SourceLocator		m_sourceLocator;
-	private int					m_sourceLocatorChangeCount;
-	private int m_isolateId;
-	private final static String	m_newline = System.getProperty("line.separator"); //$NON-NLS-1$
-
-	/**
-	 * @param name filename in "basepath;package;filename" format
-	 */
-	public DModule(SourceLocator sourceLocator, int id, int bitmap, String name, String script, int isolateId)
-	{
-		// If the caller gave us the script text, then we will create m_script
-		// now.  But if the caller gave us an empty string, then we won't bother
-		// looking for a disk file until someone actually asks for it.
-		if (script != null && script.length() > 0)
-		{
-			m_script = new ScriptText(script);
-			m_gotRealScript = true;
-		}
-
-		NameParser nameParser = new NameParser(name);
-
-		m_sourceLocator = sourceLocator;
-		m_rawName = name;
-		m_basePath = nameParser.getBasePath(); // may be null
-		m_bitmap = bitmap;
-		m_id = id;
-		m_shortName = generateShortName(nameParser);
-		m_path = generatePath(nameParser);
-		m_line2Offset = new ArrayList<Integer>();
-		m_line2Func = new ArrayList<Object>();
-		m_func2FirstLine = new HashMap<String, Integer>();
-		m_func2LastLine = new HashMap<String, Integer>();
-		m_packageName = nameParser.getPackage();
-        m_gotAllFncNames = false;
-        m_isolateId = isolateId;
-	}
-
-	public synchronized ScriptText getScript()
-	{
-		// If we have been using "dummy" source, and the user has changed the list of
-		// directories that are searched for source, then we want to search again
-		if (!m_gotRealScript &&
-			m_sourceLocator != null &&
-			m_sourceLocator.getChangeCount() != m_sourceLocatorChangeCount)
-		{
-			m_script = null;
-		}
-
-		// lazy-initialize m_script, so that we don't read a disk file until
-		// someone actually needs to look at the file
-		if (m_script == null)
-		{
-            String script = scriptFromDisk(getRawName());
-			if (script == null)
-			{
-				script = ""; // use dummy source for now //$NON-NLS-1$
-			}
-			else
-			{
-				m_gotRealScript = true; // we got the real source
-			}
-			m_script = new ScriptText(script);
-		}
-		return m_script;
-	}
-
-	/* getters */
-	public String		getBasePath()			{ return m_basePath; }
-	public String		getName()				{ return m_shortName; }
-	public String		getFullPath()			{ return m_path; }
-	public String       getPackageName()		{ return (m_packageName == null) ? "" : m_packageName; } //$NON-NLS-1$
-	public String		getRawName()			{ return m_rawName; }
-	public int			getId()					{ return m_id; }
-	public int			getBitmap()				{ return m_bitmap; }
-	public int			getLineCount()			{ return getScript().getLineCount(); }
-	public String		getLine(int i)			{ return (i > getLineCount()) ? "// code goes here" : getScript().getLine(i); } //$NON-NLS-1$
-
-	void setPackageName(String name)    { m_packageName = name; }
-
-	/**
-	 * @return the offset within the swf for a given line 
-	 * of source.  0 if unknown.
-	 */
-	public int getOffsetForLine(int line)
-	{ 
-		int offset = 0;
-		if (line < m_line2Offset.size())
-		{
-			Integer i = m_line2Offset.get(line);
-			if (i != null)
-				offset = i.intValue();
-		}
-		return offset;
-	}
-
-	public int getLineForFunctionName(Session s, String name)
-	{
-		int value = -1;
-        primeAllFncNames(s);
-		Integer i = m_func2FirstLine.get(name);
-		if (i != null)
-			value = i.intValue();
-
-		return value;
-	}
-
-    /*
-     * @see flash.tools.debugger.SourceFile#getFunctionNameForLine(flash.tools.debugger.Session, int)
-     */
-    public String getFunctionNameForLine(Session s, int line)
-    {
-        primeFncName(s, line);
-
-    	String[] funcNames = getFunctionNamesForLine(s, line);
-
-    	if (funcNames != null && funcNames.length == 1)
-    		return funcNames[0];
-    	else
-    		return null;
-    }
-
-	/**
-	 * Return the function names for a given line number, or an empty array
-	 * if there are none; never returns <code>null</code>.
-	 */
-    private String[] getFunctionNamesForLine(Session s, int line)
-    {
-        primeFncName(s, line);
-
-		if (line < m_line2Func.size())
-		{
-			Object obj = m_line2Func.get(line);
-			
-			if (obj instanceof String)
-				return new String[] { (String) obj };
-			else if (obj instanceof String[])
-				return (String[]) obj;
-		}
-
-		return new String[0];
-    }
-
-	public String[] getFunctionNames(Session s)
-	{
-		/* find out the size of the array */
-        primeAllFncNames(s);
-		int count = m_func2FirstLine.size();
-		return m_func2FirstLine.keySet().toArray(new String[count]);
-	}
-
-	private static String generateShortName(NameParser nameParser)
-	{
-		String name = nameParser.getOriginalName();
-		String s = name;
-
-		if (nameParser.isPathPackageAndFilename()) {
-			s = nameParser.getFilename();
-		} else {
-			/* do we have a file name? */
-			int dotAt = name.lastIndexOf('.');
-			if (dotAt > 1)
-			{
-				/* yes let's strip the directory off */
-				int lastSlashAt = name.lastIndexOf('\\', dotAt);
-				lastSlashAt = Math.max(lastSlashAt, name.lastIndexOf('/', dotAt));
-	
-				s = name.substring(lastSlashAt+1);
-			}
-			else
-			{
-				/* not a file name ... */
-				s = name;
-			}
-		}
-		return s.trim();
-	}
-
-	/**
-	 * Produce a name that contains a file specification including full path.
-	 * File names may come in as 'mx.bla : file:/bla.foo.as' or as
-	 * 'file://bla.foo.as' or as 'C:\'(?) or as 'basepath;package;filename'
-	 */
-	private static String generatePath(NameParser nameParser)
-	{
-		String name = nameParser.getOriginalName();
-		String s = name;
-
-		/* strip off first colon of stuff if package exists */
-		int colonAt = name.indexOf(':');
-		if (colonAt > 1 && !name.startsWith("Actions for")) //$NON-NLS-1$
-		{
-			if (name.charAt(colonAt+1) == ' ')
-				s = name.substring(colonAt+2);
-		}
-		else if (name.indexOf('.') > -1 && name.charAt(0) != '<' )
-		{
-			/* some other type of file name */
-			s = nameParser.recombine();
-		}
-		else
-		{
-			// no path
-			s = ""; //$NON-NLS-1$
-		}
-		return s.trim();
-	}
-
-	public void lineMapping(StringBuilder sb)
-	{
-		Map<String, String> args = new HashMap<String, String>();
-		args.put("fileName", getName() ); //$NON-NLS-1$
-		args.put("fileNumber", Integer.toString(getId()) ); //$NON-NLS-1$
-        sb.append(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("functionsInFile", args)); //$NON-NLS-1$
-		sb.append(m_newline);
-
-		String[] funcNames = m_func2FirstLine.keySet().toArray(new String[m_func2FirstLine.size()]);
-		Arrays.sort(funcNames, new Comparator<String>() {
-
-			public int compare(String o1, String o2) {
-				int line1 = m_func2FirstLine.get(o1).intValue();
-				int line2 = m_func2FirstLine.get(o2).intValue();
-				return line1 - line2;
-			}
-			
-		});
-
-		for (int i=0; i<funcNames.length; ++i)
-		{
-			String name = funcNames[i];
-			int firstLine = m_func2FirstLine.get(name).intValue();
-			int lastLine = m_func2LastLine.get(name).intValue();
-
-			sb.append(" "); //$NON-NLS-1$
-			sb.append(name);
-			sb.append(" "); //$NON-NLS-1$
-			sb.append(firstLine);
-			sb.append(" "); //$NON-NLS-1$
-			sb.append(lastLine);
-			sb.append(m_newline);
-		}
-	}
-
-    int compareTo(DModule other)
-    {
-        return getName().compareTo(other.getName());
-    }
-
-    /**
-     * Called in order to make sure that we have a function name available
-     * at the given location.  For AVM+ swfs we don't need a swd and therefore
-     * don't have access to function names in the same fashion.
-     * We need to ask the player for a particular function name.
-     */
-    void primeFncName(Session s, int line)
-    {
-		// for now we do all, optimize later
-		primeAllFncNames(s);
-    }
-
-    void primeAllFncNames(Session s)
-    {
-        // send out the request for all functions that the player knows
-        // about for this module
-
-        // we block on this call waiting for an answer and after we get it
-        // the DManager thread should have populated our mapping tables
-        // under the covers.  If its fails then no biggie we just won't
-        // see anything in the tables.
-        PlayerSession ps = (PlayerSession)s;
-        if (!m_gotAllFncNames && ps.playerVersion() >= 9)
-        {
-            try
-            {
-                ps.requestFunctionNames(m_id, -1, m_isolateId);
-            }
-            catch (VersionException e)
-            {
-                ;
-            }
-            catch (NoResponseException e)
-            {
-                ;
-            }
-        }
-        m_gotAllFncNames = true;
-    }
-
-	void addLineFunctionInfo(int offset, int line, String funcName)
-	{
-		addLineFunctionInfo(offset, line, line, funcName);
-	}
-
-	/**
-	 * Called by DSwfInfo in order to add function name / line / offset mapping
-	 * information to the module.  
-	 */
-	void addLineFunctionInfo(int offset, int firstLine, int lastLine, String funcName)
-	{
-		int line;
-
-		// strip down the function name
-		if (funcName == null || funcName.length() == 0)
-		{
-			funcName = "<anonymous$" + (++m_anonymousFunctionCounter) + ">"; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		else
-		{
-			// colons or slashes then this is an AS3 name, strip off the core::
-			int colon = funcName.lastIndexOf(':');
-			int slash = funcName.lastIndexOf('/');
-			if (colon > -1 || slash > -1)
-			{
-				int greater = Math.max(colon, slash);
-                funcName = funcName.substring(greater+1);
-            }
-            else
-            {
-    			int dot = funcName.lastIndexOf('.');
-	    		if (dot > -1)
-		    	{
-                    // extract function and package
-                    String pkg = funcName.substring(0, dot);
-                    funcName = funcName.substring(dot+1);
-
-                    // attempt to set the package name while we're in here
-                    setPackageName(pkg);
-//					System.out.println(m_id+"-func="+funcName+",pkg="+pkg);
-                }
-            }
-		}
-
-//		System.out.println(m_id+"@"+offset+"="+getPath()+".adding func="+funcName);
-
-		// make sure m_line2Offset is big enough for the lines we're about to set
-		m_line2Offset.ensureCapacity(firstLine+1);
-		while (firstLine >= m_line2Offset.size())
-			m_line2Offset.add(null);
-
-		// add the offset mapping
-		m_line2Offset.set(firstLine, new Integer(offset));
-
-		// make sure m_line2Func is big enough for the lines we're about to se
-		m_line2Func.ensureCapacity(lastLine+1);
-		while (lastLine >= m_line2Func.size())
-			m_line2Func.add(null);
-
-		// offset and byteCode ignored currently, only add the name for the first hit
-		for (line = firstLine; line <= lastLine; ++line)
-		{
-			Object funcs = m_line2Func.get(line);
-			// A line can correspond to more than one function.  The most common case
-			// of that is an MXML tag with two event handlers on the same line, e.g.
-			//		<mx:Button mouseOver="overHandler()" mouseOut="outHandler()" />;
-			// another case is the line that declares an inner anonymous function:
-			//		var f:Function = function() { trace('hi') }
-			// In any such case, we store a list of function names separated by commas,
-			// e.g. "func1, func2"
-			if (funcs == null)
-			{
-				m_line2Func.set(line, funcName);
-			}
-			else if (funcs instanceof String)
-			{
-				String oldFunc = (String) funcs;
-				m_line2Func.set(line, new String[] { oldFunc, funcName });
-			}
-			else if (funcs instanceof String[])
-			{
-				String[] oldFuncs = (String[]) funcs;
-				String[] newFuncs = new String[oldFuncs.length + 1];
-				System.arraycopy(oldFuncs, 0, newFuncs, 0, oldFuncs.length);
-				newFuncs[newFuncs.length - 1] = funcName;
-				m_line2Func.set(line, newFuncs);
-			}
-		}
-
-		// add to our function name list
-		if (m_func2FirstLine.get(funcName) == null)
-		{
-			m_func2FirstLine.put(funcName, new Integer(firstLine));
-			m_func2LastLine.put(funcName, new Integer(lastLine));
-		}
-	}
-
-    /**
-     * Scan the disk looking for the location of where the source resides.  May
-     * also peel open a swd file looking for the source file.
-     * @param name original full path name of the source file
-     * @return string containing the contents of the file, or null if not found
-     */
-    private String scriptFromDisk(String name)
-    {
-        // we expect the form of the filename to be in the form
-        // "c:/src/project;debug;myFile.as"
-        // where the semicolons demark the include directory searched by the
-        // compiler followed by package directories then file name.
-        // any slashes are to be forward slash only!
-
-        // translate to neutral form
-        name = name.replace('\\','/');  //@todo remove this when compiler is complete
-
-        // pull the name apart
-        final char SEP = ';';
-        String pkgPart = ""; //$NON-NLS-1$
-        String pathPart = ""; //$NON-NLS-1$
-        String namePart = ""; //$NON-NLS-1$
-        int at = name.indexOf(SEP);
-        if (at > -1)
-        {
-            // have at least 2 parts to name
-            int nextAt = name.indexOf(SEP, at+1);
-            if (nextAt > -1)
-            {
-                // have 3 parts
-                pathPart = name.substring(0, at);
-                pkgPart = name.substring(at+1, nextAt);
-                namePart = name.substring(nextAt+1);
-            }
-            else
-            {
-                // 2 parts means no package.
-                pathPart = name.substring(0, at);
-                namePart = name.substring(at+1);
-            }
-        }
-        else
-        {
-            // should not be here....
-            // trim by last slash
-            at = name.lastIndexOf('/');
-            if (at > -1)
-            {
-				// cheat by looking for dirname "mx" in path
-				int mx = name.lastIndexOf("/mx/"); //$NON-NLS-1$
-				if (mx > -1)
-				{
-					pathPart = name.substring(0, mx);
-					pkgPart = name.substring(mx+1, at);
-				}
-				else
-				{
-					pathPart = name.substring(0, at);
-				}
-				
-                namePart = name.substring(at+1);
-            }
-            else
-            {
-                pathPart = "."; //$NON-NLS-1$
-                namePart = name;
-            }
-        }
-
-        String script = null;
-        try
-        {
-            // now try to locate the thing on disk or in a swd.
-        	Charset realEncoding = null;
-        	Charset bomEncoding = null;
-        	InputStream in = locateScriptFile(pathPart, pkgPart, namePart);
-        	if (in != null)
-        	{
-        		try
-        		{
-        			// Read the file using the appropriate encoding, based on
-        			// the BOM (if there is a BOM) or the default charset for
-        			// the system (if there isn't a BOM)
-                    BufferedInputStream bis = new BufferedInputStream( in );
-                    bomEncoding = getEncodingFromBOM(bis);
-        			script = pullInSource(bis, bomEncoding);
-
-        			// If the file is an XML file with an <?xml> directive,
-        			// it may specify a different directive 
-        			realEncoding = getEncodingFromXMLDirective(script);
-        		}
-        		finally
-        		{
-        			try { in.close(); } catch (IOException e) {}
-        		}
-        	}
-        	
-        	// If we found an <?xml> directive with a specified encoding, and
-        	// it doesn't match the encoding we used to read the file initially,
-        	// start over.
-        	if (realEncoding != null && !realEncoding.equals(bomEncoding))
-        	{
-	            in = locateScriptFile(pathPart, pkgPart, namePart);
-	            if (in != null)
-	            {
-					try
-					{
-						// Read the file using the real encoding, based on the
-						// <?xml...> directive
-	                    BufferedInputStream bis = new BufferedInputStream( in );
-	                    getEncodingFromBOM(bis);
-	        			script = pullInSource(bis, realEncoding);
-					}
-					finally
-					{
-						try { in.close(); } catch (IOException e) {}
-					}
-	            }
-        	}
-        }
-        catch(FileNotFoundException fnf)
-        {
-            fnf.printStackTrace();  // shouldn't really happen
-        }
-        return script;
-    }
-
-    /**
-     * Logic to poke around on disk in order to find the given
-     * filename.  We look under the mattress and all other possible
-     * places for the silly thing.  We always try locating
-     * the file directly first, if that fails then we hunt out
-     * the swd.
-     */
-    InputStream locateScriptFile(String path, String pkg, String name) throws FileNotFoundException
-    {
-		if (m_sourceLocator != null)
-		{
-			m_sourceLocatorChangeCount = m_sourceLocator.getChangeCount();
-			InputStream is = m_sourceLocator.locateSource(path, pkg, name);
-			if (is != null)
-				return is;
-		}
-
-        // convert slashes first
-        path = path.replace('/', File.separatorChar);
-        pkg = pkg.replace('/', File.separatorChar);
-        File f;
-
-        // use a package base directory if it exists
-		if (path.length() > 0)
-		{
-	        try
-	        {
-				String pkgAndName = ""; //$NON-NLS-1$
-				if (pkg.length() > 0) // have to do this so we don't end up with just "/filename"
-					pkgAndName += pkg + File.separatorChar;
-				pkgAndName += name;
-	            f = new File(path, pkgAndName);
-	            if (f.exists())
-	                return new FileInputStream(f);
-	        }
-	        catch(NullPointerException npe)
-	        {
-	            // skip it.
-	        }
-		}
-
-        // try the current directory plus package
-		if (pkg.length() > 0) // new File("", foo) looks in root directory!
-		{
-			f = new File(pkg, name);
-			if (f.exists())
-				return new FileInputStream(f);
-		}
-
-        // look in the current directory without the package
-        f = new File(name);
-        if (f.exists())
-            return new FileInputStream(f);
-
-        // @todo try to pry open a swd file...
-               
-        return null;
-    }
-    
-    /**
-     * See if this document starts with a BOM and try to figure
-     * out an encoding from it.
-     * @param bis		BufferedInputStream for document (so that we can reset the stream
-     * 					if we establish that the first characters aren't a BOM)
-     * @return			CharSet from BOM (or system default / null)
-     */
-	private Charset getEncodingFromBOM(BufferedInputStream bis)
-	{
-		Charset bomEncoding = null;
-		bis.mark(3);
-		String bomEncodingString;
-		try
-		{
-			bomEncodingString = FileUtils.consumeBOM(bis, null);
-		}
-		catch (IOException e)
-		{
-			bomEncodingString = System.getProperty("file.encoding"); //$NON-NLS-1$
-		}
-
-		bomEncoding = Charset.forName(bomEncodingString);
-
-		return bomEncoding;
-	}
-
-    /**
-     * Syntax for an <?xml ...> directive with an encoding (used by getEncodingFromXMLDirective)
-     */
-    private static final Pattern sXMLDeclarationPattern = Pattern.compile("^<\\?xml[^>]*encoding\\s*=\\s*(\"([^\"]*)\"|'([^']*)')"); //$NON-NLS-1$
-    
-    /**
-     * See if this document starts with an <?xml ...> directive and
-     * try to figure out an encoding from it.
-     * @param entireSource		source of document
-     * @return					specified Charset (or null)
-     */
-    private Charset getEncodingFromXMLDirective(String entireSource)
-    {
-    	String encoding = null;
-    	Matcher xmlDeclarationMatcher = sXMLDeclarationPattern.matcher(entireSource);
-    	if (xmlDeclarationMatcher.find())
-    	{
-    		encoding = xmlDeclarationMatcher.group(2);
-    		if (encoding == null)
-    			encoding = xmlDeclarationMatcher.group(3);
-    		
-    		try
-    		{
-    			return Charset.forName(encoding);
-    		}
-    		catch (IllegalArgumentException e)
-    		{}
-    	}
-    	return null;
-    }
-
-    /**
-     * Given an input stream containing source file contents, read in each line
-     * @param in			stream of source file contents (with BOM removed)
-     * @param encoding		encoding to use (based on BOM, system default, or <?xml...> directive
-     * 						if this is null, the system default will be used)
-     * @return				source file contents (as String)
-     */
-    String pullInSource(InputStream in, Charset encoding)
-    {
-        String script = ""; //$NON-NLS-1$
-        BufferedReader f = null;
-        try
-        {
-        	StringBuilder sb = new StringBuilder();
-        	Reader reader = null;
-        	if (encoding == null)
-        		reader = new InputStreamReader(in);
-        	else
-        		reader = new InputStreamReader(in, encoding);
-            f = new BufferedReader(reader);
-            String line;
-            while((line = f.readLine()) != null)
-            {
-                sb.append(line);
-                sb.append('\n');
-            }
-            script = sb.toString();
-        }
-        catch (IOException e)
-        {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        }
-        return script;
-    }
-
-    /** for debugging */
-    @Override
-	public String toString()
-    {
-    	return getFullPath();
-    }
- 
-	/**
-	 * Given a filename of the form "basepath;package;filename", return an
-	 * array of 3 strings, one for each segment.
-	 * @param name a string which *may* be of the form "basepath;package;filename"
-	 * @return an array of 3 strings for the three pieces; or, if 'name' is
-	 * not of expected form, returns null
-	 */
-	private static class NameParser
-	{
-		private String fOriginalName;
-		private String fBasePath;
-		private String fPackage;
-		private String fFilename;
-		private String fRecombinedName;
-
-		public NameParser(String name)
-		{
-			fOriginalName = name;
-
-			/* is it of "basepath;package;filename" format? */
-			int semicolonCount = 0;
-			int i = 0;
-			int firstSemi = -1;
-			int lastSemi = -1;
-			while ( (i = name.indexOf(';', i)) >= 0 )
-			{
-				++semicolonCount;
-				if (firstSemi == -1)
-					firstSemi = i;
-				lastSemi = i;
-				++i;
-			}
-
-			if (semicolonCount == 2)
-			{
-				fBasePath = name.substring(0, firstSemi);
-				fPackage = name.substring(firstSemi+1, lastSemi);
-				fFilename = name.substring(lastSemi+1);
-			}
-		}
-
-		public boolean isPathPackageAndFilename()
-		{
-			return (fBasePath != null);
-		}
-
-		public String getOriginalName()
-		{
-			return fOriginalName;
-		}
-
-		public String getBasePath()
-		{
-			return fBasePath;
-		}
-
-		public String getFilename()
-		{
-			return fFilename;
-		}
-
-		public String getPackage()
-		{
-			return fPackage;
-		}
-
-		/**
-		 * Returns a "recombined" form of the original name.
-		 * 
-		 * For filenames which came in in the form "basepath;package;filename",
-		 * the recombined name is the original name with the semicolons replaced
-		 * by platform-appropriate slash characters.  For any other type of original
-		 * name, the recombined name is the same as the incoming name.
-		 */
-		public String recombine()
-		{
-			if (fRecombinedName == null)
-			{
-				if (isPathPackageAndFilename())
-				{
-					char slashChar;
-					if (fOriginalName.indexOf('\\') != -1)
-						slashChar = '\\';
-					else
-						slashChar = '/';
-
-					fRecombinedName = fOriginalName.replaceAll(";;", ";").replace(';', slashChar); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				else
-				{
-					fRecombinedName = fOriginalName;
-				}
-			}
-			return fRecombinedName;
-		}
-	}
-
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DProtocol.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DProtocol.java
deleted file mode 100644
index 7965acb..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DProtocol.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.SocketTimeoutException;
-import java.util.EnumMap;
-
-import flash.tools.debugger.SessionManager;
-import flash.util.Trace;
-
-/**
- * Implements the lower portion of Flash Player debug protocol.  This class is able to
- * communicate with the Flash Player sending and receiving any and all messages neccessary
- * in order to continue a debug session with the Player.
- * 
- * It does not understand the context of messages that it receives and merely provides
- * a channel for formatting and unformatting the messages.
- *  
- * The messages are defined on the flash side in core/debugtags.h and handled in the 
- * code under core/playerdebugger.cpp
- * 
- * Messages that are received via this class are packaged in a DMessage and then
- * provided to any listeners if requested.   Filtering of incoming messages 
- * at this level is not supported.
- */
-public class DProtocol implements Runnable
-{
-	public static final int DEBUG_PORT = 7935;
-	
-	/* We connect to AIR in the case of AIR on Android over USB */
-	public static final int DEBUG_CONNECT_PORT = 7936;
-
-	private final BufferedInputStream	m_in;
-	private final BufferedOutputStream	m_out;
-	private final EnumMap<ListenerIndex, DProtocolNotifierIF> m_listeners; // WARNING: accessed from multiple threads
-	private long						m_msgRx;		// WARNING: accessed from multiple threads; use synchronized (this)
-	private long						m_msgTx;		// WARNING: accessed from multiple threads; use synchronized (this)
-	private volatile boolean			m_stopRx;		// WARNING: accessed from multiple threads
-	private volatile Thread				m_rxThread;		// WARNING: accessed from multiple threads
-	private volatile Exception m_disconnectCause;
-	private volatile Socket m_socket;
-	private boolean m_detectBrokenSocket;
-
-	public enum ListenerIndex
-	{
-		PlayerSession,
-
-		/**
-		 * The DMessageCounter must always be the LAST listener, so that the message has
-		 * been fully processed before we wake up any threads that were waiting until a
-		 * message comes in.
-		 */
-		MessageCounter
-	}
-
-	public DProtocol(BufferedInputStream in, BufferedOutputStream out)
-	{
-		m_in = in;
-		m_out = out;
-		m_listeners = new EnumMap<ListenerIndex, DProtocolNotifierIF>(ListenerIndex.class);
-		m_msgRx = 0;
-		m_msgTx = 0;
-		m_stopRx = false;
-		m_rxThread = null;
-		m_socket = null;
-		m_detectBrokenSocket = false;
-		// Create a message counter, which will listen to us for messages
-		addListener(ListenerIndex.MessageCounter, new DMessageCounter());
-	}
-	
-	public DProtocol(BufferedInputStream in, BufferedOutputStream out, 
-			Socket s, boolean detectBrokenSocket)
-	{
-		this(in, out);
-		m_socket = s;
-		m_detectBrokenSocket = detectBrokenSocket;
-	}
-	
-	
-	/**
-	 * Set the base socket options
-	 * @throws SocketException
-	 */
-	static void applyBaseSocketSettings(Socket s) throws SocketException 
-	{
-		// For performance reasons, it is very important that we setTcpNoDelay(true),
-		// thus disabling Nagle's algorithm.  Google for TCP_NODELAY or Nagle
-		// for more information.
-		//
-		// In addition, we now use a BufferedOutputStream instead of an OutputStream.
-		//
-		// These changes result in a huge speedup on the Mac.
-		s.setTcpNoDelay(true);		
-	}
-	
-	static DProtocol createDProtocolFromSocket(Socket s, boolean detectBrokenSocket) throws IOException
-	{
-		BufferedInputStream in = new BufferedInputStream(s.getInputStream());
-		BufferedOutputStream out = new BufferedOutputStream(s.getOutputStream());
-
-		DProtocol dp = new DProtocol(in, out, s, detectBrokenSocket);
-		return dp;
-	}
-
-	/**
-     * Build a DProtocol object from a the given socket connection.
-     */
-	static DProtocol createFromSocket(Socket s) throws IOException
-	{
-		applyBaseSocketSettings(s);
-		return createDProtocolFromSocket(s, false);
-	}
-	
-	/**
-     * Build a DProtocol object from a the given socket connection
-     * and applies socket specific settings set in SessionManager
-     * like socket timeout.
-     */
-	static DProtocol createFromSocket(Socket s, SessionManager sessionManager) throws IOException
-	{
-		applyBaseSocketSettings(s);
-		int socketTimeout = sessionManager.getPreference(SessionManager.PREF_SOCKET_TIMEOUT);
-		boolean checkSocket = false;
-		if (socketTimeout > 0)
-		{
-			s.setSoTimeout(socketTimeout);
-			checkSocket = true;
-		}
-		return createDProtocolFromSocket(s, checkSocket);
-	}
-
-	/**
-	 * Allow outside entities to listen for incoming DMessages.
-	 * 
-	 * @param index
-	 *            the index of this listener. Listeners have a strictly defined
-	 *            order.
-	 * @param n
-	 *            the listener
-	 */
-	public boolean addListener(ListenerIndex index, DProtocolNotifierIF n)
-	{
-		synchronized (m_listeners)
-		{
-			m_listeners.put(index, n);
-		}
-		return true;
-	}
-
-	public long messagesReceived()		{ synchronized (this) { return m_msgRx; } }
-	public long messagesSent()			{ synchronized (this) { return m_msgTx; } }
-
-	/**
-	 * Entry point for our receive thread 
-	 */
-	public void run()
-	{
-		try
-		{
-			m_stopRx = false;
-			listenForMessages();
-		}
-		catch(Exception ex) 
-		{  
-			m_disconnectCause = ex;
-			if (Trace.error &&
-				!(ex instanceof SocketException && ex.getMessage().equalsIgnoreCase("socket closed"))) // closed-socket is not an error //$NON-NLS-1$
-			{
-				ex.printStackTrace();
-			}
-		}
-
-		/* notify our listeners that we are no longer listening;  game over */
-		DProtocolNotifierIF[] listeners;
-		synchronized (m_listeners)
-		{
-			listeners = m_listeners.values().toArray(new DProtocolNotifierIF[m_listeners.size()]); // copy the list to avoid multithreading problems
-		}
-		for (int i=0; i<listeners.length; ++i)
-		{
-			DProtocolNotifierIF elem = listeners[i];
-			try
-			{
-				elem.disconnected();
-			}
-			catch(Exception exc) /* catch unchecked exceptions */
-			{
-				if (Trace.error)
-					exc.printStackTrace();
-			}
-		}
-
-		// final notice that this thread is dead! 
-		m_rxThread = null;
-		m_socket = null;
-	}
-
-	/** 
-	 * Create and start up a thread for our receiving messages.  
-	 */
-	public boolean bind()
-	{
-		/* create a new thread object for us which just listens to incoming messages */
-		boolean worked = true;
-		if (m_rxThread == null)
-		{
-			getMessageCounter().clearInCounts();
-			getMessageCounter().clearOutCounts();
-
-			m_rxThread = new Thread(this, "DJAPI message listener"); //$NON-NLS-1$
-			m_rxThread.setDaemon(true);
-			m_rxThread.start();
-		}
-		else
-			worked = false;
-
-		return worked;
-	}
-
-	/**
-	 * Shutdown our receive thread 
-	 */
-	public boolean unbind()
-	{
-		boolean worked = true;
-		if (m_rxThread == null)
-			worked = false;
-		else
-			m_stopRx = true;
-
-		return worked;
-	}
-
-	/**
-	 * Main rx loop which waits for commands and then issues them to anyone listening.
-     */
-	void listenForMessages() throws IOException
-	{
-		DProtocolNotifierIF[] listeners = new DProtocolNotifierIF[0];
-
-		while(!m_stopRx)
-		{
-			/* read the data */
-			try
-			{
-				DMessage msg = rxMessage();
-
-				/* Now traverse our list of interested parties and let them deal with the message */
-				synchronized (m_listeners)
-				{
-					listeners = m_listeners.values().toArray(listeners); // copy the array to avoid multithreading problems
-				}
-				for (int i=0; i<listeners.length; ++i)
-				{
-					DProtocolNotifierIF elem = listeners[i];
-					try
-					{
-						elem.messageArrived(msg, this);
-					}
-					catch (Exception exc) /* catch unchecked exceptions */
-					{
-//						if (Trace.error) 
-//						{
-							System.err.println("Error in listener parsing incoming message :"); //$NON-NLS-1$
-							System.err.println(msg.inToString(16));
-							exc.printStackTrace(); 
-//						}
-					}
-					msg.reset();  /* allow others to reparse the message */
-				}
-
-				/* now dispose with the message */
-				DMessageCache.free(msg);
-			}
-			catch(InterruptedIOException iio)
-			{ 
-				// this is a healthy exception that we simply ignore, since it means we haven't seen
-				// data for a while; is all.
-			}
-		}
-	}
-
-	/**
-	 * Transmit the message down the socket.
-	 * 
-	 * This function is not synchronized; it is only called from one place, which is
-	 * PlayerSession.sendMessage().  That function is synchronized.
-	 */
-	void txMessage(DMessage message) throws IOException
-	{
-		int size = message.getSize();
-		int command = message.getType();
-
-        //System.out.println("txMessage: " + DMessage.outTypeName(command) + " size=" + size);
-
-        writeDWord(size);
-		writeDWord(command);
-		writeData(message.getData(), size);
-
-		m_out.flush();
-		synchronized (this) { m_msgTx++; }
-		getMessageCounter().messageSent(message);
-	}
-
-	class SendThread extends Thread {
-		public IOException exception = null;
-		public volatile boolean completed = false;
-		
-		@Override
-		public void run() {
-			try {
-				DMessage dm = DMessageCache.alloc(4);
-				dm.setType(DMessage.OutSetSquelch);
-				dm.putDWord(1);
-				txMessage(dm);
-				DMessageCache.free(dm);
-				this.completed = true;
-			}
-			catch (IOException e) {
-				this.exception = e;
-			}
-		}
-	}
-	/** 
-     * Get the next message on the input stream, using the context contained within 
-     * the message itself to demark its end
-     */
-	private DMessage rxMessage() throws IOException
-	{
-        int size = -1;
-		int command = 0;
-
-		try 
-		{
-			size = (int)readDWord();
-			command = (int)readDWord();
-		}
-		catch (SocketTimeoutException e) 
-		{
-			if (!m_detectBrokenSocket)
-				throw e;
-			//schedule a simple message to be sent for
-			//heartbeat check 
-			/**
-			 * Our logic kicks in after PREF_SOCKET_TIMEOUT 
-			 * milliseconds to try and detect broken connection by writing 
-			 * a squelch message to the player. If the write 
-			 * succeeds, we assume everything is normal 
-			 * (we don't wait for an ack). Otherwise, we save the error
-			 * that clients of FDB can use.
-			 * 
-			 * On Mac, the write() blocks which is why it must
-			 * be done in a separate thread. The thread may take
-			 * upto five minutes to die even after interrupt().
-			 * 
-			 * On Windows, the write() succeeds, but we later get
-			 * a recv abort.
-			 */
-			int oldBufferSize = -1;
-			
-			if (m_socket != null) {
-				oldBufferSize = m_socket.getSendBufferSize();
-				m_socket.setSendBufferSize(1);				
-			}
-			
-			SendThread t = new SendThread();
-			t.start();
-			long waitBegin = System.currentTimeMillis();
-			
-			while (true) {
-				try {
-					t.join(1000);
-					if (t.completed)
-						break;
-				} catch (InterruptedException e1) {
-					break;
-				}
-				long waitEnd = System.currentTimeMillis();
-				if (waitEnd - waitBegin > 10000)
-					break;
-			}
-			boolean success = true;
-			if (t.isAlive()) {
-				t.interrupt();
-				success = false;
-			}
-			if (oldBufferSize > 0) {
-				m_socket.setSendBufferSize(oldBufferSize);
-			}
-			if (!t.completed) {
-				success = false;
-			}
-			if (t.exception != null) {
-				throw t.exception;
-			}
-			if (success)
-				throw e;
-			else
-				throw new SocketException("Broken pipe"); //$NON-NLS-1$
-		}
-        //System.out.println("rxMessage: " + DMessage.inTypeName(command) + " size=" + size);
-
-		if (size < 0)
-			throw new IOException("socket closed"); //$NON-NLS-1$
-
-//		if (DMessage.inTypeName(command).startsWith("InUnknown")) {
-//			System.out.println("Ignoring unknown message");
-//			size = 0; 
-//		}
-		
-		/** 
-		 * Ask our message cache for a message
-		 */
-		DMessage message = DMessageCache.alloc(size);
-		byte[] messageContent = message.getData();
-		int offset = 0;
-
-		/* block until we get the entire message, which may come in pieces */
-		while (offset < size)
-			offset += m_in.read(messageContent, offset, size - offset);
-
-		/* now we have the data of the message, set its type and we are done */
-		message.setType(command);
-		synchronized (this) { m_msgRx++; }
-		return message;
-	}
-
-	void writeDWord(long dw) throws IOException
-	{
-		byte b0 = (byte)(dw & 0xff);
-		byte b1 = (byte)((dw >> 8) & 0xff);
-		byte b2 = (byte)((dw >> 16) & 0xff);
-		byte b3 = (byte)((dw >> 24) & 0xff);
-
-		m_out.write(b0);
-		m_out.write(b1);
-		m_out.write(b2);
-		m_out.write(b3);
-	}
-
-	void writeData(byte[] data, long size) throws IOException
-	{
-		if (size > 0)
-			m_out.write(data, 0, (int)size);
-	}
-
-
-	/**
-	 * Extract the next 4 bytes, which form a 32b integer, from the stream
-	 */
-	long readDWord() throws IOException
-	{
-		int b0 = m_in.read();
-		int b1 = m_in.read();
-		int b2 = m_in.read();
-		int b3 = m_in.read();
-		
-		long value = ((b3 << 24) & 0xff000000) | ((b2 << 16) & 0xff0000) | ((b1 << 8) & 0xff00) | (b0 & 0xff);
-		return value;
-	}
-
-	public DMessageCounter getMessageCounter()
-	{
-		synchronized (m_listeners)
-		{
-			return (DMessageCounter) m_listeners.get(ListenerIndex.MessageCounter);
-		}
-	}
-
-	public Exception getDisconnectCause() {
-		return m_disconnectCause;
-	}
-	
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DProtocolNotifierIF.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DProtocolNotifierIF.java
deleted file mode 100644
index 8144711..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DProtocolNotifierIF.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-/**
- * Interface for receiving DMessages from the DProtocol object 
- */
-public interface DProtocolNotifierIF
-{
-	/**
-	 * Issused when a message has been received from the socket
-	 */
-	public void messageArrived(DMessage message, DProtocol which);
-
-	/**
-	 * Issued when the socket connection to the player is cut 
-	 */
-	public void disconnected();
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DStackContext.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DStackContext.java
deleted file mode 100644
index 855082e..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DStackContext.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import flash.tools.debugger.Frame;
-import flash.tools.debugger.Location;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.NotSuspendedException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.Variable;
-
-public class DStackContext implements Frame
-{
-	private DModule		m_source;
-	private String		m_functionSignature;
-	private int			m_depth;
-	private int			m_module;
-	private int			m_line;
-	private DVariable	m_this;
-	private Map<String, DVariable> m_args;
-	private Map<String, DVariable> m_locals;
-	private List<DVariable>        m_scopeChain;
-	private DLocation	m_location;
-	private int			m_swfIndex; /* index of swf that we halted within (really part of location) */
-	private int			m_offset;   /* offset within swf where we halted. (really part of location) */
-	private boolean		m_populated;
-	private DVariable	m_activationObject;
-	private int  m_isolateId;
-
-	public DStackContext(int module, int line, DModule f, long thisId /* bogus */,
-			String functionSignature, int depth, int isolateId)
-	{
-		m_source = f;
-		m_module = module;
-		m_line = line;
-		// the passed-in 'thisId' seems to always be equal to one, which does more harm than good
-		m_this = null;
-		m_functionSignature = functionSignature;
-		m_depth = depth;
-		m_args = new LinkedHashMap<String, DVariable>(); // preserves order
-		m_locals = new LinkedHashMap<String, DVariable>(); // preserves order
-		m_scopeChain = new ArrayList<DVariable>();
-		m_populated = false;
-		m_isolateId = isolateId;
-		m_location = new DLocation(m_source, line, isolateId);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Frame#getLocation()
-	 */
-	public Location   getLocation()
-	{
-		return m_location;
-	}
-
-    /*
-     * @see flash.tools.debugger.Frame#getArguments(flash.tools.debugger.Session)
-     */
-    public Variable[] getArguments(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException
-    {
-    	populate(s);
-    	return m_args.values().toArray( new Variable[m_args.size()] );
-    }
-
-	/*
-	 * @see flash.tools.debugger.Frame#getLocals(flash.tools.debugger.Session)
-	 */
-	public Variable[] getLocals(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException
-	{
-		populate(s);
-		return m_locals.values().toArray( new Variable[m_locals.size()] );
-	}
-
-    /*
-     * @see flash.tools.debugger.Frame#getThis(flash.tools.debugger.Session)
-     */
-    public Variable getThis(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException
-	{
-		populate(s);
-		return getThis();
-	}
-
-	/*
-	 * @see flash.tools.debugger.Frame#getScopeChain()
-	 */
-	public Variable[] getScopeChain(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException
-	{
-		populate(s);
-		return m_scopeChain.toArray(new Variable[m_scopeChain.size()]);
-	}
-
-	/* getters */
-	public String		getCallSignature()		{ return m_functionSignature; }
-	public int			getModule()				{ return m_module; }
-	public int			getLine()				{ return m_line; }
-	public DVariable	getThis()				{ return m_this; }
-
-	/* setters */
-	void addArgument(DVariable v)				{ m_args.put(v.getName(), v); }
-	void addLocal(DVariable v)					{ m_locals.put(v.getName(), v); }
-	void addScopeChainEntry(DVariable v)		{ m_scopeChain.add(v); }
-	void removeAllArguments()					{ m_args.clear(); }
-	void removeAllLocals()						{ m_locals.clear(); m_activationObject = null; }
-	void removeAllScopeChainEntries()			{ m_scopeChain.clear(); }
-	void removeAllVariables()					{ removeAllLocals(); removeAllArguments(); removeAllScopeChainEntries(); }
-	void setDepth(int depth)					{ m_depth = depth; }
-	void setThis(DVariable v)					{ m_this = v; }
-	void setSwfIndex(int index)					{ m_swfIndex = index; }
-	void setOffset(int offset)					{ m_offset = offset; }
-	void setIsolateId(int id)					{ m_isolateId = id; }
-	void markStale()							{ m_populated = false; } // triggers a reload of variables.
-
-	/**
-	 * Removes the specified variable from the list of locals, and
-	 * remembers that the specified variable is the "activation object"
-	 * for this frame.  See bug 155031.
-	 */
-	void convertLocalToActivationObject(DVariable v)
-	{
-		m_activationObject = v;
-		m_locals.remove(v.getName());
-	}
-
-	/**
-	 * Gets the activation object for this frame, or <code>null</code>
-	 * if none.  See bug FB-2674.
-	 */
-	DVariable getActivationObject()
-	{
-		return m_activationObject;
-	}
-
-	/**
-	 * Populate ensures that we have some locals and args. That is
-	 * that we have triggered a InFrame call to the player
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
-	 * @throws NotConnectedException
-	 */
-	void populate(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException
-	{
-		if (!m_populated)
-		{
-			PlayerSession ses = ((PlayerSession)s);
-			ses.requestFrame(m_depth, m_isolateId);
-			
-			m_populated = true;
-		}
-	}
-
-	public int getIsolateId() 
-	{
-		return m_isolateId;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DSuspendInfo.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DSuspendInfo.java
deleted file mode 100644
index e051c21..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DSuspendInfo.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import flash.tools.debugger.SuspendReason;
-
-/**
- * The suspend information object returns information about the
- * current halted state of the Player.
- */
-public class DSuspendInfo
-{
-	int m_reason;
-	int m_actionIndex;  // which script caused the halt
-	int m_offset;		// offset into the actions that the player has halted
-	int m_previousOffset;  // previous offset, if any, which lies on the same source line (-1 means unknown)
-	int m_nextOffset;  // next offset, if any, which lies on the same source line (-1 means unknown)
-
-	public DSuspendInfo()
-	{
-		m_reason = SuspendReason.Unknown;
-		m_actionIndex =	-1;
-		m_offset = -1;	
-		m_previousOffset = -1;
-		m_nextOffset = -1;
-	}
-
-	public DSuspendInfo(int reason, int actionIndex, int offset, int previousOffset, int nextOffset)
-	{
-		m_reason = reason;
-		m_actionIndex =	actionIndex;
-		m_offset = offset;	
-		m_previousOffset = previousOffset;
-		m_nextOffset = nextOffset;
-	}
-
-    public int getReason()			{ return m_reason; }
-	public int getActionIndex()		{ return m_actionIndex; }
-    public int getOffset()			{ return m_offset; }
-	public int getPreviousOffset()	{ return m_previousOffset; }
-	public int getNextOffset()		{ return m_nextOffset; }
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DSwfInfo.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DSwfInfo.java
deleted file mode 100644
index 226dd72..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DSwfInfo.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.util.Map;
-
-import flash.swf.debug.DebugModule;
-import flash.swf.debug.LineRecord;
-import flash.tools.ActionLocation;
-import flash.tools.debugger.InProgressException;
-import flash.tools.debugger.Isolate;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SourceFile;
-import flash.tools.debugger.SwfInfo;
-import flash.tools.debugger.events.FunctionMetaDataAvailableEvent;
-import flash.util.IntMap;
-
-public class DSwfInfo implements SwfInfo
-{
-	private int			m_index;
-	private long		m_id;
-	private IntMap		m_source;
-	private String		m_path;
-	private String		m_url;
-	private String		m_host;
-	private int			m_port;
-	private boolean		m_swdLoading;
-	private int			m_swfSize;
-	private int			m_swdSize;
-	private int			m_bpCount;
-	private int			m_offsetCount;
-	private int			m_scriptsExpected;
-	private int			m_minId;		// first script id in the swf
-	private int			m_maxId;		// last script id in this swf
-	private byte[]		m_swf;			// actual swf contents
-	private byte[]		m_swd;			// actual swd contents
-	private boolean		m_unloaded;		// set if the player has unloaded this swf
-	private Map<Long,Integer> m_local2Global; // local script id to global script id mapping table
-	private int			m_numRefreshes; // number of refreshes we have taken
-	private int         m_vmVersion;    // version of the vm
-
-	private boolean						m_populated;	// set if we have already tried to load swf/swd for this info
-	private LineFunctionContainer		m_container;	// used for pulling out detailed info about the swf
-
-	private final static String UNKNOWN = PlayerSessionManager.getLocalizationManager().getLocalizedTextString("unknown"); //$NON-NLS-1$
-
-	public DSwfInfo(int index, int isolateId)	
-	{	
-		// defaults values of zero
-		m_id = 0;
-		m_index = index;
-		m_source = new IntMap();
-		m_path = UNKNOWN;
-		m_url = UNKNOWN;
-		m_host = UNKNOWN;
-		m_port = 0;
-		m_swdLoading = true;
-		m_scriptsExpected = -1;  // means not yet set by anyone!
-		m_isolateId = isolateId;
-		// rest default to null, 0 or false
-	}
-
-	/** SwfInfo interface */
-	public String		getPath()												{ return m_path; }
-	public String		getUrl()												{ return m_url; }
-	public int			getSwfSize()											{ return m_swfSize; }
-	public int			getSwdSize(Session s) throws InProgressException		{ swdLoaded(s); return m_swdSize; } 
-	public boolean		isUnloaded()											{ return m_unloaded; }
-	public boolean		isProcessingComplete()									{ return isPopulated(); } 
-	public boolean		containsSource(SourceFile f)							{ return m_source.contains(f.getId()); }
-
-	/* getters */
-	public long			getId()					{ return m_id; }
-	public String		getHost()				{ return m_host; }
-	public int			getPort()				{ return m_port; }
-	public int			getSwdSize() 			{ return m_swdSize; }
-	public int			getRefreshCount()		{ return m_numRefreshes; }
-	public boolean		isSwdLoading()			{ return m_swdLoading; }
-	public boolean		isPopulated()			{ return m_populated; }
-	public byte[]		getSwf()				{ return m_swf; }
-	public byte[]		getSwd()				{ return m_swd; }
-	public int			getSourceExpectedCount()	{ return m_scriptsExpected; }
-    public int          getVmVersion()          { return m_vmVersion;  }
-
-//	public int			getBreakpointCount() throws InProgressException	{ swdLoading(); return m_bpCount; }
-//	public int			getOffsetCount() 		{ swdLoading(); return m_offsetCount; }
-	public int			getSourceCount() 	{ return m_source.size(); }
-	public int			getFirstSourceId() 	{ return m_minId; }
-	public int			getLastSourceId() 	{ return m_maxId; }
-
-    public void         setVmVersion(int vmVersion) { m_vmVersion = vmVersion;  }
-	public void			setUnloaded()			{ m_unloaded = true; }
-	public void			setSwf(byte[] swf)		{ m_swf = swf; }
-	public void			setSwd(byte[] swd)		{ m_swd = swd; }
-	public void			setPopulated()			{ m_swdLoading = false; m_populated = true; }  // no more waiting for swd, we're done
-	public void			setSourceExpectedCount(int c) { m_scriptsExpected = c; }
-
-	public void			addSource(int i, DModule m) { m_source.put(i, m); }
-
-	/**
-	 * Return the number of sources that we have
-	 */
-	public int getSourceCount(Session s) throws InProgressException	
-	{ 
-		// only if we don't have it all yet
-		// then try to force a load
-		if (!hasAllSource())
-			swdLoaded(s); 
-
-		return getSourceCount(); 
-	}
-
-	/**
-	 * Return a list of our sources
-	 */
-	public SourceFile[] getSourceList(Session s) throws InProgressException		
-	{
-		// only if we don't have it all yet
-		// then try to force a load
-		if (!hasAllSource())
-			swdLoaded(s); 
-
-		return (SourceFile[])m_source.valuesToArray( new SourceFile[m_source.size()] ); 
-	}
-
-	/**
-	 * Make sure that the player has loaded our swd.  If not
-	 * we continue InProgressException to query the player for when its complete.
-	 * At some point we give up and finally admit that
-	 * we don't have a swd associated with this swf.
-	 */
-	void swdLoaded(Session s) throws InProgressException
-	{
-		if (isSwdLoading() && !isUnloaded())
-		{
-			// make the request 
-//			System.out.println("Swdloaded " + m_isolateId);
-			try { ((PlayerSession)s).requestSwfInfo(m_index, m_isolateId); } catch(NoResponseException nre) {}
-
-			// I should now be complete
-			if (!m_swdLoading)
-				;  // done!
-			else if (getSourceExpectedCount() > -1 && m_numRefreshes > 10)
-				setPopulated();  // tried too many times, so bail big time, no swd available (only if we already have our expected count)
-			else
-				throw new InProgressException(); // still loading!!!
-		}
-	}
-
-	/**
-	 * This method returns true once we have all the scripts
-	 * that we expect to ever have.  We can get the information about
-	 * how many scripts we should get from two sources, 1) we may
-	 * get an InSwfInfo message from the player which contains
-	 * this value and 2) we may get a InNumScript message which
-	 * contains a script count.  A small caveat of course, is that
-	 * in case 1. we may also not get the a value if the swd has
-	 * not been fully processed by the player yet. 
-	 */
-	public boolean hasAllSource()
-	{
-		boolean yes = false;
-		int expect = getSourceExpectedCount();
-		int have = getSourceCount();
-
-		// if they are equal we are done, unless
-		// our expectation has not been set and have not yet loaded our swd
-		if (expect == -1 && isSwdLoading())
-			yes = false;
-		else if (expect == have)
-			yes = true;
-		else
-			yes = false;
-
-		return yes;
-	}
-
-	public void freshen(long id, String path, String url, String host, long port, boolean swdLoading, long swfSize, long swdSize, long bpCount, long offsetCount, long scriptCount, Map<Long,Integer> map, int minId, int maxId)
-	{
-		m_id = (int)id;
-		m_path = path;
-		m_url = url;
-		m_host = host;
-		m_port = (int)port;
-		m_swfSize = (int)swfSize;
-		m_swdSize = (int)swdSize;
-		m_bpCount = (int)bpCount;
-		m_offsetCount = (int)offsetCount;
-		m_local2Global = map;
-		m_minId = (swdSize > 0) ? minId : 0;
-		m_maxId = (swdSize > 0) ? maxId : 0;
-		m_swdLoading = swdLoading;
-		m_numRefreshes++;
-
-		// only touch expected count if swd already loaded
-		if (!swdLoading)
-			m_scriptsExpected = (int)scriptCount;
-	}
-
-	/**
-	 * Locate the given offset within the swf
-	 */
-	public ActionLocation locate(int offset)
-	{
-		return m_container.locationLessOrEqualTo(offset);
-	}
-
-	/**
-	 * Ask the container to locate the next line
-	 * record following the location specified in the 
-	 * location, without spilling over into the next
-	 * action list
-	 */
-	public ActionLocation locateSourceLineEnd(ActionLocation l)
-	{
-		return locateSourceLineEnd(l, -1);
-	}
-
-	public ActionLocation locateSourceLineEnd(ActionLocation l, int stopAt)
-	{
-		ActionLocation end = m_container.endOfSourceLine(l);
-		if (stopAt > -1 && end.at > stopAt)
-			end.at = stopAt;
-		return end;
-	}
-
-	/**
-	 * Use the local2global script id map that was provided by the
-	 * Player, so that we can take the local id contained in the swd
-	 * and convert it to a global one that the player has annointed
-	 * to this script.
-	 */
-	int local2Global(long id)
-	{
-		Integer g = m_local2Global.get(id);
-		if (g != null)
-			id = g.intValue();
-
-		return (int) id;
-	}
-
-	/**
-	 * Freshen the contents of this object with the given swf info
-	 * The items that we touch are all swd related, as everything else
-	 * has arrriave
-	 */
-
-	// temporary while we parse
-	DManager m_manager;
-	private int m_isolateId = Isolate.DEFAULT_ID;
-
-	/**
-	 * Extracts information out of the SWF/SWD in order to populate
-	 * function line number tables in SourceFile variabels.
-	 */
-	public void parseSwfSwd(DManager manager)
-	{
-		m_manager = manager;
-
-		// suck in the swf/swd into action lists and then walk the lists
-		// looking for LineRecords
-		m_container = new LineFunctionContainer(m_swf, m_swd);
-		m_container.combForLineRecords(this);
-
-		// we are done, sucess or no
-		setPopulated();
-
-		// log event that we have complete done
-		manager.addEvent(new FunctionMetaDataAvailableEvent());
-		m_manager = null;
-	}
-
-	/**
-	 * This is a callback function from LineFunctionContainer.combForLineRecords()
-	 * We extract what we want and then update the associated module
-	 */
-	public void processLineRecord(ActionLocation where, LineRecord r)
-	{
-		int line = r.lineno;
-		String func = (where.function == null) ? null : where.function.name;
-		DebugModule dm = r.module;
-
-		// locate the source file
-		int id = -1;
-		DModule module;
-
-		if (dm == null || where.at == -1)
-			;
-		else if ( (id = local2Global(dm.id)) < 0 )
-			;
-		else if ( (module = m_manager.getSource(id, Isolate.DEFAULT_ID)) == null )
-			;
-		else
-			module.addLineFunctionInfo(where.actions.getOffset(where.at), line, func);
-	}
-
-	/* for debugging */
-	@Override
-	public String toString() {
-		return m_path;
-	}
-
-	@Override
-	public int getIsolateId() {
-		return m_isolateId;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DValue.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DValue.java
deleted file mode 100644
index 2652ba1..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DValue.java
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import flash.tools.debugger.Isolate;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.NotSuspendedException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.ValueAttribute;
-import flash.tools.debugger.Variable;
-import flash.tools.debugger.VariableType;
-import flash.tools.debugger.expression.Context;
-
-/**
- * Implementation of an ActionScript value.
- */
-public class DValue implements Value
-{
-	/** @see VariableType */
-	private int			m_type;
-
-	/** @see Variable#getTypeName() */
-	private String		m_typeName;
-
-	/** @see Variable#getClassName() */
-	private String		m_className;
-
-	/** @see ValueAttribute */
-	private int			m_attribs;
-
-	/** Maps "varname" (without its namespace) to a Variable */
-	private Map<String, DVariable> m_members;
-
-	/**
-	 * Either my own ID, or else my parent's ID if I am <code>__proto__</code>.
-	 */
-	long				m_nonProtoId;
-
-	/**
-	 * <code>m_value</code> can have one of several possible meanings:
-	 *
-	 * <ul>
-	 * <li> If this variable's value is an <code>Object</code> or a <code>MovieClip</code>,
-	 *      then <code>m_value</code> contains the ID of the <code>Object</code> or
-	 *      <code>MovieClip</code>, stored as a <code>Long</code>. </li>
-	 * <li> If this variable refers to a Getter which has not yet been invoked, then
-	 *      <code>m_value</code> contains the ID of the Getter, stored as a
-	 *      <code>Long</code>. </li>
-	 * <li> If this variable's value is <code>undefined</code>, then <code>m_value</code>
-	 *      will be equal to <code>Value.UNDEFINED</code>.
-	 * <li> Otherwise, this variable's value is a simple type such as <code>int</code> or
-	 *      <code>String</code>, in which case <code>m_value</code> holds the actual value.
-	 * </ul>
-	 */
-	private Object		m_value;
-
-	/**
-	 * The list of classes that contributed members to this object, from
-	 * the class itself all the way down to Object.
-	 */
-	private String[] m_classHierarchy;
-
-	/**
-	 * How many members of <code>m_classHierarchy</code> actually contributed
-	 * members to this object.
-	 */
-	private int m_levelsWithMembers;
-
-	private Session m_session;
-	
-	/** Maps duplicate private "varname" to a list of Variable objects */
-	private Map<String, List<DVariable>> m_inheritedPrivates;
-	
-	private int m_isolateId;
-
-
-	/**
-	 * Create a top-level variable which has no parent.  This may be used for
-	 * _global, _root, stack frames, etc.
-	 *
-	 * @param id the ID of the variable
-	 */
-	public DValue(long id, int isolateId)
-	{
-		init(VariableType.UNKNOWN, null, null, 0, new Long(id));
-		setIsolateId(isolateId);
-	}
-
-	/**
-	 * Create a value.
-	 *
-	 * @param type see <code>VariableType</code>
-	 * @param typeName
-	 * @param className
-	 * @param attribs
-	 *            the attributes of this value; see <code>ValueAttribute</code>
-	 * @param value
-	 *            for an Object or MovieClip, this should be a Long which contains the
-	 *            ID of this variable.  For a variable of any other type, such as integer
-	 *            or string, this should be the value of the variable.
-	 * @param isolateId
-	 * 			  the worker to which this value belongs
-	 */
-	public DValue(int type, String typeName, String className, int attribs, Object value, int isolateId)
-	{
-		init(type, typeName, className, attribs, value);
-		setIsolateId(isolateId);
-	}
-
-	/**
-	 * Constructs a DValue for a primitive value (null, undefined, Boolean, Number, String).
-	 * 
-	 * There is nothing special about these objects -- it would be just as legitimate for
-	 * anyone who wants a Value for a primitive to make their own subclass of Value.
-	 */
-	public static DValue forPrimitive(Object primitiveValue, int isolateId)
-	{
-		if (primitiveValue == null)
-			return new DValue(VariableType.NULL, "null", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
-		else if (primitiveValue == Value.UNDEFINED)
-			return new DValue(VariableType.UNDEFINED, "undefined", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
-		else if (primitiveValue instanceof Boolean)
-			return new DValue(VariableType.BOOLEAN, "Boolean", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
-		else if (primitiveValue instanceof Double)
-			return new DValue(VariableType.NUMBER, "Number", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
-		else if (primitiveValue instanceof String)
-			return new DValue(VariableType.STRING, "String", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
-		assert false;
-		return null;
-	}
-
-	/**
-	 * Initialize a variable.
-	 *
-	 * For the meanings of the arguments, see the DVariable constructor.
-	 */
-	private void init(int type, String typeName, String className, int attribs, Object value)
-	{
-		if (value == null && type == VariableType.UNDEFINED)
-			value = Value.UNDEFINED;
-
-		m_type = type;
-		m_typeName = typeName;
-		m_className = className;
-		m_attribs = attribs;
-		m_value = value;
-		m_members = null;
-		m_inheritedPrivates = null;
-		m_nonProtoId = getId();
-		m_isolateId = Isolate.DEFAULT_ID;
-	}
-	
-	public int getIsolateId() {
-		return m_isolateId;
-	}
-	
-	public void setIsolateId(int isolateid) {
-		m_isolateId = isolateid;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getAttributes()
-	 */
-	public int getAttributes()
-	{
-		return m_attribs;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getClassName()
-	 */
-	public String getClassName()
-	{
-		return m_className;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getId()
-	 */
-	public long getId()
-	{
-		// see if we support an id concept
-		if (m_value instanceof Long)
-			return ((Long)m_value).longValue();
-		else
-			return Value.UNKNOWN_ID;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getMemberCount(flash.tools.debugger.Session)
-	 */
-	public int getMemberCount(Session s) throws NotSuspendedException,
-			NoResponseException, NotConnectedException
-	{
-		obtainMembers(s);
-		return (m_members == null) ? 0 : m_members.size();
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getMemberNamed(flash.tools.debugger.Session, java.lang.String)
-	 */
-	public Variable getMemberNamed(Session s, String name)
-			throws NotSuspendedException, NoResponseException,
-			NotConnectedException
-	{
-		obtainMembers(s);
-		return findMember(name);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getClassHierarchy(boolean)
-	 */
-	public String[] getClassHierarchy(boolean allLevels) {
-		if (allLevels) {
-			return m_classHierarchy;
-		} else {
-			String[] partialClassHierarchy;
-
-			if (m_classHierarchy != null)
-			{
-				partialClassHierarchy = new String[m_levelsWithMembers];
-				System.arraycopy(m_classHierarchy, 0, partialClassHierarchy, 0, m_levelsWithMembers);
-			}
-			else
-			{
-				partialClassHierarchy = new String[0];
-			}
-			return partialClassHierarchy;
-		}
-	}
-
-	/* TODO should this really be public? */
-	public DVariable findMember(String named)
-	{
-		if (m_members == null)
-			return null;
-		else
-			return m_members.get(named);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getMembers(flash.tools.debugger.Session)
-	 */
-	public Variable[] getMembers(Session s) throws NotSuspendedException,
-			NoResponseException, NotConnectedException
-	{
-		obtainMembers(s);
-
-		/* find out the size of the array */
-		int count = getMemberCount(s);
-		DVariable[] ar = new DVariable[count];
-
-		if (count > 0)
-		{
-			count = 0;
-			Iterator<DVariable> itr = m_members.values().iterator();
-			while(itr.hasNext())
-			{
-				DVariable  sf = itr.next();
-				ar[count++] = sf;
-			}
-
-			// sort the member list by name
-			Arrays.sort(ar);
-		}
-
-		return ar;
-	}
-
-	/**
-	 * WARNING: this call will initiate a call to the session to obtain the members
-	 * the first time around.
-	 * @throws NotConnectedException
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
-	 */
-	private void obtainMembers(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		if (s == null)
-			s = m_session;
-		else
-			m_session = s;
-
-		if (m_members == null && s != null)
-		{
-			// performing a get on this variable obtains all its members
-			long id = getId();
-			if (id != Value.UNKNOWN_ID)
-			{
-				if (((PlayerSession)s).getRawValue(id, m_isolateId) == this)
-					((PlayerSession)s).obtainMembers(id, m_isolateId);
-				if (m_members != null)
-				{
-					Iterator<DVariable> iter = m_members.values().iterator();
-					while (iter.hasNext())
-					{
-						Object next = iter.next();
-						if (next instanceof DVariable)
-						{
-							((DVariable)next).setSession(s);
-						}
-					}
-				}
-			}
-		}
-	}
-
-	public boolean membersObtained()
-	{
-		return (getId() == UNKNOWN_ID || m_members != null);
-	}
-
-	public void setMembersObtained(boolean obtained)
-	{
-		if (obtained)
-		{
-			if (m_members == null)
-				m_members = Collections.emptyMap();
-			if (m_inheritedPrivates == null)
-				m_inheritedPrivates = Collections.emptyMap();
-		}
-		else
-		{
-			m_members = null;
-			m_inheritedPrivates = null;
-		}
-	}
-
-	public void addMember(DVariable v)
-	{
-		if (m_members == null)
-			m_members = new HashMap<String, DVariable>();
-
-		// if we are a proto member house away our original parent id
-		String name = v.getName();
-		DValue val = (DValue) v.getValue();
-		val.m_nonProtoId = (name != null && name.equals("__proto__")) ? m_nonProtoId : val.getId(); //$NON-NLS-1$ // TODO is this right?
-		v.m_nonProtoParentId = m_nonProtoId;
-
-		m_members.put(name, v);
-	}
-	
-	public void addInheritedPrivateMember(DVariable v)
-	{
-		if (m_inheritedPrivates == null)
-			m_inheritedPrivates = new HashMap<String, List<DVariable>>();
-
-		// if we are a proto member house away our original parent id
-		String name = v.getName();
-		DValue val = (DValue) v.getValue();
-		val.m_nonProtoId = (name != null && name.equals("__proto__")) ? m_nonProtoId : val.getId(); //$NON-NLS-1$ // TODO is this right?
-		v.m_nonProtoParentId = m_nonProtoId;
-		List<DVariable> resultList = m_inheritedPrivates.get(name);
-		if (resultList == null) {
-			resultList = new ArrayList<DVariable>();
-			resultList.add(v);
-			m_inheritedPrivates.put(name, resultList);
-		}
-		else
-			resultList.add(v);
-		//m_inheritedPrivates.put(name, v);
-	}
-
-	public void removeAllMembers()
-	{
-		m_members = null;
-		m_inheritedPrivates = null;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getType()
-	 */
-	public int getType()
-	{
-		return m_type;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getTypeName()
-	 */
-	public String getTypeName()
-	{
-		return m_typeName;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getValueAsObject()
-	 */
-	public Object getValueAsObject()
-	{
-		return m_value;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#getValueAsString()
-	 */
-	public String getValueAsString()
-	{
-		return getValueAsString(m_value);
-	}
-
-	/**
-	 * @param value an object which might be one of these types:
-	 * Boolean, Integer, Long, Double, String, Value.UNDEFINED (representing
-	 * the value 'undefined'); or null.
-	 */
-	public static String getValueAsString(Object value)
-	{
-		if (value == null)
-			return "null"; //$NON-NLS-1$
-
-		if (value instanceof Double)
-		{
-			// Java often formats whole numbers in ugly ways.  For example,
-			// the number 3 might be formatted as "3.0" and, even worse,
-			// the number 12345678 might be formatted as "1.2345678E7" !
-			// So, if the number has no fractional part, then we override
-			// the default display behavior.
-			double doubleValue = ((Double)value).doubleValue();
-			long longValue = (long) doubleValue;
-			if (doubleValue == longValue)
-				return Long.toString(longValue);
-		}
-
-		return value.toString();
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#isAttributeSet(int)
-	 */
-	public boolean isAttributeSet(int variableAttribute)
-	{
-		return (m_attribs & variableAttribute) != 0;
-	}
-
-	public void	setTypeName(String s)	{ m_typeName = s; }
-	public void	setClassName(String s)	{ m_className = s; }
-	public void setType(int t)			{ m_type = t; }
-	public void setValue(Object o)		{ m_value = o; }
-	public void setAttributes(int f)	{ m_attribs = f; }
-
-	public void setClassHierarchy(String[] classHierarchy, int levelsWithMembers)
-	{
-		m_classHierarchy = classHierarchy;
-		m_levelsWithMembers = levelsWithMembers;
-	}
-
-	public String membersToString()
-	{
-		StringBuilder sb = new StringBuilder();
-
-		/* find out the size of the array */
-		if (m_members == null)
-			sb.append(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("empty")); //$NON-NLS-1$
-		else
-		{
-			Iterator<DVariable> itr = m_members.values().iterator();
-			while(itr.hasNext())
-			{
-				DVariable  sf = itr.next();
-				sb.append(sf);
-				sb.append(",\n"); //$NON-NLS-1$
-			}
-		}
-		return sb.toString();
-	}
-
-	public void setSession(Session s)
-	{
-		m_session = s;
-	}
-
-	/**
-	 * Necessary for expression evaluation.
-	 * @see Context#lookup(Object)
-	 */
-	@Override
-	public String toString() { return getValueAsString(); }
-
-	public Variable[] getPrivateInheritedMembers() {
-		if (m_inheritedPrivates == null)
-			return new DVariable[0];
-		
-		ArrayList<DVariable> finalList = new ArrayList<DVariable>();
-		
-		Iterator<List<DVariable>> itr = m_inheritedPrivates.values().iterator();
-		while(itr.hasNext())
-		{
-			List<DVariable>  varList = itr.next();
-			finalList.addAll(varList);
-		}
-		
-		DVariable[] ar = finalList.toArray(new DVariable[0]);
-		// sort the member list by name
-		Arrays.sort(ar);
-
-		return ar;
-	}
-	
-	public Variable[] getPrivateInheritedMemberNamed(String name) {
-		if (m_inheritedPrivates == null)
-			return new DVariable[0];
-		List<DVariable> list = m_inheritedPrivates.get(name);
-		if (list != null) {
-			return list.toArray(new Variable[0]);
-		}
-		return new DVariable[0];
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DVariable.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DVariable.java
deleted file mode 100644
index 16d6799..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DVariable.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.NotSuspendedException;
-import flash.tools.debugger.PlayerDebugException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SessionManager;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.Variable;
-import flash.tools.debugger.VariableAttribute;
-import flash.tools.debugger.VariableType;
-import flash.tools.debugger.events.FaultEvent;
-import flash.tools.debugger.expression.Context;
-
-public class DVariable implements Variable, Comparable
-{
-	/**
-	 * The raw name, exactly as it came back from the Player.  For example, this
-	 * might be <code>mynamespace@12345678::myvar</code>, which indicates that
-	 * the variable is in namespace "mynamespace", which has atom 12345678.
-	 */
-	private String		m_rawName;
-
-	/** Just name, without namespace */
-	private String		m_name;
-
-	/** @see Variable#getNamespace() */
-	private String		m_namespace = ""; //$NON-NLS-1$
-
-	/** @see VariableAttribute */
-	private int			m_attribs;
-
-	/**
-	 * The variable's value.
-	 */
-	protected Value		m_value;
-
-	/**
-	 * Whether we have fired the getter for this value.  Only applicable if
-	 * the VariableAttribute.HAS_GETTER attribute is set.
-	 */
-	private boolean		m_firedGetter;
-
-	/**
-	 * The class in which this member was actually defined.  For example, if class
-	 * B extends class A, and class A has member variable V, then for variable
-	 * V, the defining class is always "A", even though the parent variable might
-	 * be an instance of class B.
-	 */
-	private String		m_definingClass;
-
-	/**
-	 * The variable's "level" -- see <code>Variable.getLevel()</code>
-	 * @see Variable#getLevel()
-	 */
-	private byte		m_level;
-
-	/**
-	 * The session object that was used when creating this variable, if known.
-	 */
-	private Session		m_session;
-
-	/**
-	 * My parent's <code>m_nonProtoId</code>.  In other words, either my
-	 * parent's ID, or else my parent's parent's ID if my parent is <code>__proto__</code>.
-	 */
-	long				m_nonProtoParentId;
-	
-	/**
-	 * The worker to which this variable belongs.
-	 */
-	private int m_isolateId;
-
-	/**
-	 * Create a variable and its value.
-	 *
-	 * @param name
-	 *            the name of the variable within the context of its parent.  For example,
-	 *            when resolving member "bar" of object "foo", the name will be "bar".
-	 * @param value
-	 *            the variable's value.
-	 */
-	public DVariable(String name, DValue value, int isolateId)
-	{
-		m_rawName = name;
-		m_attribs = value.getAttributes();
-		
-		// If the name contains "::", then the name is of the form "namespace::name"
-		if (name != null)
-		{
-			/**
-			 * anirudhs - Compute namespace only for non-public variables.
-			 * This check helps us avoid cases where public variables have
-			 * dynamic keys with :: in them. See FB-26126.
-			 */
-			if (!isAttributeSet(VariableAttribute.PUBLIC_SCOPE)) 
-			{
-				int doubleColon = name.lastIndexOf("::"); //$NON-NLS-1$
-				if (doubleColon >= 0)
-				{
-					m_namespace = name.substring(0, doubleColon);
-					int at = m_namespace.indexOf('@');
-					if (at != -1)
-						m_namespace = m_namespace.substring(0, at);
-					
-					name = name.substring(doubleColon+2);
-				}
-			}
-		}
-
-		m_name = name;
-		m_nonProtoParentId = Value.UNKNOWN_ID;
-		m_value = value;
-		value.setSession(m_session);
-		m_isolateId = isolateId;
-	}
-
-	/* getters/setters */
-	public String		getName()				{ return m_name; }
-	public int			getAttributes()			{ return m_attribs; }
-	public String		getNamespace()			{ return m_namespace; }
-	public int			getScope()				{ return m_attribs & VariableAttribute.SCOPE_MASK; }
-	public int			getLevel()				{ return m_level; }
-	public String		getDefiningClass()		{ return m_definingClass; }
-	
-	public int getIsolateId() {
-		return m_isolateId;
-	}
-	
-	public void makePublic()
-	{
-		int attributes = getAttributes();
-		attributes &= ~VariableAttribute.SCOPE_MASK;
-		attributes |= VariableAttribute.PUBLIC_SCOPE;
-		setAttributes(attributes);
-		
-		m_namespace = ""; //$NON-NLS-1$
-	}
-
-	/*
-	 * @see flash.tools.debugger.Variable#getValue()
-	 */
-	public Value getValue()
-	{
-		if (m_session != null && m_session.getPreference(SessionManager.PREF_INVOKE_GETTERS) != 0) {
-			try {
-				invokeGetter(m_session);
-			} catch (NotSuspendedException e) {
-				// fall through -- return raw value without invoking getter
-			} catch (NoResponseException e) {
-				// fall through -- return raw value without invoking getter
-			} catch (NotConnectedException e) {
-				// fall through -- return raw value without invoking getter
-			}
-		}
-
-		return m_value;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Variable#hasValueChanged(flash.tools.debugger.Session)
-	 */
-	public boolean hasValueChanged(Session s)
-	{
-		boolean hasValueChanged = false;
-		if (s instanceof PlayerSession)
-		{
-			Value previousParent = ((PlayerSession)s).getPreviousValue(m_nonProtoParentId, m_isolateId);
-			if (previousParent != null)
-			{
-				try {
-					Variable previousMember = previousParent.getMemberNamed(null, getName());
-					// If the old variable had a getter but never invoked that getter,
-					// then it's too late, we don't know the old value. 
-					if (previousMember instanceof DVariable && !previousMember.needsToInvokeGetter())
-					{
-						Value previousValue = ((DVariable)previousMember).m_value;
-						if (previousValue != null)
-						{
-							String previousValueAsString = previousValue.getValueAsString();
-							if (previousValueAsString != null)
-							{
-								if (!previousValueAsString.equals(getValue().getValueAsString()))
-								{
-									hasValueChanged = true;
-								}
-							}
-						}
-					}
-				} catch (PlayerDebugException e) {
-					// ignore
-				}
-			}
-		}
-		return hasValueChanged;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#setScalarMember(int, java.lang.String, int, java.lang.String)
-	 */
-	public FaultEvent setValue(Session s, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		return ((PlayerSession)s).setScalarMember(m_nonProtoParentId, m_rawName, type, value, m_isolateId);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Variable#isAttributeSet(int)
-	 */
-	public boolean isAttributeSet(int att)
-	{
-		if ((att & VariableAttribute.SCOPE_MASK) == att)
-			return (getScope() == att);
-		else
-			return ( ( (getAttributes() & att) == att) ? true : false );
-	}
-
-	public void clearAttribute(int att)
-	{
-		if ((att & VariableAttribute.SCOPE_MASK) == att)
-			m_attribs = (m_attribs & ~VariableAttribute.SCOPE_MASK) | VariableAttribute.PUBLIC_SCOPE;
-		else
-			m_attribs &= ~att;
-	}
-
-	public void setAttribute(int att)
-	{
-		if ((att & VariableAttribute.SCOPE_MASK) == att)
-			m_attribs = (m_attribs & ~VariableAttribute.SCOPE_MASK) | att;
-		else
-			m_attribs |= att;
-	}
-
-	public String getRawName()
-	{
-		return m_rawName;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Variable#getQualifiedName()
-	 */
-	public String getQualifiedName()
-	{
-		if (m_namespace.length() > 0)
-			return m_namespace + "::" + m_name; //$NON-NLS-1$
-		else
-			return m_name;
-	}
-
-	/**
-	 * Comparator interface for sorting Variables
-	 */
-	public int compareTo(Object o2)
-	{
-		Variable v2 = (Variable)o2;
-
-		String n1 = getName();
-		String n2 = v2.getName();
-		
-		return String.CASE_INSENSITIVE_ORDER.compare(n1, n2);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Variable#needsToFireGetter()
-	 */
-	public boolean needsToInvokeGetter()
-	{
-		// If this variable has a getter, and the getter has not yet been invoked
-		return (isAttributeSet(VariableAttribute.HAS_GETTER) && m_value.getId() != Value.UNKNOWN_ID && !m_firedGetter);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Value#invokeGetter(flash.tools.debugger.Session)
-	 */
-	public void invokeGetter(Session s) throws NotSuspendedException,
-			NoResponseException, NotConnectedException {
-		if (needsToInvokeGetter())
-		{
-			PlayerSession playerSession = (PlayerSession) s;
-
-			// If this Variable is stale (that is, the program has run since this Variable
-			// was created), then we can't invoke the getter.
-			if (playerSession.getRawValue(m_value.getId(), m_isolateId) == m_value)
-			{
-				// temporarily turn on "invoke getters" preference
-				int oldInvokeGetters = playerSession.getPreference(SessionManager.PREF_INVOKE_GETTERS);
-				playerSession.setPreference(SessionManager.PREF_INVOKE_GETTERS, 1);
-
-				try {
-					// fire the getter using the original object id. make sure we get something reasonable back
-					Value v = playerSession.getValue(m_nonProtoParentId, getRawName(), m_isolateId);
-					if (v != null)
-					{
-						m_value = v;
-						m_firedGetter = true;
-						if (m_value instanceof DValue)
-							((DValue)m_value).setSession(s);
-					}
-				} finally {
-					playerSession.setPreference(SessionManager.PREF_INVOKE_GETTERS, oldInvokeGetters);
-				}
-			}
-		}
-	}
-
-	public void	setName(String s)		{ m_name = s; }
-	public void setAttributes(int f)	{ m_attribs = f; ((DValue)getValue()).setAttributes(f); }
-
-	public void setSession(Session s)
-	{
-		m_session = s;
-		if (m_value instanceof DValue)
-			((DValue)m_value).setSession(s);
-	}
-
-	public void setDefiningClass(int level, String definingClass)
-	{
-		m_level = (byte) Math.min(level, 255);
-		m_definingClass = definingClass;
-	}
-
-	/**
-	 * Added so that expressions such as <code>a.b.c = e.f</code> work in the command-line interface.
-	 * @see Context#lookup(Object)
-	 */
-	@Override
-	public String toString() { return getValue().getValueAsString(); }
-
-	/**
-	 * Return the internal player string type representation for this variable.
-	 * Currently used for passing in the type to the Player when doing
-	 * a set variable command
-	 */
-	public static String typeNameFor(int type)
-	{
-		String s = "string"; //$NON-NLS-1$
-		switch(type)
-		{
-			case VariableType.NUMBER:
-				s = "number"; //$NON-NLS-1$
-				break;
-
-			case VariableType.BOOLEAN:
-				s = "boolean"; //$NON-NLS-1$
-				break;
-
-			case VariableType.STRING:
-				s = "string"; //$NON-NLS-1$
-				break;
-
-			case VariableType.OBJECT:
-				s = "object"; //$NON-NLS-1$
-				break;
-
-			case VariableType.FUNCTION:
-				s = "function"; //$NON-NLS-1$
-				break;
-
-			case VariableType.MOVIECLIP:
-				s = "movieclip"; //$NON-NLS-1$
-				break;
-
-			case VariableType.NULL:
-				s = "null"; //$NON-NLS-1$
-				break;
-
-			case VariableType.UNDEFINED:
-			case VariableType.UNKNOWN:
-			default:
-				s = "undefined"; //$NON-NLS-1$
-				break;
-		}
-		return s;
-	}
-
-	/**
-	 * These values are obtained directly from the Player.
-	 * See ScriptObject in splay.h.
-	 */
-	public static final int kNormalObjectType			= 0;
-	public static final int kXMLSocketObjectType		= 1;
-	public static final int kTextFieldObjectType		= 2;
-	public static final int kButtonObjectType			= 3;
-	public static final int kNumberObjectType			= 4;
-	public static final int kBooleanObjectType			= 5;
-	public static final int kNativeStringObject			= 6;
-	public static final int kNativeArrayObject			= 7;
-	public static final int kDateObjectType				= 8;
-	public static final int kSoundObjectType			= 9;
-	public static final int kNativeXMLDoc				= 10;
-	public static final int kNativeXMLNode				= 11;
-	public static final int kNativeCameraObject			= 12;
-	public static final int kNativeMicrophoneObject		= 13;
-	public static final int kNativeCommunicationObject	= 14;
-	public static final int kNetConnectionObjectType  	= 15;
-	public static final int kNetStreamObjectType		= 16;
-	public static final int kVideoObjectType			= 17;
-	public static final int kTextFormatObjectType		= 18;
-	public static final int kSharedObjectType			= 19;
-	public static final int kSharedObjectDataType		= 20;
-	public static final int kPrintJobObjectType			= 21;
-	public static final int kMovieClipLoaderObjectType	= 22;
-	public static final int kStyleSheetObjectType		= 23;
-	public static final int kFapPacketDummyObject		= 24;
-	public static final int kLoadVarsObject				= 25;
-	public static final int kTextSnapshotType			= 26;
-
-	public static String classNameFor(long clsType, boolean isMc)
-	{
-		String clsName;
-		switch ((int)clsType)
-		{
-			case kNormalObjectType:
-				clsName = (isMc) ? "MovieClip" : "Object"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			case kXMLSocketObjectType:
-				clsName = "XMLSocket"; //$NON-NLS-1$
-				break;
-			case kTextFieldObjectType:
-				clsName = "TextField"; //$NON-NLS-1$
-				break;
-			case kButtonObjectType:
-				clsName = "Button"; //$NON-NLS-1$
-				break;
-			case kNumberObjectType:
-				clsName = "Number"; //$NON-NLS-1$
-				break;
-			case kBooleanObjectType:
-				clsName = "Boolean"; //$NON-NLS-1$
-				break;
-			case kNativeStringObject:
-				clsName = "String"; //$NON-NLS-1$
-				break;
-			case kNativeArrayObject:
-				clsName = "Array"; //$NON-NLS-1$
-				break;
-			case kDateObjectType:
-				clsName = "Date"; //$NON-NLS-1$
-				break;
-			case kSoundObjectType:
-				clsName = "Sound"; //$NON-NLS-1$
-				break;
-			case kNativeXMLDoc:
-				clsName = "XML"; //$NON-NLS-1$
-				break;
-			case kNativeXMLNode:
-				clsName = "XMLNode"; //$NON-NLS-1$
-				break;
-			case kNativeCameraObject:
-				clsName = "Camera"; //$NON-NLS-1$
-				break;
-			case kNativeMicrophoneObject:
-				clsName = "Microphone"; //$NON-NLS-1$
-				break;
-			case kNativeCommunicationObject:
-				clsName = "Communication"; //$NON-NLS-1$
-				break;
-			case kNetConnectionObjectType:
-				clsName = "Connection"; //$NON-NLS-1$
-				break;
-			case kNetStreamObjectType:
-				clsName = "Stream"; //$NON-NLS-1$
-				break;
-			case kVideoObjectType:
-				clsName = "Video"; //$NON-NLS-1$
-				break;
-			case kTextFormatObjectType:
-				clsName = "TextFormat"; //$NON-NLS-1$
-				break;
-			case kSharedObjectType:
-				clsName = "SharedObject"; //$NON-NLS-1$
-				break;
-			case kSharedObjectDataType:
-				clsName = "SharedObjectData"; //$NON-NLS-1$
-				break;
-			case kPrintJobObjectType:
-				clsName = "PrintJob"; //$NON-NLS-1$
-				break;
-			case kMovieClipLoaderObjectType:
-				clsName = "MovieClipLoader"; //$NON-NLS-1$
-				break;
-			case kStyleSheetObjectType:
-				clsName = "StyleSheet"; //$NON-NLS-1$
-				break;
-			case kFapPacketDummyObject:
-				clsName = "FapPacket"; //$NON-NLS-1$
-				break;
-			case kLoadVarsObject:
-				clsName = "LoadVars"; //$NON-NLS-1$
-				break;
-			case kTextSnapshotType:
-				clsName = "TextSnapshot"; //$NON-NLS-1$
-				break;
-			default:
-				clsName = PlayerSessionManager.getLocalizationManager().getLocalizedTextString("unknown") + "<" + clsType + ">"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				break;
-		}
-		return clsName;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/DWatch.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/DWatch.java
deleted file mode 100644
index 35b2c41..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/DWatch.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import flash.tools.debugger.Watch;
-
-/**
- * Holder of Watchpoint information
- */
-public class DWatch implements Watch
-{
-	long		m_parentValueId;
-	String		m_rawMemberName; // corresponds to Variable.getRawName()
-	int			m_kind;
-	int			m_tag;
-	int m_isolateId;
-
-	public DWatch(long id, String name, int kind, int tag, int isolateId)
-	{
-		m_parentValueId = id;
-		m_rawMemberName = name;
-		m_kind = kind;
-		m_tag = tag;
-		m_isolateId = isolateId;
-	}
-
-    public long			getValueId()	{ return m_parentValueId; }
-	public String		getMemberName()	{ return m_rawMemberName; }
-    public int			getKind()		{ return m_kind; }
-    public int			getTag()		{ return m_tag; }
-    
-    public int getIsolateId() {
-    	return m_isolateId;
-    }
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/GetVariableFlag.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/GetVariableFlag.java
deleted file mode 100644
index f7604ec..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/GetVariableFlag.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-/**
- * Flags to the OutGetVariable and OutGetVariableWhichInvokesGetter commands
- * which are sent from the debugger to the player.
- * 
- * These values must be kept in sync with 'enum OutGetVariableFlags' in
- * the player's playerdebugger.h file.
- *
- * @author mmorearty
- */
-public interface GetVariableFlag
-{
-	/**
-	 * Indicates that if the variable which is being retrieved is a
-	 * getter, then the player should invoke the getter and return
-	 * the result.  If this flag is *not* set, then the player will
-	 * simply return the address of the getter itself.
-	 */
-	public static final int INVOKE_GETTER			= 0x00000001;
-
-	/**
-	 * Indicates that if the variable which is being retrieved is a
-	 * compound object (e.g. an instance of a class, as opposed to
-	 * a string or int or something like that), then the player
-	 * should also return all of the child members of the object.
-	 */
-	public static final int ALSO_GET_CHILDREN		= 0x00000002;
-	
-	/**
-	 * Indicates that when retrieving children, we only want fields
-	 * and getters -- we are not interested in regular functions.
-	 * This is an optimization to decrease the amount of network
-	 * traffic.
-	 */
-	public static final int DONT_GET_FUNCTIONS		= 0x00000004;
-
-	/**
-	 * Indicates that when retrieving children, we also want to
-	 * know exactly which class each child was defined in.  For
-	 * example, if the variable is of class Foo which extends
-	 * class Bar, we want to know which member fields came from
-	 * Foo and which ones came from Bar.
-	 */
-	public static final int GET_CLASS_HIERARCHY		= 0x00000008;
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/IsolatePlayerSession.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/IsolatePlayerSession.java
deleted file mode 100644
index 887b9c0..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/IsolatePlayerSession.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package flash.tools.debugger.concrete;
-
-import flash.tools.debugger.Frame;
-import flash.tools.debugger.IsolateController;
-import flash.tools.debugger.IsolateSession;
-import flash.tools.debugger.Location;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.NotSupportedException;
-import flash.tools.debugger.NotSuspendedException;
-import flash.tools.debugger.PlayerDebugException;
-import flash.tools.debugger.SuspendedException;
-import flash.tools.debugger.SwfInfo;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.Variable;
-import flash.tools.debugger.VersionException;
-import flash.tools.debugger.Watch;
-import flash.tools.debugger.expression.PlayerFaultException;
-
-/**
- * Concrete implementation of IsolateSession. Re-routes
- * calls to the *worker() method equivalents.
- * @author anirudhs
- *
- */
-public class IsolatePlayerSession implements IsolateSession {
-
-	private IsolateController fSession;
-	private int fIsolateId;
-	
-	public IsolatePlayerSession(int isolateId, IsolateController mainSession) {
-		fIsolateId = isolateId;
-		fSession = mainSession;
-	}
-	
-	@Override
-	public void resume() throws NotSuspendedException, NotConnectedException,
-			NoResponseException {
-		fSession.resumeWorker(fIsolateId);
-	}
-
-	@Override
-	public void suspend() throws SuspendedException, NotConnectedException,
-			NoResponseException {
-		fSession.suspendWorker(fIsolateId);
-	}
-
-	@Override
-	public boolean isSuspended() throws NotConnectedException {
-		return fSession.isWorkerSuspended(fIsolateId);
-	}
-
-	@Override
-	public int suspendReason() throws NotConnectedException {
-		return fSession.suspendReasonWorker(fIsolateId);
-	}
-
-	@Override
-	public Frame[] getFrames() throws NotConnectedException {
-		return fSession.getFramesWorker(fIsolateId);
-	}
-
-	@Override
-	public void stepInto() throws NotSuspendedException, NoResponseException,
-			NotConnectedException {
-		fSession.stepIntoWorker(fIsolateId);
-	}
-
-	@Override
-	public void stepOut() throws NotSuspendedException, NoResponseException,
-			NotConnectedException {
-		fSession.stepOutWorker(fIsolateId);
-	}
-
-	@Override
-	public void stepOver() throws NotSuspendedException, NoResponseException,
-			NotConnectedException {
-		fSession.stepOverWorker(fIsolateId);
-	}
-
-	@Override
-	public void stepContinue() throws NotSuspendedException,
-			NoResponseException, NotConnectedException {
-		fSession.stepContinueWorker(fIsolateId);
-	}
-
-	@Override
-	public SwfInfo[] getSwfs() throws NoResponseException {
-		return fSession.getSwfsWorker(fIsolateId);
-	}
-
-	@Override
-	public Location setBreakpoint(int fileId, int lineNum)
-			throws NoResponseException, NotConnectedException {
-		return fSession.setBreakpointWorker(fileId, lineNum, fIsolateId);
-	}
-
-	@Override
-	public Watch[] getWatchList() throws NoResponseException,
-			NotConnectedException {
-		return fSession.getWatchListWorker(fIsolateId);
-	}
-
-	@Override
-	public Variable[] getVariableList() throws NotSuspendedException,
-			NoResponseException, NotConnectedException, VersionException {
-		return fSession.getVariableListWorker(fIsolateId);
-	}
-
-	@Override
-	public Value getValue(long valueId) throws NotSuspendedException,
-			NoResponseException, NotConnectedException {
-		return fSession.getValueWorker(valueId, fIsolateId);
-	}
-
-	@Override
-	public Value getGlobal(String name) throws NotSuspendedException,
-			NoResponseException, NotConnectedException {
-		return fSession.getGlobalWorker(name, fIsolateId);
-	}
-
-	@Override
-	public boolean evalIs(Value value, Value type) throws PlayerDebugException,
-			PlayerFaultException {
-		return fSession.evalIsWorker(value, type, fIsolateId);
-	}
-
-	@Override
-	public boolean evalIs(Value value, String type)
-			throws PlayerDebugException, PlayerFaultException {
-		return fSession.evalIsWorker(value, type, fIsolateId);
-	}
-
-	@Override
-	public boolean evalInstanceof(Value value, Value type)
-			throws PlayerDebugException, PlayerFaultException {
-		return fSession.evalInstanceofWorker(value, type, fIsolateId);
-	}
-
-	@Override
-	public boolean evalInstanceof(Value value, String type)
-			throws PlayerDebugException, PlayerFaultException {
-		return fSession.evalInstanceofWorker(value, type, fIsolateId);
-	}
-
-	@Override
-	public boolean evalIn(Value property, Value object)
-			throws PlayerDebugException, PlayerFaultException {
-		return fSession.evalInWorker(property, object, fIsolateId);
-	}
-
-	@Override
-	public Value evalAs(Value value, Value type) throws PlayerDebugException,
-			PlayerFaultException {
-		return fSession.evalAsWorker(value, type, fIsolateId);
-	}
-
-	@Override
-	public Value callFunction(Value thisObject, String functionName,
-			Value[] args) throws PlayerDebugException {
-		return fSession.callFunctionWorker(thisObject, functionName, args, fIsolateId);
-	}
-
-	@Override
-	public Value callConstructor(String classname, Value[] args)
-			throws PlayerDebugException {
-		return fSession.callConstructorWorker(classname, args, fIsolateId);
-	}
-	
-	@Override
-	public boolean setExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException {
-		return fSession.setExceptionBreakpointWorker(exceptionClass, fIsolateId);
-	}
-
-	@Override
-	public boolean clearExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException {
-		return fSession.clearExceptionBreakpointWorker(exceptionClass, fIsolateId);
-	}
-
-	@Override
-	public void breakOnCaughtExceptions(boolean b) throws NotSupportedException, NoResponseException {
-		fSession.breakOnCaughtExceptions(b, fIsolateId);
-	}
-
-	@Override
-	public boolean supportsWatchpoints() {
-		return fSession.supportsWatchpoints(fIsolateId);
-	}
-
-	@Override
-	public boolean playerCanBreakOnAllExceptions() {
-		return fSession.playerCanBreakOnAllExceptions(fIsolateId);
-	}
-
-	@Override
-	public boolean supportsWideLineNumbers() {
-		return fSession.supportsWideLineNumbers(fIsolateId);
-	}
-
-	@Override
-	public boolean playerCanCallFunctions() {
-		return fSession.playerCanCallFunctions(fIsolateId);
-	}
-
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/LineFunctionContainer.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/LineFunctionContainer.java
deleted file mode 100644
index 57d1d31..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/LineFunctionContainer.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import flash.swf.Action;
-import flash.swf.ActionConstants;
-import flash.swf.types.ActionList;
-import flash.swf.actions.DefineFunction;
-import flash.swf.debug.LineRecord;
-import flash.tools.ActionLocation;
-import flash.swf.MovieMetaData;
-import flash.tools.SwfActionContainer;
-import flash.util.Trace;
-
-/**
- * This class extends the SwfActionContainer.
- * It performs a number of passes on the master
- * action list in order to extract line/function
- * mapping information.
- */
-public class LineFunctionContainer extends SwfActionContainer
-{
-    public LineFunctionContainer(byte[] swf, byte[] swd)
-	{
-		super(swf, swd);
-
-		// now that we've got all the action lists
-		// nicely extracted and lined up we perform a 
-		// bit of magic which modifies the DefineFunction 
-		// records augmenting them with function names 
-		// if they have have none.
-		buildFunctionNames(getMasterList(), getHeader().version);
-	}
-
-	/**
-	 * Use the action list located in the given location
-	 * and return a new action location that corresponds
-	 * to the next line record that is encountered
-	 * after this location.  This routine does not 
-	 * span into another action list.
-	 */
-	public ActionLocation endOfSourceLine(ActionLocation l)
-	{
-		ActionLocation current = new ActionLocation(l);
-		int size = l.actions.size();
-		for(int i= l.at+1; i<size; i++)
-		{
-			// hit a line record => we done
-			Action a = l.actions.getAction(i);
-			if (a.code == ActionList.sactionLineRecord)
-				break;
-
-			// hit a function => we are done
-			if ( (a.code == ActionConstants.sactionDefineFunction) ||
-				 (a.code == ActionConstants.sactionDefineFunction2) )
-				break;
-
-			current.at = i;
-		}
-		return current;
-	}
-
-	/**
-	 * This routine is called from the DSwfInfo object
-	 * and is used to obtain LineRecord information 
-	 * from the ActionLists
-	 */
-	public void combForLineRecords(DSwfInfo info)
-	{
-		probeForLineRecords(getMasterList(), new ActionLocation(), info);
-	}
-
-	/**
-	 * This routine is called from the DSwfInfo object
-	 * and is used to obtain LineRecord information 
-	 * from the ActionLists
-	 * 
-	 * The ActionLocation record is used as a holding
-	 * container for state as we traverse the lists
-	 */
-	void probeForLineRecords(ActionList list, ActionLocation where, DSwfInfo info)
-	{
-		int size = list.size();
-		for(int i=0; i<size; i++)
-		{
-			try
-			{
-				// set our context
-				where.at = i;
-				where.actions = list;
-
-				// pull the action
-				Action a = list.getAction(i);
-
-				// then see if we need to traverse
-				if ( (a.code == ActionConstants.sactionDefineFunction) ||
-					 (a.code == ActionConstants.sactionDefineFunction2) )
-				{
-					where.function = (DefineFunction)a;
-					probeForLineRecords(((DefineFunction)a).actionList, where, info);
-					where.function = null;
-				}
-				else if (a.code == ActionList.sactionLineRecord)
-				{
-					// hit a line record, so let's do our callback
-					info.processLineRecord(where, (LineRecord)a);
-				}
-				else if (a instanceof DummyAction)
-				{
-					// our dummy container, then we drop in
-					where.className = ((DummyAction)a).getClassName();
-					probeForLineRecords(((DummyAction)a).getActionList(), where, info);
-					where.className = null;
-				}
-			}		
-			catch(Exception e)
-			{
-				// this is fairly bad and probably means that we have corrupt line
-				// records in the swd, the exception being an ArrayIndexOutOfBoundsException. 
-				// I've seen this in cases where a bad swc is built by authoring wherein a
-				// script id collision occurs and thus the offset table will contain references
-				// to line numbers that are non existent in one of the scripts.
-				// If its another type of exception...well, hopefully the trace message will
-				// help you track it down :)
-				if (Trace.error)
-				{
-					Trace.trace("Error processing ActionList at "+where.at+" at offset "+where.actions.getOffset(where.at)+" in swf "+info.getUrl()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					e.printStackTrace();
-				}
-			}
-		}
-	}
-
-	/**
-	 * Go off and fill our DefineFunction records with function names.
-	 * @see MovieMetaData#walkActions for a discussion on how this is done.
-	 */
-	void buildFunctionNames(ActionList list, int version)
-	{
-		int size = list.size();
-		for(int i=0; i<size; i++)
-		{
-			DummyAction a = (DummyAction)list.getAction(i);
-			MovieMetaData.walkActions( a.getActionList(), version, null, a.getClassName(), null );
-		}		
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/NetscapePluginPlayer.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/NetscapePluginPlayer.java
deleted file mode 100644
index 757c84d..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/NetscapePluginPlayer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.File;
-
-/**
- * @author mmorearty
- */
-public class NetscapePluginPlayer extends AbstractPlayer
-{
-	/**
-	 * @param path
-	 */
-	public NetscapePluginPlayer(File browserExe, File path)
-	{
-		super(browserExe, path);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Player#getType()
-	 */
-	public int getType()
-	{
-		return NETSCAPE_PLUGIN;
-	}
-}
diff --git a/modules/fdbworkers/src/flash/tools/debugger/concrete/PlayerSession.java b/modules/fdbworkers/src/flash/tools/debugger/concrete/PlayerSession.java
deleted file mode 100644
index f41ed19..0000000
--- a/modules/fdbworkers/src/flash/tools/debugger/concrete/PlayerSession.java
+++ /dev/null
@@ -1,3069 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package flash.tools.debugger.concrete;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import flash.tools.debugger.AIRLaunchInfo;
-import flash.tools.debugger.Frame;
-import flash.tools.debugger.IDebuggerCallbacks;
-import flash.tools.debugger.ILauncher;
-import flash.tools.debugger.InProgressException;
-import flash.tools.debugger.Isolate;
-import flash.tools.debugger.IsolateController;
-import flash.tools.debugger.IsolateSession;
-import flash.tools.debugger.Location;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.NotSupportedException;
-import flash.tools.debugger.NotSuspendedException;
-import flash.tools.debugger.PlayerDebugException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SessionManager;
-import flash.tools.debugger.SourceFile;
-import flash.tools.debugger.SourceLocator;
-import flash.tools.debugger.SuspendedException;
-import flash.tools.debugger.SwfInfo;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.ValueAttribute;
-import flash.tools.debugger.Variable;
-import flash.tools.debugger.VariableAttribute;
-import flash.tools.debugger.VariableType;
-import flash.tools.debugger.VersionException;
-import flash.tools.debugger.Watch;
-import flash.tools.debugger.concrete.DProtocol.ListenerIndex;
-import flash.tools.debugger.events.DebugEvent;
-import flash.tools.debugger.events.ExceptionFault;
-import flash.tools.debugger.events.FaultEvent;
-import flash.tools.debugger.expression.ECMA;
-import flash.tools.debugger.expression.PlayerFaultException;
-import flash.util.Trace;
-
-
-public class PlayerSession implements Session, DProtocolNotifierIF, Runnable, IsolateController
-{
-	public static final int MAX_STACK_DEPTH = 256;
-	public static final long MAX_TERMINATE_WAIT_MILLIS = 10000;
-
-	private Socket				m_socket;
-	private DProtocol			m_protocol;
-	private DManager			m_manager;
-	private IDebuggerCallbacks	m_debuggerCallbacks;
-	private Process				m_process;
-	private Map<String, Object> m_prefs; // WARNING -- accessed from multiple threads
-	private static final String	s_newline = System.getProperty("line.separator"); //$NON-NLS-1$
-
-	private volatile boolean m_isConnected; // WARNING -- accessed from multiple threads
-	private volatile boolean m_isHalted; // WARNING -- accessed from multiple threads
-	private volatile boolean m_incoming; // WARNING -- accessed from multiple threads
-	private volatile boolean m_lastResponse;  // whether there was a reponse from the last message to the Player
-	private volatile HashMap<Integer, PlayerSessionIsolateStatus> m_isolateStatus = new HashMap<Integer, PlayerSessionIsolateStatus>();
-	
-	private int				m_watchTransactionTag;
-	private Boolean			m_playerCanCallFunctions;
-	private Boolean			m_playerSupportsWatchpoints;
-	private Boolean			m_playerCanBreakOnAllExceptions;
-	private Boolean			m_playerSupportsConcurrency;
-	private Boolean			m_playerSupportsWideLine;
-	
-	private ILauncher launcher;
-
-	/**
-	 * The URL that was launched, or <code>null</code> if not known.  Note:
-	 * This is NOT the value returned by getURI().  getURI() returns the
-	 * URL that came from the Player, and is therefore probably the URI of
-	 * the SWF; but m_launchedUrl contains the URL that we tried to launch,
-	 * which might be an HTML wrapper, e.g. http://localhost/myapp.html
-	 */
-	private String				m_launchUrl;
-
-	private AIRLaunchInfo	m_airLaunchInfo; // null if this is not an AIR app
-
-	static volatile boolean	m_debugMsgOn;		// debug ONLY; turned on with "set $debug_messages = 1"
-	volatile int			m_debugMsgSize;		// debug ONLY; controlled with "set $debug_message_size = NNN"
-	static volatile boolean	m_debugMsgFileOn;	// debug ONLY for file dump; turned on with "set $debug_message_file = 1"
-	volatile int			m_debugMsgFileSize;	// debug ONLY for file dump; controlled with "set $debug_message_file_size = NNN"
-
-	//FIXME: Make this concurrency aware
-	/**
-	 * A simple cache of previous "is" and "instanceof" queries, in order to
-	 * avoid having to send redundant messages to the player.
-	 */
-	private Map<String, Boolean> m_evalIsAndInstanceofCache = new HashMap<String, Boolean>();
-	
-	private volatile int m_lastPreIsolate = Isolate.DEFAULT_ID;
-	
-	private final Map<Integer, IsolateSession> m_isolateSessions;
-
-	private static final String DEBUG_MESSAGES = "$debug_messages"; //$NON-NLS-1$
-	private static final String DEBUG_MESSAGE_SIZE = "$debug_message_size"; //$NON-NLS-1$
-	private static final String DEBUG_MESSAGE_FILE = "$debug_message_file"; //$NON-NLS-1$
-	private static final String DEBUG_MESSAGE_FILE_SIZE = "$debug_message_file_size"; //$NON-NLS-1$
-
-	private static final String CONSOLE_ERRORS = "$console_errors"; //$NON-NLS-1$
-
-	private static final String FLASH_PREFIX = "$flash_"; //$NON-NLS-1$
-	
-	PlayerSession(Socket s, DProtocol proto, DManager manager, IDebuggerCallbacks debuggerCallbacks)
-	{
-		m_isConnected = false;
-		m_isHalted = false;
-		m_socket = s;
-		m_protocol = proto;
-		m_manager = manager;
-		m_prefs = Collections.synchronizedMap(new HashMap<String, Object>());
-		m_incoming = false;
-		m_debugMsgOn = false;
-		m_debugMsgSize = 16;
-		m_debugMsgFileOn = false;
-		m_debugMsgFileSize = 128;
-		m_watchTransactionTag = 1;  // number that is sent for each watch transaction that occurs
-		m_playerCanCallFunctions = null;
-		m_debuggerCallbacks = debuggerCallbacks;
-		m_isolateSessions = Collections.synchronizedMap(new HashMap<Integer, IsolateSession>());
-	}
-	
-	private static PlayerSession createFromSocketHelper(Socket s, IDebuggerCallbacks debuggerCallbacks, DProtocol proto) throws IOException
-	{
-		// let the manager hear incoming messages
-		DManager manager = new DManager();
-
-		PlayerSession session = new PlayerSession(s, proto, manager, debuggerCallbacks);
-		return session;
-	}
-
-	/**
-	 * @deprecated Use createFromSocketWithOptions
-	 * @param s
-	 * @param debuggerCallbacks
-	 * @return
-	 * @throws IOException
-	 */
-	public static PlayerSession createFromSocket(Socket s, IDebuggerCallbacks debuggerCallbacks) throws IOException
-	{
-		DProtocol proto = DProtocol.createFromSocket(s);
-
-		return createFromSocketHelper(s, debuggerCallbacks, proto);
-	}
-	
-	/**
-	 * Creates a session from the socket. Sets session specific 
-	 * socket settings and stores the callback object.
-	 * @param s
-	 * @param debuggerCallbacks
-	 * @param sessionManager
-	 * @return
-	 * @throws IOException
-	 */
-	public static PlayerSession createFromSocketWithOptions(Socket s, IDebuggerCallbacks debuggerCallbacks, SessionManager sessionManager) throws IOException
-	{
-		DProtocol proto = DProtocol.createFromSocket(s, sessionManager);
-
-		return createFromSocketHelper(s, debuggerCallbacks, proto);
-	}
-
-	/* getter */
-	public DMessageCounter		getMessageCounter()		{ return m_protocol.getMessageCounter(); }
-	public String				getURI()				{ return m_manager.getURI(); }
-	public boolean				playerSupportsGet()		{ return m_manager.isGetSupported(); }
-    public int                  playerVersion()         { return m_manager.getVersion(); }
-    public SourceLocator        getSourceLocator()      { return m_manager.getSourceLocator(); }
-
-	/*
-	 * @see flash.tools.debugger.Session#setSourceLocator(flash.tools.debugger.SourceLocator)
-	 */
-	public void setSourceLocator(SourceLocator sourceLocator)
-	{
-		m_manager.setSourceLocator(sourceLocator);
-	}
-
-	/**
-	 * If the manager started the process for us, then note it here. We will attempt to kill
-	 * it when we go down
-	 */
-	void setProcess(Process proc)
-	{
-		m_process = proc;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#getLaunchProcess()
-	 */
-	public Process getLaunchProcess()
-	{
-		return m_process;
-	}
-
-	/**
-	 * Set preference
-	 * If an invalid preference is passed, it will be silently ignored.
-	 */
-	public void			setPreferences(Map<String, ? extends Object> map)	{ m_prefs.putAll(map); mapBack(); }
-	public Set<String>	keySet()								{ return m_prefs.keySet(); }
-	public Object		getPreferenceAsObject(String pref)		{ return m_prefs.get(pref); }
-
-	/**
-	 * Set a property. Special logic for debug message boolean
-	 */
-	public void setPreference(String pref, int value)
-	{
-		m_prefs.put(pref, new Integer(value));
-		mapBack();
-
-		// change in console messages?
-		if (pref.equals(CONSOLE_ERRORS))
-			sendConsoleErrorsAsTrace(value == 1);
-
-		// generic message for flash player wherein "$flash_xxx" causes "xxx" to be sent
-		if (pref.startsWith(FLASH_PREFIX))
-			sendOptionMessage(pref.substring(FLASH_PREFIX.length()), Integer.toString(value));
-	}
-
-	// helper for mapBack()
-	private int mapBackOnePreference(String preferenceName, int defaultValue)
-	{
-		Object prefValue = getPreferenceAsObject(preferenceName);
-		if (prefValue != null)
-			return ((Integer)prefValue).intValue();
-		else
-			return defaultValue;
-	}
-
-	// helper for mapBack()
-	private boolean mapBackOnePreference(String preferenceName, boolean defaultValue)
-	{
-		Object prefValue = getPreferenceAsObject(preferenceName);
-		if (prefValue != null)
-			return ((Integer)prefValue).intValue() != 0 ? true : false;
-		else
-			return defaultValue;
-	}
-
-	// look for preferences, that map back to variables
-	private void mapBack()
-	{
-		m_debugMsgOn = mapBackOnePreference(DEBUG_MESSAGES, m_debugMsgOn);
-		m_debugMsgSize = mapBackOnePreference(DEBUG_MESSAGE_SIZE, m_debugMsgSize);
-
-		m_debugMsgFileOn = mapBackOnePreference(DEBUG_MESSAGE_FILE, m_debugMsgFileOn);
-		m_debugMsgFileSize = mapBackOnePreference(DEBUG_MESSAGE_FILE_SIZE, m_debugMsgFileSize);
-	}
-
-	public int getPreference(String pref)
-	{
-		int val = 0;
-		Integer i = (Integer)m_prefs.get(pref);
-		if (i == null)
-			throw new NullPointerException();
-		else
-			val = i.intValue();
-		return val;
-	}
-
-
-	/*
-	 * @see flash.tools.debugger.Session#isConnected()
-	 */
-	public boolean isConnected()
-	{
-		return m_isConnected;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#isSuspended()
-	 */
-	public boolean isSuspended() throws NotConnectedException
-	{
-		if (!isConnected())
-			throw new NotConnectedException();
-
-		return m_isHalted;
-	}
-	
-	/*
-	 * @see flash.tools.debugger.Session#isIsolateSuspended()
-	 */
-	public boolean isWorkerSuspended(int isolateId) throws NotConnectedException
-	{
-		if (isolateId == Isolate.DEFAULT_ID)
-			return isSuspended();
-		
-		if (!isConnected())
-			throw new NotConnectedException();
-		
-		if (m_isolateStatus.containsKey(isolateId)) {
-			return m_isolateStatus.get(isolateId).m_isHalted;
-		}
-		
-		return false;
-	}
-
-	/**
-	 * Start up the session listening for incoming messages on the socket
-	 */
-	public boolean bind() throws VersionException
-	{
-		boolean bound = false;
-
-		if (m_isConnected)
-			return false;
-		
-		// mark that we are connected
-		m_isConnected = true;
-
-		// attach us to the pipe (we are last to ensure that DManager and msg counter
-		// get updated first
-		m_protocol.addListener(ListenerIndex.PlayerSession, this);
-
-		// start up the receiving thread
-		bound = m_protocol.bind();
-
-		// transmit our first few adjustment messages
-		sendStopWarning();
-		sendStopOnFault();
-		sendEnumerateOverride();
-		sendFailureNotify();
-		sendInvokeSetters();
-		sendSwfloadNotify();
-		sendGetterTimeout();
-		sendSetterTimeout();
-		boolean responded = sendSquelch(true, Isolate.DEFAULT_ID);
-
-		// now note in our preferences whether get is working or not.
-		setPreference(SessionManager.PLAYER_SUPPORTS_GET, playerSupportsGet() ? 1 : 0);
-		if (supportsConcurrency()) {
-			sendConcurrentDebugger();
-		}
-		
-		if (supportsWideLineNumbers()) {
-			sendWideLineDebugger();
-		}
-
-		// Spawn a background thread which fetches the SWF and SWD
-		// from the Player and uses them to build function name tables
-		// for each source file
-		Thread t = new Thread(this, "SWF/SWD reader"); //$NON-NLS-1$
-		t.setDaemon(true);
-		t.start();
-
-		// we're probably using a bad version
-		if (!responded)
-			throw new VersionException();
-
-		return bound;
-	}
-
-	/**
-	 * Permanently stops the debugging session and breaks the
-	 * connection to the Player
-	 */
-	public void unbind()
-	{
-		unbind(false);
-	}
-
-	/**
-	 * @param requestTerminate
-	 *            if true, and if the player to which we are attached is capable
-	 *            of terminating itself (e.g. Adobe AIR), then the player will
-	 *            be told to terminate.
-	 * @return true if the player is capable of terminating itself and has been
-	 *         told to do so
-	 */
-	private boolean unbind(boolean requestTerminate)
-	{
-		// If the caller asked us to terminate the player, then we first check
-		// whether the player to which we are connected is capable of that.
-		// (The web-based players are not; Adobe AIR is.)
-		requestTerminate = requestTerminate && playerCanTerminate();
-		DMessage dm = DMessageCache.alloc(1);
-		dm.setType(DMessage.OutExit);
-		dm.putByte((byte)(requestTerminate ? 1 : 0));
-		sendMessage(dm);
-
-		// unbind from the socket, so that we don't receive any more messages
-		m_protocol.unbind();
-
-		// kill the socket
-		try { m_socket.close(); } catch(IOException io) {}
-
-		m_isConnected = false;
-		m_isHalted = false;
-
-		return requestTerminate; // true if player was told to terminate
-	}
-
-	/**
-	 * Execute the specified AppleScript by passing it to /usr/bin/osascript.
-	 *
-	 * @param appleScript
-	 *            the AppleScript to execute, as a series of lines
-	 * @param argv
-	 *            any arguments; these can be accessed from within your
-	 *            AppleScript via "item 1 or argv", "item 2 of argv", etc.
-	 * @return any text which was sent to stdout by /usr/bin/osascript, with the
-	 *         trailing \n already removed
-	 */
-	private String executeAppleScript(String[] appleScript, String[] argv)
-	{
-		StringBuilder retval = new StringBuilder();
-		try
-		{
-			List<String> execArgs = new LinkedList<String>();
-			// "osascript" is the command-line way of executing AppleScript.
-			execArgs.add("/usr/bin/osascript"); //$NON-NLS-1$
-			execArgs.add("-"); //$NON-NLS-1$
-			if (argv != null)
-			{
-				for (int i=0; i<argv.length; ++i)
-					execArgs.add(argv[i]);
-			}
-			Process osascript = Runtime.getRuntime().exec(execArgs.toArray(new String[execArgs.size()]));
-			// feed our AppleScript code to osascript's stdin
-			OutputStream outputStream = osascript.getOutputStream();
-			PrintWriter writer = new PrintWriter(outputStream, true);
-			writer.println("on run argv"); //$NON-NLS-1$ // this gives the name "argv" to the command-line args
-			for (int i=0; i<appleScript.length; ++i)
-				writer.println(appleScript[i]);
-			writer.println("end run"); //$NON-NLS-1$
-			writer.close();
-			InputStreamReader reader = new InputStreamReader(osascript.getInputStream());
-			int ch;
-			while ( (ch=reader.read()) != -1 )
-				retval.append((char)ch);
-		}
-		catch (IOException e)
-		{
-			// ignore
-		}
-		return retval.toString().replaceAll("\n$", ""); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Execute the specified AppleScript by passing it to /usr/bin/osascript.
-	 *
-	 * @param appleScriptFilename
-	 *            The name of the file containing AppleScript to execute.  This
-	 *            must be relative to PlayerSession.java.
-	 * @param argv
-	 *            any arguments; these can be accessed from within your
-	 *            AppleScript via "item 1 or argv", "item 2 of argv", etc.
-	 * @return any text which was sent to stdout by /usr/bin/osascript, with the
-	 *         trailing \n already removed
-	 * @throws IOException
-	 */
-	private String executeAppleScript(String appleScriptFilename, String[] argv) throws IOException
-	{
-		InputStream stm = null;
-		try {
-			stm = PlayerSession.class.getResourceAsStream(appleScriptFilename);
-			BufferedReader reader = new BufferedReader(new InputStreamReader(stm));
-			String line;
-			List<String> appleScriptLines = new ArrayList<String>();
-			while ( (line=reader.readLine()) != null )
-				appleScriptLines.add(line);
-			String[] lines = appleScriptLines.toArray(new String[appleScriptLines.size()]);
-			return executeAppleScript(lines, argv);
-		} finally {
-			if (stm != null) {
-				stm.close();
-			}
-		}
-	}
-
-	/**
-	 * Checks whether the specified Macintosh web browser is currently
-	 * running.  You should only call this function if you have already
-	 * checked that you are running on a Mac.
-	 *
-	 * @param browserName a name, e.g. "Safari", "Firefox", "Camino"
-	 * @return true if currently running
-	 */
-	private Set<String> runningApplications()
-	{
-		String running = executeAppleScript(
-			new String[]
-        	{
-				"tell application \"System Events\"", //$NON-NLS-1$
-				"	name of processes", //$NON-NLS-1$
-				"end tell" //$NON-NLS-1$
-        	},
-        	null
-		);
-		String[] apps = running.split(", "); //$NON-NLS-1$
-		Set<String> retval = new HashSet<String>();
-		for (int i=0; i<apps.length; ++i)
-			retval.add(apps[i]);
-		return retval;
-	}
-
-	/**
-	 * Destroys all objects related to the connection
-	 * including the process that was tied to this
-	 * session via SessionManager.launch(), if it
-	 * exists.
-	 */
-	public void terminate()
-	{
-		boolean playerWillTerminateItself = false;
-
-		// unbind first
-		try
-		{
-			// Tell player to end session.  Note that this is just a hint, and will often
-			// do nothing.  For example, the Flash player running in a browser will
-			// currently never terminate when you tell it to, but the AIR player will
-			// terminate.
-			playerWillTerminateItself = unbind(true);
-		} catch(Exception e)
-		{
-		}
-
-		if (!playerWillTerminateItself)
-		{
-			if (System.getProperty("os.name").toLowerCase().startsWith("mac os x")) //$NON-NLS-1$ //$NON-NLS-2$
-			{
-				if (m_airLaunchInfo != null)
-				{
-					// nothing we need to do -- Process.destroy() will kill the AIR app
-				}
-				else if (m_launchUrl != null && m_launchUrl.length() > 0)
-				{
-					boolean closedAnyWindows = false;
-					Set<String> runningApps = runningApplications();
-
-					if (!closedAnyWindows && runningApps.contains("Safari")) //$NON-NLS-1$
-					{
-						try {
-							String url = m_launchUrl.replaceAll(" ", "%20"); //$NON-NLS-1$ //$NON-NLS-2$
-							String safariClosedAnyWindows = executeAppleScript("appleScriptCloseSafariWindow.txt", new String[] { url }); //$NON-NLS-1$
-							if ("true".equals(safariClosedAnyWindows)) { //$NON-NLS-1$ 								
-								closedAnyWindows = true;								
-							}
-							else if ( "appquit".equals(safariClosedAnyWindows) ) { //$NON-NLS-1$
-								closedAnyWindows = true;
-								//we closed Safari, verify safari was closed
-								runningApps = waitForMacAppQuit("Safari"); //$NON-NLS-1$
-							}
-						} catch (IOException e) {
-							// ignore
-						}
-					}
-										
-					if (!closedAnyWindows && runningApps.contains("Camino")) //$NON-NLS-1$
-					{
-						// For local file: URLs, Camino uses "file://localhost/..." instead of "file:///..."
-						String url = m_launchUrl.replaceFirst("^file:///", "file://localhost/"); //$NON-NLS-1$ //$NON-NLS-2$
-						try {
-							String caminoClosedAnyWindows = executeAppleScript("appleScriptCloseCaminoWindow.txt", new String[] { url }); //$NON-NLS-1$
-							if ("true".equals(caminoClosedAnyWindows)) { //$NON-NLS-1$								
-								closedAnyWindows = true;
-							}
-							else if ( "appquit".equals(caminoClosedAnyWindows) ) { //$NON-NLS-1$
-								closedAnyWindows = true;
-								//we closed camino, verify camino was closed
-								runningApps = waitForMacAppQuit("Camino"); //$NON-NLS-1$
-							}
-								
-						} catch (IOException e) {
-							// ignore
-						}
-					}
-
-					// The standalone player on the Mac has gone through several name changes,
-					// so we have to look for all of these.
-					String[] macStandalonePlayerNames =
-					{
-						"Flash Player Debugger",	// New name as of Player 10.1	//$NON-NLS-1$
-						"Flash Player",				// New name as of 12/4/06		//$NON-NLS-1$
-						"SAFlashPlayer",			// An older name				//$NON-NLS-1$
-						"standalone"				// Another older name			//$NON-NLS-1$
-					};
-
-					for (int i=0; !closedAnyWindows && i<macStandalonePlayerNames.length; ++i)
-					{
-						if (runningApps.contains(macStandalonePlayerNames[i]))
-						{
-							executeAppleScript(new String[] { "tell application \"" + macStandalonePlayerNames[i] + "\" to quit" }, null); //$NON-NLS-1$ //$NON-NLS-2$
-							waitForMacAppQuit(macStandalonePlayerNames[i]);
-							closedAnyWindows = true;
-						}
-					}
-				}
-			}
-
-			// if we have a process pop it
-			if (m_process != null)
-			{
-				try
-				{
-					//if a launcher is set for handling the launcher operations then use it.
-					if(null != launcher)
-					{
-						m_debuggerCallbacks.terminateDebugTarget(m_process,launcher);
-					}
-					else
-					{
-						m_debuggerCallbacks.terminateDebugTarget(m_process);
-					}
-				}
-				catch (IOException e)
-				{
-					// ignore
-				}
-			}
-		}
-		else if (m_process != null) {
-			try {
-				m_process.waitFor();
-			}
-			catch (Exception e) {
-			}
-		}
-
-		// now clear it all
-		m_isConnected = false;
-		m_isHalted = false;
-	}
-
-	/**
-	 * Utility function to wait for a mac application to quit.
-	 * This waits for a maximum of MAX_TERMINATE_WAIT_MILLIS.
-	 * 
-	 * Waiting is important because applescript "quit" is not
-	 * synchronous and launching a URL while the browser is
-	 * quitting is not good. (See FB-21879)
-	 * @return Set<String> of running applications.
-	 */
-	private Set<String> waitForMacAppQuit(String browser) {
-		Set<String> runningApps;
-		boolean appClosed = true;
-		final long startMillis = System.currentTimeMillis();		
-		final long waitMillis = 100;
-		do {
-			runningApps = runningApplications();
-			if ( runningApps.contains(browser) ) {
-				appClosed = false;
-				
-				try {
-					Thread.sleep(waitMillis);					
-				} catch (InterruptedException e) {
-					return runningApps;
-				}
-				
-				long currentMillis = System.currentTimeMillis();
-				
-				if ( currentMillis - startMillis >= MAX_TERMINATE_WAIT_MILLIS )
-					break;
-			}
-			else {
-				appClosed = true;
-			}
-		}
-		while ( !appClosed );
-		return runningApps;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#resume()
-	 */
-	public void resume() throws NotSuspendedException, NotConnectedException, NoResponseException
-	{
-		resumeWorker(Isolate.DEFAULT_ID);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#suspend()
-	 */
-	public void suspend() throws SuspendedException, NotConnectedException, NoResponseException
-	{
-		suspendWorker(Isolate.DEFAULT_ID);
-	}
-
-	/**
-	 * Obtain all the suspend information
-	 */
-	public DSuspendInfo getSuspendInfo()
-	{
-		return getSuspendInfoIsolate(Isolate.DEFAULT_ID);
-	}
-
-	/**
-	 * Return the reason that the player has suspended itself.
-	 */
-	public int suspendReason()
-	{
-		DSuspendInfo info = getSuspendInfo();
-		return info.getReason();
-	}
-
-	/**
-	 * Return the offset in which the player has suspended itself.  The BreakReason
-	 * message contains both reason and offset.
-	 */
-	public int getSuspendOffset()
-	{
-		DSuspendInfo info = getSuspendInfo();
-		return info.getOffset();
-	}
-
-	/**
-	 * Return the offset in which the player has suspended itself.  The BreakReason
-	 * message contains both reason and offset.
-	 */
-	public int getSuspendActionIndex()
-	{
-		DSuspendInfo info = getSuspendInfo();
-		return info.getActionIndex();
-	}
-
-	/**
-	 * Obtain information about the various SWF(s) that have been
-	 * loaded into the Player, for this session.
-	 *
-	 * Note: As SWFs are loaded by the Player a SwfLoadedEvent is
-	 * fired.  At this point, a call to getSwfInfo() will provide
-	 * updated information.
-	 *
-	 * @return array of records describing the SWFs
-	 */
-	public SwfInfo[] getSwfs() throws NoResponseException
-	{
-		return getSwfsWorker(Isolate.DEFAULT_ID);
-	}
-
-	/**
-	 * Request information on a particular swf, used by DSwfInfo
-	 * to fill itself correctly
-	 */
-	public void requestSwfInfo(int at, int isolateId) throws NoResponseException
-	{
-		// nope don't have it...might as well go out and ask for all of them.
-		DMessage dm = DMessageCache.alloc(4);
-		dm.setType( DMessage.OutSwfInfo );
-		dm.setTargetIsolate(isolateId);
-		dm.putWord(at);
-		dm.putWord(0);  // rserved
-
-		int to = getPreference(SessionManager.PREF_CONTEXT_RESPONSE_TIMEOUT);
-
-		if (!simpleRequestResponseMessage(dm, DMessage.InSwfInfo, to))
-			throw new NoResponseException(to);
-	}
-
-	/**
-	 * Request a set of actions from the player
-	 */
-	public byte[] getActions(int which, int at, int len) throws NoResponseException
-	{
-		byte[] actions = null;
-
-		// send a actions message
-		DMessage dm = DMessageCache.alloc(12);
-		dm.setType( DMessage.OutGetActions );
-		dm.putWord(which);
-		dm.putWord(0); // rsrvd
-		dm.putDWord(at);
-		dm.putDWord(len);
-
-		// request action bytes
-		int to = getPreference(SessionManager.PREF_CONTEXT_RESPONSE_TIMEOUT);
-		if (simpleRequestResponseMessage(dm, DMessage.InGetActions, to))
-			actions = m_manager.getActions();
-		else
-			throw new NoResponseException(to);
-
-		return actions;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#stepInto()
-	 */
-	public void stepInto() throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		stepIntoWorker(Isolate.DEFAULT_ID);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#stepOut()
-	 */
-	public void stepOut() throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		stepOutWorker(Isolate.DEFAULT_ID);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#stepOver()
-	 */
-	public void stepOver() throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		stepOverWorker(Isolate.DEFAULT_ID);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#stepContinue()
-	 */
-	public void stepContinue() throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		if (!isSuspended())
-			throw new NotSuspendedException();
-
-		// send a step-continue message and then wait for the Flash player to tell us that is has
-		// resumed execution
-		if (!simpleRequestResponseMessage(DMessage.OutStepContinue, DMessage.InContinue))
-			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
-	}
-
-    /**
-     * Sends a request to the player to obtain function names.
-     * The resultant message end up populating the function name array
-     * for the given DModule.
-     *
-     * @param moduleId
-     * @param lineNbr
-     * @return
-     */
-    public void requestFunctionNames(int moduleId, int lineNbr, int isolateId) throws VersionException, NoResponseException
-    {
-        // only player 9 supports this message
-        if (m_manager.getVersion() >= 9)
-        {
-            DMessage dm = DMessageCache.alloc(8);
-            dm.setType(DMessage.OutGetFncNames);
-            dm.setTargetIsolate(isolateId);
-            dm.putDWord(moduleId);
-            dm.putDWord(lineNbr);
-
-            if (!simpleRequestResponseMessage(dm, DMessage.InGetFncNames))
-                throw new NoResponseException(0);
-        }
-        else
-        {
-            throw new VersionException();
-        }
-    }
-
-	/**
-	 * From a given file identifier return a source file object
-	 */
-	public SourceFile getFile(int fileId, int isolateId)
-	{
-		return m_manager.getSource(fileId, isolateId);
-	}
-
-	/**
-	 * Get a list of breakpoints
-	 */
-	public Location[] getBreakpointList()
-	{
-		return m_manager.getBreakpoints(Isolate.DEFAULT_ID);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#setBreakpoint(int, int)
-	 */
-	public Location setBreakpoint(int fileId, int lineNum) throws NoResponseException, NotConnectedException
-	{
-		return setBreakpointWorker(fileId, lineNum, Isolate.DEFAULT_ID);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#clearBreakpoint(flash.tools.debugger.Location)
-	 */
-	public Location clearBreakpoint(Location local)
-	{
-		/* first find it */
-		SourceFile source = local.getFile();
-		int fileId = source.getId();
-		int lineNum = local.getLine();
-		int bp = DLocation.encodeId(fileId, lineNum);
-		int isolateId = local.getIsolateId();
-		Location l = null;
-		l = m_manager.getBreakpoint(bp, isolateId);
-		
-		if (l != null)
-		{
-			/* send the message */
-			int wideLineSize = 0;
-			if (supportsWideLineNumbers())
-				wideLineSize = 4;
-			DMessage dm = DMessageCache.alloc(8 + wideLineSize);
-			dm.setType(DMessage.OutRemoveBreakpoints);
-			dm.setTargetIsolate(isolateId);
-			dm.putDWord(1);
-			if (!supportsWideLineNumbers())
-				dm.putDWord(bp);
-			else {
-				dm.putDWord(fileId);
-				dm.putDWord(lineNum);
-			}
-			sendMessage(dm);
-
-			/* no callback from the player so we remove it ourselves */
-			m_manager.removeBreakpoint(bp, isolateId);
-		}
-		return l;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#getWatchList()
-	 */
-	public Watch[] getWatchList() throws NoResponseException, NotConnectedException
-	{
-		return getWatchListWorker(Isolate.DEFAULT_ID);
-	}
-	
-	/*
-	 * @see flash.tools.debugger.Session#getWatchList()
-	 */
-	public Watch[] getWatchListWorker(int isolateId) throws NoResponseException, NotConnectedException
-	{
-			return m_manager.getWatchpoints(isolateId);
-	}
-
-	private Watch setWatch(long varId, String memberName, int kind, int isolateId) throws NoResponseException, NotConnectedException, NotSupportedException
-	{
-		// we really have two cases here, one where we add a completely new
-		// watchpoint and the other where we modify an existing one.
-		// In either case the DManager logic is such that the last watchpoint
-		// in the list will contain our id if successful.
-		Watch w = null;
-		int tag = m_watchTransactionTag++;
-
-		if (addWatch(varId, memberName, kind, tag, isolateId))
-		{
-			// good that we got a response now let's check that
-			// it actually worked.
-			int count = m_manager.getWatchpointCount(isolateId);
-			if (count > 0)
-			{
-				DWatch lastWatch = m_manager.getWatchpoint(count-1, isolateId);
-				if (lastWatch.getTag() == tag)
-					w = lastWatch;
-			}
-		}
-		return w;
-	}
-	
-	/*
-	 * @see flash.tools.debugger.Session#setWatch(flash.tools.debugger.Variable, java.lang.String, int)
-	 */
-	public Watch setWatch(Value v, String memberName, int kind) throws NoResponseException, NotConnectedException, NotSupportedException
-	{
-		return setWatch(v.getId(), memberName, kind, v.getIsolateId());
-	}
-
-	public Watch setWatch(Watch watch) throws NoResponseException, NotConnectedException, NotSupportedException
-	{
-		return setWatch(watch.getValueId(), watch.getMemberName(), watch.getKind(), watch.getIsolateId());
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#clearWatch(flash.tools.debugger.Watch)
-	 */
-	public Watch clearWatch(Watch watch) throws NoResponseException, NotConnectedException
-	{
-		Watch[] list = getWatchListWorker(watch.getIsolateId());
-		Watch w = null;
-		if ( removeWatch(watch.getValueId(), watch.getMemberName(), watch.getIsolateId()) )
-		{
-			// now let's first check the size of the list, it
-			// should now be one less
-			if (m_manager.getWatchpointCount(watch.getIsolateId()) < list.length)
-			{
-				// ok we made a change. So let's compare list and see which
-				// one went away
-				Watch[] newList = getWatchListWorker(watch.getIsolateId());
-				for(int i=0; i<newList.length; i++)
-				{
-					// where they differ is the missing one
-					if (list[i] != newList[i])
-					{
-						w = list[i];
-						break;
-					}
-				}
-
-				// might be the last one...
-				if (w == null)
-					w = list[list.length-1];
-			}
-		}
-		return w;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#getVariableList()
-	 */
-	public Variable[] getVariableList() throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException
-	{
-		return getVariableListWorker(Isolate.DEFAULT_ID);
-	}
-	
-	public Variable[] getVariableListWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException
-	{
-		// make sure the player has stopped and send our message awaiting a response
-		if (!isWorkerSuspended(isolateId))
-			throw new NotSuspendedException();
-
-		requestFrame(0, isolateId);  // our 0th frame gets our local context
-
-		// now let's request all of the special variables too
-		getValueWorker(Value.GLOBAL_ID, isolateId);
-		getValueWorker(Value.THIS_ID, isolateId);
-		getValueWorker(Value.ROOT_ID, isolateId);
-
-		// request as many levels as we can get
-		int i = 0;
-		Value v = null;
-		do
-		{
-			v = getValueWorker(Value.LEVEL_ID-i, isolateId);
-		}
-		while( i++ < 128 && v != null);
-
-		// now that we've primed the DManager we can request the base variable whose
-		// children are the variables that are available
-		v = m_manager.getValue(Value.BASE_ID, isolateId);
-		if (v == null)
-			throw new VersionException();
-		return v.getMembers(this);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#getFrames()
-	 */
-	public Frame[] getFrames() throws NotConnectedException
-	{
-		return m_manager.getFrames(Isolate.DEFAULT_ID);
-	}
-
-	/**
-	 * Asks the player to return information regarding our current context which includes
-	 * this pointer, arguments for current frame, locals, etc.
-	 */
-	public void requestFrame(int depth, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		if (playerSupportsGet())
-		{
-			if (!isWorkerSuspended(isolateId))
-				throw new NotSuspendedException();
-
-			int timeout = getPreference(SessionManager.PREF_CONTEXT_RESPONSE_TIMEOUT);
-
-			DMessage dm = DMessageCache.alloc(4);
-			dm.setType(DMessage.OutGetFrame);
-			dm.setTargetIsolate(isolateId);
-			dm.putDWord(depth);  // depth of zero
-			if (!simpleRequestResponseMessage(dm,  DMessage.InFrame, timeout)) {
-				throw new NoResponseException(timeout);
-			}
-
-			pullUpActivationObjectVariables(depth, isolateId);
-		}
-	}
-	
-	/**
-	 * The compiler sometimes creates special local variables called
-	 * "activation objects."  When it decides to do this (e.g. if the
-	 * current function contains any anonymous functions, try/catch
-	 * blocks, complicated E4X expressions, or "with" clauses), then
-	 * all locals and arguments are actually stored as children of
-	 * this activation object, rather than the usual way.
-	 *
-	 * We need to hide this implementation detail from the user.  So,
-	 * if we find any activation objects among the locals of the current
-	 * function, then we will "pull up" its members, and represent them
-	 * as if they were actually args/locals of the function itself.
-	 *
-	 * @param depth the depth of the stackframe we are fixing; 0 is topmost
-	 */
-	private void pullUpActivationObjectVariables(int depth, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		DValue frame = m_manager.getValue(Value.BASE_ID-depth, isolateId);
-		if (frame == null)
-			return;
-		DStackContext context = m_manager.getFrame(depth, isolateId);		
-		DVariable[] frameVars = (DVariable[]) frame.getMembers(this);
-		Map<String, DVariable> varmap = new LinkedHashMap<String, DVariable>(frameVars.length); // preserves order
-		List<DVariable> activationObjects = new ArrayList<DVariable>();
-		Pattern activationObjectNamePattern = Pattern.compile("^.*\\$\\d+$"); //$NON-NLS-1$
-
-		// loop through all frame variables, and separate them into two
-		// groups: activation objects, and all others (locals and arguments)
-		for (int i=0; i<frameVars.length; ++i)
-		{
-			DVariable member = frameVars[i];
-			Matcher matcher = activationObjectNamePattern.matcher(member.getName());
-			if (matcher.matches())
-				activationObjects.add(member);
-			else
-				varmap.put(member.getName(), member);
-		}
-
-		// If there are no activation objects, then we don't need to do anything
-		if (activationObjects.size() == 0)
-			return;
-
-		// overwrite existing args and locals with ones pulled from the activation objects
-		for (int i=0; i<activationObjects.size(); ++i)
-		{
-			DVariable activationObject = activationObjects.get(i);
-			DVariable[] activationMembers = (DVariable[]) activationObject.getValue().getMembers(this);
-			for (int j=0; j<activationMembers.length; ++j)
-			{
-				DVariable member = activationMembers[j];
-				int attributes = member.getAttributes();
-
-				// For some odd reason, the activation object often contains a whole bunch of
-				// other variables that we shouldn't be displaying.  I don't know what they
-				// are, but I do know that they are all marked "static".
-				if ((attributes & VariableAttribute.IS_STATIC) != 0)
-					continue;
-
-				// No matter what the activation object member's scope is, we want all locals
-				// and arguments to be considered "public"
-				attributes &= ~(VariableAttribute.PRIVATE_SCOPE | VariableAttribute.PROTECTED_SCOPE | VariableAttribute.NAMESPACE_SCOPE);
-				attributes |= VariableAttribute.PUBLIC_SCOPE;
-				member.setAttributes(attributes);
-
-				String name = member.getName();
-				DVariable oldvar = varmap.get(name);
-				int vartype;
-				if (oldvar != null)
-					vartype = oldvar.getAttributes() & (VariableAttribute.IS_ARGUMENT | VariableAttribute.IS_LOCAL);
-				else
-					vartype = VariableAttribute.IS_LOCAL;
-				member.setAttributes(member.getAttributes() | vartype);
-				varmap.put(name, member);
-			}
-
-			context.convertLocalToActivationObject(activationObject);
-		}
-
-		for (DVariable var: varmap.values())
-		{
-			frame.addMember(var);
-			if (var.isAttributeSet(VariableAttribute.IS_LOCAL))
-			{
-				context.addLocal(var);
-			}
-			else if (var.isAttributeSet(VariableAttribute.IS_ARGUMENT))
-			{
-				if (var.getName().equals("this")) //$NON-NLS-1$
-					context.setThis(var);
-				else
-					context.addArgument(var);
-			}
-		}
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#getValue(int)
-	 */
-	public Value getValue(long valueId) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		return getValueWorker(valueId, Isolate.DEFAULT_ID);
-	}
-	
-	public Value getValueWorker(long valueId, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		DValue val = null;
-
-		if (!isWorkerSuspended(isolateId))
-			throw new NotSuspendedException();
-
-		// get it from cache if we can
-		val = m_manager.getValue(valueId, isolateId);
-
-		if (val == null)
-		{
-			// if a special variable, then we need to trigger a local frame call, otherwise just use id to get it
-			if (valueId < Value.UNKNOWN_ID)
-			{
-				requestFrame(0, isolateId); // force our current frame to get populated, BASE_ID will be available
-			}
-			else if (valueId > Value.UNKNOWN_ID)
-			{
-				requestVariable(valueId, null, isolateId);
-			}
-
-			// after all this we should have our variable cache'd so try again if it wasn't there the first time
-			val = m_manager.getValue(valueId, isolateId);
-		}
-
-		return val;
-	}
-
-	/**
-	 * Returns the current value object for the given id; never requests it from the player.
-	 */
-	public Value getRawValue(long valueId, int isolateId)
-	{
-		return m_manager.getValue(valueId, isolateId);
-	}
-
-	/**
-	 * Returns the previous value object for the given id -- that is, the value that that
-	 * object had the last time the player was suspended.  Never requests it from the
-	 * player (because it can't, of course).  Returns <code>null</code> if we don't have
-	 * a value for that id.
-	 */
-	public Value getPreviousValue(long valueId, int isolateId)
-	{
-		return m_manager.getPreviousValue(valueId, isolateId);
-	}
-
-	/**
-	 * Launches a request to obtain all the members of the specified variable, and
-	 * store them in the variable which would be returned by
-	 * {@link DManager#getVariable(long)}.
-	 *
-	 * @param valueId id of variable whose members we want; underlying Variable must
-	 * already be known by the PlayerSessionManager.
-	 *
-	 * @throws NoResponseException
-	 * @throws NotConnectedException
-	 * @throws NotSuspendedException
-	 */
-	void obtainMembers(long valueId, int isolateId) throws NoResponseException, NotConnectedException, NotSuspendedException
-	{
-		if (!isWorkerSuspended(isolateId))
-			throw new NotSuspendedException();
-
-		// Get it from cache.  Normally, this should never fail; however, in
-		// the case of Flex Builder, which is multithreaded, it is possible
-		// that a thread has called this even after a different thread has
-		// single-stepped, so that the original variable is no longer valid.
-		// So, we'll check for a null return value.
-		DValue v = m_manager.getValue(valueId, isolateId);
-
-		if (v != null && !v.membersObtained())
-		{
-			requestVariable(valueId, null, false, true, isolateId);
-		}
-	}
-
-	public Value getGlobal(String name) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		return getGlobalWorker(name, Isolate.DEFAULT_ID);
-	}
-	
-	public Value getGlobalWorker(String name, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		Value v = getValue(0, name, isolateId);
-
-		if (v==null || v.getType() == VariableType.UNDEFINED)
-			return null;
-		else
-			return v;
-	}
-
-	/**
-	 * Get the value of the variable named 'name' using varId
-	 * as the context id for the Variable.
-	 *
-	 * This call is used to fire getters, where the id must
-	 * be that of the original object and not the object id
-	 * of where the getter actually lives.  For example
-	 * a getter a() may live under o.__proto__.__proto__
-	 * but you must use the id of o and the name of 'a'
-	 * in order for the getter to fire correctly.  [Note: This
-	 * paragraph was written for AS2; __proto__ doesn't exist
-	 * in AS3.  TODO: revise this paragraph]
-	 */
-	public Value getValue(long varId, String name, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		Value v = null;
-		if (isWorkerSuspended(isolateId))
-		{
-			int fireGetter = getPreference(SessionManager.PREF_INVOKE_GETTERS);
-
-			// disable children attaching to parent variables and clear our
-			// most recently seen variable
-			m_manager.clearLastVariable(isolateId);
-			m_manager.enableChildAttach(false, isolateId);
-
-			try
-			{
-				requestVariable(varId, name, (fireGetter != 0), false, isolateId);
-
-				DVariable lastVariable = m_manager.lastVariable(isolateId);
-				if (lastVariable != null)
-					v = lastVariable.getValue();
-				else
-					v = DValue.forPrimitive(Value.UNDEFINED, isolateId);
-			}
-			catch (NoResponseException e)
-			{
-				if (fireGetter != 0)
-				{
-					// We fired a getter -- most likely, what happened is that that getter
-					// (which is actual code in the user's movie) just took too long to
-					// calculate its value.  So rather than throwing an exception, we store
-					// some error text for the value of the variable itself.
-					//
-					// TODO [mmorearty 4/20/06] Even though I wrote the below code, I now
-					// am wondering if it is incorrect that I am calling addVariableMember(),
-					// because in every other case, this function does not add members to
-					// existing objects.  Need to revisit this.
-					v = new DValue(VariableType.STRING, "String", "String", ValueAttribute.IS_EXCEPTION, //$NON-NLS-1$ //$NON-NLS-2$
-							e.getLocalizedMessage(), isolateId);
-					if (varId != 0) {
-						DVariable var = new DVariable(name, (DValue)v, isolateId);
-						m_manager.enableChildAttach(true, isolateId);
-						m_manager.addVariableMember(varId, var, isolateId);
-					}
-				}
-				else
-				{
-					throw e; // re-throw
-				}
-			}
-			finally
-			{
-				// reset our attach flag, so that children attach to parent variables.
-				m_manager.enableChildAttach(true, isolateId);
-			}
-		}
-		else
-			throw new NotSuspendedException();
-
-		return v;
-	}
-
-	private void requestVariable(long id, String name, int isolateId) throws NoResponseException, NotConnectedException, NotSuspendedException
-	{
-		requestVariable(id, name, false, false, isolateId);
-	}
-
-	/**
-	 * @param thisValue the value of the "this" pointer; meaningless if isConstructor is true
-	 * @param isConstructor whether we're calling a constructor as opposed to a regular function
-	 * @param funcname the name of the function to call (or class whose constructor we're calling)
-	 * @param args the args to the function
-	 * @return the return value of the function
-	 */
-	private Value callFunction(Value thisValue, boolean isConstructor, String funcname, Value[] args, int isolateId) throws PlayerDebugException
-	{
-		if (!isWorkerSuspended(isolateId))
-			throw new NotSuspendedException();
-
-		if (!playerCanCallFunctions(isolateId))
-			throw new NotSupportedException(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("functionCallsNotSupported")); //$NON-NLS-1$
-
-		// name = getRawMemberName(id, name);
-
-		m_manager.clearLastFunctionCall(isolateId);
-
-		DMessage dm = buildCallFunctionMessage(isConstructor, thisValue, funcname, args);
-
-		dm.setTargetIsolate(isolateId);
-		
-		// make sure any exception during the setter gets held onto
-		m_manager.beginPlayerCodeExecution(isolateId);
-
-		// TODO wrong timeout
-		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
-		timeout += 500; // give the player enough time to raise its timeout exception
-
-		boolean result = simpleRequestResponseMessage(dm, DMessage.InCallFunction, timeout);
-
-		// tell manager we're done; ignore returned FaultEvent
-		m_manager.endPlayerCodeExecution(isolateId);
-
-		if (!result)
-			throw new NoResponseException(timeout);
-
-		DVariable lastFunctionCall = m_manager.lastFunctionCall(isolateId);
-		if (lastFunctionCall != null)
-			return lastFunctionCall.getValue();
-		else
-			return DValue.forPrimitive(Value.UNDEFINED, isolateId);
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#callFunction(flash.tools.debugger.Value, java.lang.String, flash.tools.debugger.Value[])
-	 */
-	public Value callFunction(Value thisValue, String funcname, Value[] args) throws PlayerDebugException
-	{
-		return callFunctionWorker(thisValue, funcname, args, Isolate.DEFAULT_ID);
-	}
-	
-	public Value callFunctionWorker(Value thisValue, String funcname, Value[] args, int isolateId) throws PlayerDebugException
-	{
-		Value retval = callPseudoFunction(thisValue, funcname, args, isolateId);
-		if (retval != null) {
-			return retval;
-		}
-
-		return callFunction(thisValue, false, funcname, args, isolateId);
-	}
-
-	/**
-	 * Checks to see if the function being called is a debugger pseudofunction such as
-	 * $obj(), and if so, handles that directly rather than calling the player.  Returns
-	 * null if the function being called is not a pseudofunction.
-	 */
-	private Value callPseudoFunction(Value thisValue, String funcname, Value[] args, int isolateId) throws PlayerDebugException{
-		if (thisValue.getType() == VariableType.UNDEFINED || thisValue.getType() == VariableType.NULL) {
-			if ("$obj".equals(funcname)) { //$NON-NLS-1$
-				return callObjPseudoFunction(args, isolateId);
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Handles a call to the debugger pseudofunction $obj() -- e.g. $obj(1234) returns
-	 * a pointer to the object with id 1234.
-	 */
-	private Value callObjPseudoFunction(Value[] args, int isolateId) throws PlayerDebugException {
-		if (args.length != 1) {
-			return DValue.forPrimitive(DValue.UNDEFINED, isolateId);
-		}
-		double arg = ECMA.toNumber(this, args[0]);
-		long id = (long) arg;
-		if (id != arg) {
-			return DValue.forPrimitive(DValue.UNDEFINED, isolateId);
-		}
-		DValue value = m_manager.getValue(id, isolateId);
-		if (value == null) {
-			return DValue.forPrimitive(DValue.UNDEFINED, isolateId);
-		}
-		return value;
-	}
-
-	public Value callConstructor(String funcname, Value[] args) throws PlayerDebugException
-	{
-		return callConstructorWorker(funcname, args, Isolate.DEFAULT_ID);
-	}
-	
-	public Value callConstructorWorker(String funcname, Value[] args, int isolateId) throws PlayerDebugException
-	{
-		return callFunction(DValue.forPrimitive(null, isolateId), true, funcname, args, isolateId);
-	}
-
-	private DMessage buildCallFunctionMessage(boolean isConstructor, Value thisValue, String funcname, Value[] args)
-	{
-		funcname = (funcname == null) ? "" : funcname; //$NON-NLS-1$
-
-		int messageSize = 8; // DWORD representing flags + DWORD representing frame
-		String thisType = DVariable.typeNameFor(thisValue.getType());
-		String thisValueString = thisValue.getValueAsString();
-		messageSize += DMessage.getStringLength(thisType)+1;
-		messageSize += DMessage.getStringLength(thisValueString)+1;
-		messageSize += DMessage.getStringLength(funcname)+1;
-		messageSize += 4; // DWORD representing the number of args
-		String[] argTypes = new String[args.length];
-		String[] argValues = new String[args.length];
-		for (int i=0; i<args.length; ++i)
-		{
-			argTypes[i] = DVariable.typeNameFor(args[i].getType());
-			argValues[i] = args[i].getValueAsString();
-			messageSize += DMessage.getStringLength(argValues[i])+1;
-			messageSize += DMessage.getStringLength(argTypes[i])+1;
-		}
-
-		DMessage dm = DMessageCache.alloc(messageSize);
-		dm.setType(DMessage.OutCallFunction);
-		try
-		{
-			dm.putDWord(isConstructor ? 1 : 0);
-			dm.putDWord(0); // TODO: the currently active frame number
-			dm.putString(thisType);
-			dm.putString(thisValueString);
-			dm.putString(funcname);
-			dm.putDWord(args.length);
-			for (int i=0; i<args.length; ++i)
-			{
-				dm.putString(argTypes[i]);
-				dm.putString(argValues[i]);
-			}
-		}
-		catch(UnsupportedEncodingException uee)
-		{
-			// couldn't write out the string, so just terminate it and complete anyway
-			dm.putByte((byte)'\0');
-		}
-
-		return dm;
-	}
-
-	private void requestVariable(long id, String name, boolean fireGetter, boolean alsoGetChildren, int isolateId) throws NoResponseException, NotConnectedException, NotSuspendedException
-	{
-		if (!isWorkerSuspended(isolateId))
-			throw new NotSuspendedException();
-
-		name = getRawMemberName(id, name, isolateId);
-
-		DMessage dm = buildOutGetMessage(id, name, fireGetter, alsoGetChildren);
-
-		dm.setTargetIsolate(isolateId);
-		
-		// make sure any exception during the setter gets held onto
-		m_manager.beginPlayerCodeExecution(isolateId);
-
-		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
-		timeout += 500; // give the player enough time to raise its timeout exception
-
-		boolean result = simpleRequestResponseMessage(dm, DMessage.InGetVariable, timeout);
-
-		// tell manager we're done; ignore returned FaultEvent
-		m_manager.endPlayerCodeExecution(isolateId);
-
-		if (!result)
-			throw new NoResponseException(timeout);
-	}
-
-	private DMessage buildOutGetMessage(long id, String name, boolean fireGetter, boolean alsoGetChildren)
-	{
-		final int FLAGS_SIZE = 4;
-		name = (name == null) ? "" : name; //$NON-NLS-1$
-
-		DMessage dm = DMessageCache.alloc(DMessage.getSizeofPtr() + DMessage.getStringLength(name)+1 + FLAGS_SIZE);
-		dm.setType( (!fireGetter) ? DMessage.OutGetVariable : DMessage.OutGetVariableWhichInvokesGetter );
-		dm.putPtr(id);
-		try
-		{
-			dm.putString(name);
-		}
-		catch(UnsupportedEncodingException uee)
-		{
-			// couldn't write out the string, so just terminate it and complete anyway
-			dm.putByte((byte)'\0');
-		}
-
-		// as an optimization, newer player builds allow us to tell them not to
-		// send all the children of an object along with the object, because
-		// frequently we don't care about the children
-		int flags = GetVariableFlag.DONT_GET_FUNCTIONS; // we never want functions
-		if (fireGetter)
-			flags |= GetVariableFlag.INVOKE_GETTER;
-		if (alsoGetChildren)
-			flags |= GetVariableFlag.ALSO_GET_CHILDREN | GetVariableFlag.GET_CLASS_HIERARCHY;
-		dm.putDWord(flags);
-
-		return dm;
-	}
-
-	public FaultEvent setScalarMember(long varId, String memberName, int type, String value, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
-	{
-		if (!isWorkerSuspended(isolateId))
-			throw new NotSuspendedException();
-
-		// If the varId is that of a stack frame, then we need to check whether that
-		// stack frame has an "activation object".  If it does, then all of the
-		// arguments and locals are actually kept as members of that activation
-		// object, and so we need to change varId to be the ID of that activation
-		// object -- that way, the player will modify the member of the activation
-		// object rather than modifying the "regular" argument or local.  See bug
-		// 155031.
-		if (varId <= Value.BASE_ID && varId > Value.LEVEL_ID)
-		{
-			int depth = (int) (Value.BASE_ID - varId);
-			DStackContext context = m_manager.getFrame(depth,isolateId);
-			DVariable activationObject = context.getActivationObject();
-			if (activationObject != null)
-				varId = activationObject.getValue().getId();
-		}
-
-		memberName = getRawMemberName(varId, memberName, isolateId);
-
-		// see if it is our any of our special variables
-		FaultEvent faultEvent = requestSetVariable( isPseudoVarId(varId) ? 0 : varId, memberName, type, value, isolateId);
-
-		// now that we sent it out, we need to clear our variable cache
-		// if it is our special context then mark the frame as stale.
-		if (isPseudoVarId(varId) && m_manager.getFrameCount(isolateId) > 0)
-		{
-			m_manager.getFrame(0, isolateId).markStale();
-		}
-		else
-		{
-			DValue parent = m_manager.getValue(varId,isolateId);
-			if (parent != null)
-				parent.removeAllMembers();
-		}
-
-		return faultEvent;
-	}
-
-	/**
-	 * Returns whether a variable ID is "real" or not.  For example,
-	 * Value.THIS_ID is a "pseudo" varId, as are all the other special
-	 * hard-coded varIds in the Value class.
-	 */
-	private boolean isPseudoVarId(long varId)
-	{
-		/*
-		 * Unfortunately, this is actually just taking a guess.  The old code
-		 * used "varId &lt; 0"; however, the Linux player sometimes has real
-		 * variable IDs which are less than zero.
-		 */
-		return (varId < 0 && varId > -65535);
-	}
-
-	/**
-	 * <code>memberName</code> might be just <code>"varname"</code>, or it
-	 * might be <code>"namespace::varname"</code>, or it might be
-	 * <code>"namespace@hexaddr::varname"</code>.  In the third case, it is
-	 * fully resolved, and there is nothing we need to do.  But in the first
-	 * and second cases, we may need to fully resolve it so that the Player
-	 * will recognize it.
-	 */
-	private String getRawMemberName(long parentValueId, String memberName, int isolateId)
-	{
-		if (memberName != null)
-		{
-			DValue parent = m_manager.getValue(parentValueId, isolateId);
-			if (parent != null)
-			{
-				int doubleColon = memberName.indexOf("::"); //$NON-NLS-1$
-				String shortName = (doubleColon==-1) ? memberName : memberName.substring(doubleColon+2);
-				DVariable member = parent.findMember(shortName);
-				if (member != null)
-					memberName = member.getRawName();
-			}
-		}
-		return memberName;
-	}
-
-	/**
-	 * @return null for success, or fault event if a setter in the player threw an exception
-	 */
-	private FaultEvent requestSetVariable(long id, String name, int t, String value, int isolateId) throws NoResponseException
-	{
-		// convert type to typeName
-		String type = DVariable.typeNameFor(t);
-		DMessage dm = buildOutSetMessage(id, name, type, value);
-		dm.setTargetIsolate(isolateId);
-		FaultEvent faultEvent = null;
-//		System.out.println("setmsg id="+id+",name="+name+",t="+type+",value="+value);
-
-		// make sure any exception during the setter gets held onto
-		m_manager.beginPlayerCodeExecution(isolateId);
-
-		// turn off squelch so we can hear the response
-		sendSquelch(false, isolateId);
-
-		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
-
-		if (!simpleRequestResponseMessage(dm, (t == VariableType.STRING) ? DMessage.InSetVariable : DMessage.InSetVariable2, timeout))
-			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
-
-		// turn it back on
-		sendSquelch(true, isolateId);
-
-		// tell manager we're done, and get exception if any
-		faultEvent = m_manager.endPlayerCodeExecution(isolateId);
-
-		// hammer the variable cache and context array
-		m_manager.freeValueCache(isolateId);
-		return faultEvent;
-	}
-
-	private DMessage buildOutSetMessage(long id, String name, String type, String v)
-	{
-		DMessage dm = DMessageCache.alloc(DMessage.getSizeofPtr()+
-				DMessage.getStringLength(name)+
-				DMessage.getStringLength(type)+
-				DMessage.getStringLength(v)+
-				3);
-		dm.setType(DMessage.OutSetVariable);
-		dm.putPtr(id);
-		try { dm.putString(name); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-		try { dm.putString(type); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-		try { dm.putString(v); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-		return dm;
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#waitForEvent()
-	 */
-	public void waitForEvent() throws NotConnectedException, InterruptedException
-	{
-		Object eventNotifier = m_manager.getEventNotifier();
-		synchronized (eventNotifier)
-		{
-			while (getEventCount() == 0 && isConnected())
-			{
-				eventNotifier.wait();
-			}
-		}
-
-		// We should NOT call isConnected() to test for a broken connection!  That
-		// is because we may have received one or more events AND lost the connection,
-		// almost simultaneously.  If there are any messages available for the
-		// caller to process, we should not throw an exception.
-		if (getEventCount() == 0 && !isConnected())
-			throw new NotConnectedException();
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#getEventCount()
-	 */
-	public int getEventCount()
-	{
-		return m_manager.getEventCount();
-	}
-
-	/*
-	 * @see flash.tools.debugger.Session#nextEvent()
-	 */
-	public DebugEvent nextEvent()
-	{
-		return m_manager.nextEvent();
-	}
-
-	/**
-	 * Adds a watchpoint on the given expression
-	 * @throws NotConnectedException
-	 * @throws NoResponseException
-	 * @throws NotSupportedException
-	 * @throws NotSuspendedException
-	 */
-	public boolean addWatch(long varId, String varName, int type, int tag, int isolateId) throws NoResponseException, NotConnectedException, NotSupportedException
-	{
-		// TODO check for NoResponse, NotConnected
-
-		if (!supportsWatchpoints(isolateId))
-			throw new NotSupportedException(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("watchpointsNotSupported")); //$NON-NLS-1$
-
-		varName = getRawMemberName(varId, varName, isolateId);
-		DMessage dm = DMessageCache.alloc(4+DMessage.getSizeofPtr()+DMessage.getStringLength(varName)+1);
-		dm.setType(DMessage.OutAddWatch2);
-		dm.setTargetIsolate(isolateId);
-		dm.putPtr(varId);
-		try { dm.putString(varName); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-		dm.putWord(type);
-		dm.putWord(tag);
-
-		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
-		boolean result = simpleRequestResponseMessage(dm, DMessage.InWatch2, timeout);
-		return result;
-	}
-
-	/**
-	 * Removes a watchpoint on the given expression
-	 * @throws NotConnectedException
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
-	 */
-	public boolean removeWatch(long varId, String memberName, int isolateId) throws NoResponseException, NotConnectedException
-	{
-		memberName = getRawMemberName(varId, memberName, isolateId);
-		DMessage dm = DMessageCache.alloc(DMessage.getSizeofPtr()+DMessage.getStringLength(memberName)+1);
-		dm.setType(DMessage.OutRemoveWatch2);
-		dm.putPtr(varId);
-		try { dm.putString(memberName); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-
-		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
-		boolean result = simpleRequestResponseMessage(dm, DMessage.InWatch2, timeout);
-		return result;
-	}
-
-	/**
-	 * Send a message that contains no data
-	 */
-	void sendMessage(int message)
-	{
-		DMessage dm = DMessageCache.alloc(0);
-		dm.setType(message);
-		sendMessage(dm);
-	}
-	
-	/**
-	 * Send a message that contains no data
-	 */
-	void sendMessageIsolate(int message, int isolateId)
-	{
-		DMessage dm = DMessageCache.alloc(0);
-		dm.setTargetIsolate(isolateId);
-		dm.setType(message);
-		sendMessage(dm);
-	}
-
-	/**
-	 * Send a fully formed message and release it when done
-	 */
-	synchronized void sendMessage(DMessage dm)
-	{
-		try
-		{
-			if (dm.getType() != DMessage.OutSetActiveIsolate) {
-				int isolate = dm.getTargetIsolate();
-				if (isolate != getActiveIsolate().getId()) {
-					DMessage dm1 = DMessageCache.alloc(4);
-					dm1.setTargetIsolate(isolate);
-					dm1.setType(DMessage.OutSetActiveIsolate);
-					dm1.putDWord(isolate);
-
-					/* Use sendMessage here to avoid waiting for a response. 
-					 * The assumption is that once the message is sent, subsequent
-					 * messages are for that isolate regardless of the player confirming
-					 * it. With this change, performance has improved considerably; player
-					 * debugger has not gone out of sync since the ProcessTag messages
-					 * flood issue was resolved. */
-					sendMessage(dm1);
-
-					m_manager.setActiveIsolate(m_manager.getIsolate(isolate));
-
-				}
-			}
-			m_protocol.txMessage(dm);
-
-			if (m_debugMsgOn || m_debugMsgFileOn)
-				trace(dm, false);
-		}
-		catch(IOException io)
-		{
-			if (Trace.error)
-			{
-				Trace.trace("Attempt to send message "+dm.outToString()+" failed"); //$NON-NLS-1$ //$NON-NLS-2$
-				io.printStackTrace();
-			}
-		}
-		DMessageCache.free(dm);
-	}
-
-	/**
-	 * Tell the player to shut-up
-	 */
-	boolean sendSquelch(boolean on, int isolateId)
-	{
-		boolean responded;
-		DMessage dm = DMessageCache.alloc(4);
-		dm.setType(DMessage.OutSetSquelch);
-		dm.setTargetIsolate(isolateId);
-		dm.putDWord( on ? 1 : 0);
-		responded = simpleRequestResponseMessage(dm, DMessage.InSquelch);
-		return responded;
-	}
-
-	void sendStopWarning()
-	{
-		// Currently, "disable_script_stuck_dialog" only works for AS2, not for AS3.
-		String option = "disable_script_stuck_dialog"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-
-		// HACK: Completely disable the script-stuck notifications, so that we can
-		// get AS3 debugging working.
-		option = "disable_script_stuck"; //$NON-NLS-1$
-		value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendStopOnFault()
-	{
-		String option = "break_on_fault"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendEnumerateOverride()
-	{
-		String option = "enumerate_override"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendFailureNotify()
-	{
-		String option = "notify_on_failure"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendInvokeSetters()
-	{
-		String option = "invoke_setters"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendSwfloadNotify()
-	{
-		String option = "swf_load_messages"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendConsoleErrorsAsTrace(boolean on)
-	{
-		String option = "console_errors"; //$NON-NLS-1$
-		String value = (on) ? "on" : "off"; //$NON-NLS-1$ //$NON-NLS-2$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendGetterTimeout()
-	{
-		String option = "getter_timeout"; //$NON-NLS-1$
-		String value = "" + getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT); //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-
-	void sendSetterTimeout()
-	{
-		String option = "setter_timeout"; //$NON-NLS-1$
-		String value = "" + getPreference(SessionManager.PREF_SETVAR_RESPONSE_TIMEOUT); //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-	
-	void sendConcurrentDebugger()
-	{
-		String option = "concurrent_debugger"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-	}
-	
-	void sendWideLineDebugger()
-	{
-		String option = "wide_line_debugger"; //$NON-NLS-1$
-		String value = "on"; //$NON-NLS-1$
-
-		sendOptionMessage(option, value);
-		m_manager.setWideLines(true);
-	}
-
-	void sendOptionMessage(String option, String value)
-	{
-		int msgSize = DMessage.getStringLength(option)+DMessage.getStringLength(value)+2;  // add 2 for trailing nulls of each string
-
-		DMessage dm = DMessageCache.alloc(msgSize);
-		dm.setType(DMessage.OutSetOption);
-		try { dm.putString(option); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-		try { dm.putString(value); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-		simpleRequestResponseMessage(dm, DMessage.InOption);
-	}
-
-	public boolean supportsWatchpoints()
-	{
-		return supportsWatchpoints(Isolate.DEFAULT_ID);
-	}
-	
-	public boolean supportsWatchpoints(int isolateId)
-	{
-		if (m_playerSupportsWatchpoints == null)
-			m_playerSupportsWatchpoints = new Boolean(getOption("can_set_watchpoints", false, isolateId)); //$NON-NLS-1$
-		return m_playerSupportsWatchpoints.booleanValue();
-	}
-
-	public boolean playerCanBreakOnAllExceptions()
-	{
-		return playerCanBreakOnAllExceptions(Isolate.DEFAULT_ID);
-	}
-	
-	public boolean playerCanBreakOnAllExceptions(int isolateId)
-	{
-		if (m_playerCanBreakOnAllExceptions == null)
-			m_playerCanBreakOnAllExceptions = new Boolean(getOption("can_break_on_all_exceptions", false, isolateId)); //$NON-NLS-1$
-		return m_playerCanBreakOnAllExceptions.booleanValue();
-	}
-	
-	public boolean supportsConcurrency(int isolateId)
-	{
-		if (m_playerSupportsConcurrency == null)
-			m_playerSupportsConcurrency = new Boolean(getOption("concurrent_player", false, isolateId)); //$NON-NLS-1$
-		return m_playerSupportsConcurrency.booleanValue();
-	}
-	
-	public boolean supportsConcurrency()
-	{
-		return supportsConcurrency(Isolate.DEFAULT_ID);
-	}
-	
-	public boolean supportsWideLineNumbers()
-	{
-		return supportsWideLineNumbers(Isolate.DEFAULT_ID);
-	}
-	
-	public boolean supportsWideLineNumbers(int isolateId)
-	{
-		if (m_playerSupportsWideLine == null)
-			m_playerSupportsWideLine = new Boolean(getOption("wide_line_player", false, isolateId)); //$NON-NLS-1$
-		return m_playerSupportsWideLine.booleanValue();
-	}
-
-	public boolean playerCanTerminate()
-	{
-		return getOption("can_terminate", false, Isolate.DEFAULT_ID); //$NON-NLS-1$
-	}
-
-	public boolean playerCanCallFunctions()
-	{
-		return playerCanCallFunctions(Isolate.DEFAULT_ID);
-	}
-	
-	public boolean playerCanCallFunctions(int isolateId)
-	{
-		if (m_playerCanCallFunctions == null)
-			m_playerCanCallFunctions = new Boolean(getOption("can_call_functions", false, isolateId)); //$NON-NLS-1$
-		return m_playerCanCallFunctions.booleanValue();
-	}
-
-	/**
-	 * Returns the value of a Flash Player boolean option that was requested by
-	 * OutGetOption and returned by InOption.
-	 *
-	 * @param optionName
-	 *            the name of the option
-	 * @return its value, or null
-	 */
-	public boolean getOption(String optionName, boolean defaultValue, int isolateId)
-	{
-		boolean retval = defaultValue;
-		String optionValue = getOption(optionName, null, isolateId);
-
-		if (optionValue != null)
-			retval = Boolean.valueOf(optionValue).booleanValue();
-
-		return retval;
-	}
-
-	/**
-	 * Returns the value of a Flash Player string option that was requested by
-	 * OutGetOption and returned by InOption.
-	 *
-	 * @param optionName
-	 *            the name of the option
-	 * @return its value, or null
-	 */
-	public String getOption(String optionName, String defaultValue, int isolateId)
-	{
-		String optionValue = defaultValue;
-
-		int msgSize = DMessage.getStringLength(optionName)+1;  // add 1 for trailing null of string
-
-		DMessage dm = DMessageCache.alloc(msgSize);
-		dm.setTargetIsolate(isolateId);
-		dm.setType(DMessage.OutGetOption);
-		try { dm.putString(optionName); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
-		if (simpleRequestResponseMessage(dm, DMessage.InOption))
-			optionValue = m_manager.getOption(optionName);
-		return optionValue;
-	}
-	
-	long getMessageInCount(DMessageCounter counter, long isolate, int msgType) {
-		if (isolate == Isolate.DEFAULT_ID) {
-			return counter.getInCount(msgType);
-		}
-		else {
-			return counter.getIsolateInCount(isolate, msgType);
-		}
-	}
-	
-	Object getMessageInLock(DMessageCounter counter, long isolate) {
-		if (isolate == Isolate.DEFAULT_ID) {
-			return counter.getInLock();
-		}
-		else {
-			return counter.getIsolateInLock(isolate);
-		}
-	}
-
-	/**
-	 * Send our message and assume that the next response that is received is
-	 * ours.  Primitive but there is no use in setting up a full request / response
-	 * pattern since the player doesn't follow it.
-	 *
-	 * @return false is no response.
-	 */
-	boolean simpleRequestResponseMessage(DMessage msg, int msgType, int timeout)
-	{
-		boolean response = false;
-
-		//FIXME: Check if timeout needs to adjust to the isolate switching
-		// delay
-		// use default or user supplied timeout
-		timeout = (timeout > 0) ? timeout : getPreference(SessionManager.PREF_RESPONSE_TIMEOUT);
-
-		// note the number of messages of this type before our send
-		DMessageCounter msgCounter = getMessageCounter();
-		int isolate = msg.getTargetIsolate();
-		long num = getMessageInCount(msgCounter, isolate, msgType);
-		long expect = num+1;
-
-		// send the message
-		sendMessage(msg);
-
-		long startTime = System.currentTimeMillis();
-//		System.out.println("sending- "+DMessage.outTypeName(msg.getType())+",timeout="+timeout+",start="+start);
-
-		// now wait till we see a message come in
-		m_incoming = false;
-		synchronized (getMessageInLock(msgCounter, isolate))
-		{
-			while( (expect > getMessageInCount(msgCounter, isolate, msgType)) &&
-					System.currentTimeMillis() < startTime + timeout &&
-					isConnected())
-			{
-				// block until the message counter tells us that some message has been received
-				try
-				{
-					getMessageInLock(msgCounter, isolate).wait(timeout);
-				}
-				catch (InterruptedException e)
-				{
-					// this should never happen
-					e.printStackTrace();
-					//FIXME: Will resetting the interrupted status here
-					//cause any problems?
-//		            Thread.currentThread().interrupt();
-				}
-
-				// if we see incoming messages, then we should reset our timeout
-				synchronized (this)
-				{
-					if (m_incoming)
-					{
-						startTime = System.currentTimeMillis();
-						m_incoming = false;
-					}
-				}
-			}
-		}
-
-		if (getMessageInCount(msgCounter, isolate, msgType) >= expect)
-			response = true;
-		else if (timeout <= 0 && Trace.error)
-			Trace.trace("Timed-out waiting for "+DMessage.inTypeName(msgType)+" response to message "+msg.outToString()); //$NON-NLS-1$ //$NON-NLS-2$
-
-//		long endTime = System.currentTimeMillis();
-//		System.out.println("    response- "+response+",timeout="+timeout+",elapsed="+(endTime-startTime));
-		m_lastResponse = response;
-		return response;
-	}
-
-	// use default timeout
-	boolean simpleRequestResponseMessage(DMessage msg, int msgType) 	{ return simpleRequestResponseMessage(msg, msgType, -1); 	}
-	
-	boolean simpleRequestResponseMessageIsolate(DMessage msg, int msgType, int isolateId) 	{ 
-		return simpleRequestResponseMessageIsolate(msg, msgType, -1, isolateId); 			
-	}
-	
-	boolean simpleRequestResponseMessageIsolate(DMessage msg, int msgType, int timeout, int isolateId)
-	{
-		msg.setTargetIsolate(isolateId);
-		return simpleRequestResponseMessage(msg, msgType, timeout);
-	}
-	
-	boolean simpleRequestResponseMessage(int msg, int msgType)			{ return simpleRequestResponseMessage(msg, msgType, -1); 	}
-	
-	boolean simpleRequestResponseMessageIsolate(int msg, int msgType, int isolateId) { 
-		return simpleRequestResponseMessageIsolate(msg, msgType, -1, isolateId);
-	}
-
-	boolean simpleRequestResponseMessageIsolate(int msg, int msgType, int timeout, int isolateId)
-	{
-		DMessage dm = DMessageCache.alloc(0);
-		dm.setType(msg);
-		dm.setTargetIsolate(isolateId);
-		return simpleRequestResponseMessage(dm, msgType, timeout);
-	}
-	
-	// Convenience function
-	boolean simpleRequestResponseMessage(int msg, int msgType, int timeout)
-	{
-		DMessage dm = DMessageCache.alloc(0);
-		dm.setType(msg);
-		return simpleRequestResponseMessage(dm, msgType, timeout);
-	}
-
-	/**
-	 * We register ourself as a listener to DMessages from the pipe for the
-	 * sole purpose of monitoring the state of the debugger.  All other
-	 * object management occurs with DManager
-	 */
-	/**
-	 * Issued when the socket connection to the player is cut
-	 */
-	public void disconnected()
-	{
-		m_isHalted = false;
-		m_isConnected = false;
-		m_manager.disconnected();
-	}
-
-	/**
-	 * This is the core routine for decoding incoming messages and deciding what should be
-	 * done with them.  We have registered ourself with DProtocol to be notified when any
-	 * incoming messages have been received.
-	 *
-	 * It is important to note that we should not rely on the contents of the message
-	 * since it may be reused after we exit this method.
-	 */
-	public void messageArrived(DMessage msg, DProtocol which)
-	{
-		preMessageArrived(msg, which);
-		msg.reset(); // allow the message to be re-parsed
-		m_manager.messageArrived(msg, which);
-		msg.reset(); // allow the message to be re-parsed
-		postMessageArrived(msg, which);
-	}
-
-	/**
-	 * Processes the message before it is passed to the DManager.
-	 */
-	private void preMessageArrived(DMessage msg, DProtocol which)
-	{
-		switch (msg.getType())
-		{
-		case DMessage.InIsolate:
-
-				m_lastPreIsolate = (int)msg.getDWord();
-			
-			break;
-		
-			case DMessage.InAskBreakpoints:
-			case DMessage.InBreakAt:
-			case DMessage.InBreakAtExt:
-			{
-				// We need to set m_isHalted to true before the DManager processes
-				// the message, because the DManager may add a BreakEvent to the
-				// event queue, which the host debugger may immediately process;