diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/.cvsignore b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/.cvsignore
index 2aa93fbf116ee06ce92f704f1fd4da5547ab1a4f..a9c40735bc43bf3b44ae1aa9af162f53f3789759 100644
--- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/.cvsignore
+++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/.cvsignore
@@ -2,3 +2,4 @@ bin
 @dot
 build.xml
 org.eclipse.wtp.releng.tools.component.core_1.0.0.jar
+javaCompiler...args
\ No newline at end of file
diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/MethodRef.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/MethodRef.java
index 8c26a0452d629389825724f7345c7271bd72748e..968b426aa7e0fb6c5c99ded60cc556770139145c 100644
--- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/MethodRef.java
+++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/MethodRef.java
@@ -17,7 +17,7 @@ public class MethodRef extends NamedRef
   {
     StringBuffer sb = new StringBuffer();
     sb.append("<method name=\"");
-    sb.append(getName());
+    sb.append(encode(getName()));
     sb.append("\" desc=\"");
     sb.append(getDescriptor());
     sb.append("\" ref=\"");
diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/NamedRef.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/NamedRef.java
index d502b7d42c12f532528c242f648445b259a5a389..048e5fd40057ed3dfb37e015002f433093bebd00 100644
--- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/NamedRef.java
+++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/NamedRef.java
@@ -35,4 +35,40 @@ public class NamedRef extends Ref
   {
     this.name = name;
   }
+
+  protected String encode(String s)
+  {
+    int index = s.indexOf('<');
+    if (index != -1)
+    {
+      StringBuffer sb = new StringBuffer(s);
+      while (index != -1)
+      {
+        sb.deleteCharAt(index);
+        sb.insert(index, new char[] {'&', 'l', 't', ';'}, 0, 4);
+        index = sb.toString().indexOf('<');
+      }
+      return sb.toString();
+    }
+    else
+      return s;
+  }
+
+  protected String decode(String s)
+  {
+    int index = s.indexOf("&lt;");
+    if (index != -1)
+    {
+      StringBuffer sb = new StringBuffer(s);
+      while (index != -1)
+      {
+        sb.delete(index, index + 4);
+        sb.insert(index, '<');
+        index = sb.toString().indexOf("&lt;");
+      }
+      return sb.toString();
+    }
+    else
+      return s;
+  }
 }
\ No newline at end of file
diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/References.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/References.java
index 5d34629cb41afc78ff228a5dd6b244ced82d40ed..d65a1de38ebbe05280f8bd25e5fae7c94431bb72 100644
--- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/References.java
+++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/References.java
@@ -13,6 +13,7 @@ package org.eclipse.wtp.releng.tools.component.adopters;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -169,6 +170,49 @@ public class References
     return sb.toString();
   }
 
