--- orig/TagBeginGenerator.java	Mon Mar 12 10:14:14 2001
+++ TagBeginGenerator.java	Mon Mar 12 10:31:53 2001
@@ -282,8 +282,20 @@
 	tagBegin(new TagVariableData(thVarName, evalVar));
 
         writer.println("/* ----  "+prefix+":"+shortTagName+" ---- */");
-
-        writer.println(ti.getTagClassName()+" "+thVarName+" = new "+ti.getTagClassName()+"();");
+        writer.println(ti.getTagClassName() + " " + thVarName + " = null;");
+        writer.println("try {");
+	writer.pushIndent();
+        String poolName = TagPoolGenerator.getPoolVariableName(tli, ti, attrs);
+        writer.println("if (" + poolName + " != null) {");
+        writer.pushIndent();
+        writer.println(thVarName + " = (" + ti.getTagClassName() + ") " + poolName + ".getHandler();");
+        writer.popIndent();
+        writer.println("}");
+        writer.println("if (" + thVarName + " == null) {");
+        writer.pushIndent();
+        writer.println(thVarName + " = new " + ti.getTagClassName() + "();");
+        writer.popIndent();
+        writer.println("}");
 
         generateSetters(writer, parent);
 
@@ -291,11 +303,6 @@
 
         // Just declare AT_BEGIN here...
         declareVariables(writer, vi, true, false, VariableInfo.AT_BEGIN);
-
-	writer.println("try {");
-	writer.pushIndent();
-
-
 
         writer.println("int "+evalVar+" = "
                        +thVarName+".doStartTag();");