+  public void write(OutputStream os) throws IOException
+  {
+    try
+    {
+      os.write("<references name=\"".getBytes());
+      String s = getName();
+      if (s != null)
+        os.write(s.getBytes());
+      os.write("\" contactInfo=\"".getBytes());
+      s = getContactInfo();
+      if (s != null)
+        os.write(s.getBytes());
+      os.write("\" refBuildId=\"".getBytes());
+      s = getRefBuildId();
+      if (s != null)
+        os.write(s.getBytes());
+      os.write("\" includes=\"".getBytes());
+      s = getIncludes();
+      if (s != null)
+        os.write(s.getBytes());
+      os.write("\" excludes=\"".getBytes());
+      s = getExcludes();
+      if (s != null)
+        os.write(s.getBytes());
+      os.write("\" includePlugins=\"".getBytes());
+      s = getIncludePlugins();
+      if (s != null)
+        os.write(s.getBytes());
+      os.write("\" excludePlugins=\"".getBytes());
+      s = getExcludePlugins();
+      if (s != null)
+        os.write(s.getBytes());
+      os.write("\">".getBytes());
+      for (Iterator it = getPluginRefs().iterator(); it.hasNext();)
+        os.write(it.next().toString().getBytes());
+      os.write("</references>".getBytes());
+    }
+    finally
+    {
+      os.close();
+    }
+  }
+
   private class ReferencesHandler extends DefaultHandler
   {
     private PluginRef pluginRef;
diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/SimpleClass2Reference.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/SimpleClass2Reference.java
index 6657afc7cc3545e8d6a134de8dc57140c1f40bad..b0a4b41be3edd824da29a82d1d18aca4baa0fd2f 100644
--- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/SimpleClass2Reference.java
+++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/SimpleClass2Reference.java
@@ -186,8 +186,6 @@ public class SimpleClass2Reference implements IPlatformRunnable, IClassVisitor
     try
     {
       save();
-      if (html != null)
-        genHTML();
     }
     catch (IOException e)
     {
@@ -200,17 +198,19 @@ public class SimpleClass2Reference implements IPlatformRunnable, IClassVisitor
     File file = new File(output);
     file.getParentFile().mkdirs();
     FileOutputStream fos = new FileOutputStream(file);
-    fos.write(refs.toString().getBytes());
+    refs.write(fos);
     fos.close();
+    if (html != null)
+      genHTML(file);
   }
 
-  private void genHTML()
+  private void genHTML(File f)
   {
     try
     {
       int i = html.replace('\\', '/').lastIndexOf("/");
       String htmlDir = i != -1 ? html.substring(0, i + 1) : html;
-      XSLUtil.transform(Platform.getBundle("org.eclipse.wtp.releng.tools.component.core").getResource("org/eclipse/wtp/releng/tools/component/xsl/api-ref-compatibility.xsl").openStream(), new ByteArrayInputStream(refs.toString().getBytes()), new FileOutputStream(html), htmlDir);
+      XSLUtil.transform(Platform.getBundle("org.eclipse.wtp.releng.tools.component.core").getResource("org/eclipse/wtp/releng/tools/component/xsl/api-ref-compatibility.xsl").openStream(), f, new FileOutputStream(html), htmlDir);
     }
     catch (Throwable e)
     {
@@ -266,16 +266,18 @@ public class SimpleClass2Reference implements IPlatformRunnable, IClassVisitor
       {
         String methodName = methodRef.getMethodName();
         String methodDesc = methodRef.getMethodDescriptor();
+        ClassRef classRef = getClassRef(refClassName);
         if (methodRef.isConstructor())
         {
           // use: instantiate
-          getClassRef(refClassName).incInstantiateCount();
+          classRef.incInstantiateCount();
         }
         else
         {
           // use: reference
-          getMethodRef(getClassRef(refClassName), methodName, methodDesc).incRefCount();
+          classRef.incRefCount();
         }
+        getMethodRef(classRef, methodName, methodDesc).incRefCount();
       }
     }
     methodRefs = null;
@@ -732,6 +734,6 @@ public class SimpleClass2Reference implements IPlatformRunnable, IClassVisitor
     System.out.println("\t-excludes\t<excludes>\tspace seperated packages to exclude");
     System.out.println("\t-includePlugins\t<includePlugins>\tspace seperated plugins to include");
     System.out.println("\t-excludePlugins\t<excludePlugins>\tspace seperated plugins to exclude");
-    System.out.println("\t-genHTML\t\t\t\tgenerate HTML output");
+    System.out.println("\t-html\t\t\t\t<html>\toutput HTML file");
   }
 }
\ No newline at end of file
diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/XSLUtil.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/XSLUtil.java
index 7bd4fd39a4caf5bcbbd62ad29ae70f060664dd55..54d87e770993c3f0c0371efdb71b0ae5aad71e03 100644
--- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/XSLUtil.java
+++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/XSLUtil.java
@@ -11,6 +11,8 @@
 
 package org.eclipse.wtp.releng.tools.component.xsl;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -23,6 +25,11 @@ import javax.xml.transform.stream.StreamSource;
 
 public class XSLUtil
 {
+  public static void transform(InputStream xsl, File f, OutputStream os, String userDir) throws TransformerException, TransformerConfigurationException, IOException
+  {
+    transform(xsl, new FileInputStream(f), os, userDir);
+  }
+
   public static void transform(InputStream xsl, InputStream data, OutputStream os, String userDir) throws TransformerException, TransformerConfigurationException, IOException
   {
     String user_dir = "user.dir";
@@ -32,6 +39,11 @@ public class XSLUtil
     System.setProperty(user_dir, currUserDir);
   }
 
+  public static void transform(InputStream xsl, File f, OutputStream os) throws TransformerException, TransformerConfigurationException, IOException
+  {
+    transform(xsl, new FileInputStream(f), os);
+  }
+
   public static void transform(InputStream xsl, InputStream data, OutputStream os) throws TransformerException, TransformerConfigurationException, IOException
   {
     TransformerFactory factory = TransformerFactory.newInstance();