public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/stringtemplate] epel10: Add patch to fix ambiguous references to StringTemplate
@ 2026-08-20 11:50 Jerry James
  0 siblings, 0 replies; only message in thread
From: Jerry James @ 2026-08-20 11:50 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/stringtemplate
            Branch : epel10
            Commit : 267d370a53dc8e13eee235213c5c3437d39016f1
            Author : Jerry James <loganjerry@gmail.com>
            Date   : 2025-07-05T15:35:04-06:00
            Stats  : +4599/-5 in 3 file(s)
            URL    : https://src.fedoraproject.org/rpms/stringtemplate/c/267d370a53dc8e13eee235213c5c3437d39016f1?branch=epel10

            Log:
            Add patch to fix ambiguous references to StringTemplate

- Add patch to avoid using deprecated "new Integer" and "new Boolean"
- Change license to BSD-3-Clause

---
diff --git a/stringtemplate-3.2.1-ambiguity.patch b/stringtemplate-3.2.1-ambiguity.patch
new file mode 100644
index 0000000..b5b8048
--- /dev/null
+++ b/stringtemplate-3.2.1-ambiguity.patch
@@ -0,0 +1,4344 @@
+--- src/org/antlr/stringtemplate/language/action.g.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/action.g	2025-07-05 13:20:23.013251965 -0600
+@@ -54,16 +54,16 @@ tokens {
+ }
+ 
+ {
+-    protected StringTemplate self = null;
++    protected org.antlr.stringtemplate.StringTemplate self = null;
+ 
+-    public ActionParser(TokenStream lexer, StringTemplate self) {
++    public ActionParser(TokenStream lexer, org.antlr.stringtemplate.StringTemplate self) {
+         this(lexer, 2);
+         this.self = self;
+     }
+ 
+ 	public void reportError(RecognitionException e) {
+         StringTemplateGroup group = self.getGroup();
+-        if ( group==StringTemplate.defaultGroup ) {
++        if ( group==org.antlr.stringtemplate.StringTemplate.defaultGroup ) {
+             self.error("action parse error; template context is "+self.getEnclosingInstanceStackString(), e);
+         }
+         else {
+@@ -173,7 +173,7 @@ namedTemplate
+ anonymousTemplate
+ 	:	t:ANONYMOUS_TEMPLATE
+         {
+-        StringTemplate anonymous = new StringTemplate();
++        org.antlr.stringtemplate.StringTemplate anonymous = new org.antlr.stringtemplate.StringTemplate();
+         anonymous.setGroup(self.getGroup());
+         anonymous.setEnclosingInstance(self);
+         anonymous.setTemplate(t.getText());
+--- src/org/antlr/stringtemplate/language/angle.bracket.template.g.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/angle.bracket.template.g	2025-07-05 13:20:46.525142108 -0600
+@@ -45,9 +45,9 @@ options {
+ 
+ {
+ protected String currentIndent = null;
+-protected StringTemplate self;
++protected org.antlr.stringtemplate.StringTemplate self;
+ 
+-public AngleBracketTemplateLexer(StringTemplate self, Reader r) {
++public AngleBracketTemplateLexer(org.antlr.stringtemplate.StringTemplate self, Reader r) {
+ 	this(r);
+ 	this.self = self;
+ }
+--- src/org/antlr/stringtemplate/language/ASTExpr.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/ASTExpr.java	2025-07-05 13:29:38.535051589 -0600
+@@ -30,7 +30,6 @@ package org.antlr.stringtemplate.languag
+ import antlr.RecognitionException;
+ import antlr.collections.AST;
+ import org.antlr.stringtemplate.AttributeRenderer;
+-import org.antlr.stringtemplate.StringTemplate;
+ import org.antlr.stringtemplate.StringTemplateGroup;
+ import org.antlr.stringtemplate.StringTemplateWriter;
+ 
+@@ -54,7 +53,7 @@ public class ASTExpr extends Expr {
+ 	public static final String DEFAULT_MAP_KEY_NAME = "key";
+ 
+ 	/** Used to indicate "default:key" in maps within groups */
+-	public static final StringTemplate MAP_KEY_VALUE = new StringTemplate();
++	public static final org.antlr.stringtemplate.StringTemplate MAP_KEY_VALUE = new org.antlr.stringtemplate.StringTemplate();
+ 
+ 	/** Using an expr option w/o value, makes options table hold EMPTY_OPTION
+ 	 *  value for that key.
+@@ -109,7 +108,7 @@ public class ASTExpr extends Expr {
+ 	/** A cached value of option format=expr */
+ 	String formatString = null;
+ 
+-	public ASTExpr(StringTemplate enclosingTemplate, AST exprTree, Map options) {
++	public ASTExpr(org.antlr.stringtemplate.StringTemplate enclosingTemplate, AST exprTree, Map options) {
+ 		super(enclosingTemplate);
+         this.exprTree = exprTree;
+         this.options = options;
+@@ -130,7 +129,7 @@ public class ASTExpr extends Expr {
+ 	 *  If they set anchor option, then inform the writer to push current
+ 	 *  char position.
+      */
+-    public int write(StringTemplate self, StringTemplateWriter out) throws IOException {
++    public int write(org.antlr.stringtemplate.StringTemplate self, StringTemplateWriter out) throws IOException {
+         if ( exprTree==null || self==null || out==null ) {
+             return 0;
+         }
+@@ -159,7 +158,7 @@ public class ASTExpr extends Expr {
+     }
+ 
+ 	/** Grab and cache options; verify options are valid */
+-	protected void handleExprOptions(StringTemplate self) {
++	protected void handleExprOptions(org.antlr.stringtemplate.StringTemplate self) {
+ 		// make sure options don't use format / renderer.  They are usually
+ 		// strings which might invoke a string renderer etc...
+ 		formatString = null;
+@@ -199,16 +198,16 @@ public class ASTExpr extends Expr {
+ 	/** For <names,phones:{n,p | ...}> treat the names, phones as lists
+ 	 *  to be walked in lock step as n=names[i], p=phones[i].
+ 	 */
+-	public Object applyTemplateToListOfAttributes(StringTemplate self,
++	public Object applyTemplateToListOfAttributes(org.antlr.stringtemplate.StringTemplate self,
+ 												  List attributes,
+-												  StringTemplate templateToApply)
++												  org.antlr.stringtemplate.StringTemplate templateToApply)
+ 	{
+ 		if ( attributes==null || templateToApply==null || attributes.size()==0 ) {
+ 			return null; // do not apply if missing templates or empty values
+ 		}
+ 		Map argumentContext = null;
+ 		// indicate it's an ST-created list
+-		List results = new StringTemplate.STAttributeList();
++		List results = new org.antlr.stringtemplate.StringTemplate.STAttributeList();
+ 
+ 		// convert all attributes to iterators even if just one value
+ 		for (int a = 0; a < attributes.size(); a++) {
+@@ -266,7 +265,7 @@ public class ASTExpr extends Expr {
+ 			}
+ 			argumentContext.put(DEFAULT_INDEX_VARIABLE_NAME, new Integer(i+1));
+ 			argumentContext.put(DEFAULT_INDEX0_VARIABLE_NAME, new Integer(i));
+-			StringTemplate embedded = templateToApply.getInstanceOf();
++			org.antlr.stringtemplate.StringTemplate embedded = templateToApply.getInstanceOf();
+ 			embedded.setEnclosingInstance(self);
+ 			embedded.setArgumentContext(argumentContext);
+ 			results.add(embedded);
+@@ -276,14 +275,14 @@ public class ASTExpr extends Expr {
+ 		return results;
+ 	}
+ 
+-	public Object applyListOfAlternatingTemplates(StringTemplate self,
++	public Object applyListOfAlternatingTemplates(org.antlr.stringtemplate.StringTemplate self,
+                                                   Object attributeValue,
+                                                   List templatesToApply)
+     {
+         if ( attributeValue==null || templatesToApply==null || templatesToApply.size()==0 ) {
+             return null; // do not apply if missing templates or empty value
+         }
+-        StringTemplate embedded = null;
++        org.antlr.stringtemplate.StringTemplate embedded = null;
+         Map argumentContext = null;
+ 
+         // normalize collections and such to use iterators
+@@ -293,7 +292,7 @@ public class ASTExpr extends Expr {
+ 
+         if ( attributeValue instanceof Iterator ) {
+ 			// results can be treated list an attribute, indicate ST created list
+-			List resultVector = new StringTemplate.STAttributeList();
++			List resultVector = new org.antlr.stringtemplate.StringTemplate.STAttributeList();
+             Iterator iter = (Iterator)attributeValue;
+             int i = 0;
+             while ( iter.hasNext() ) {
+@@ -305,7 +304,7 @@ public class ASTExpr extends Expr {
+ 					ithValue = nullValue;
+ 				}
+                 int templateIndex = i % templatesToApply.size(); // rotate through
+-                embedded = (StringTemplate)templatesToApply.get(templateIndex);
++                embedded = (org.antlr.stringtemplate.StringTemplate)templatesToApply.get(templateIndex);
+                 // template to apply is an actual StringTemplate (created in
+                 // eval.g), but that is used as the examplar.  We must create
+                 // a new instance of the embedded template to apply each time
+@@ -317,7 +316,7 @@ public class ASTExpr extends Expr {
+                 argumentContext = new HashMap();
+ 				Map formalArgs = embedded.getFormalArguments();
+ 				boolean isAnonymous =
+-					embedded.getName() == StringTemplate.ANONYMOUS_ST_NAME;
++					embedded.getName() == org.antlr.stringtemplate.StringTemplate.ANONYMOUS_ST_NAME;
+ 				setSoleFormalArgumentToIthValue(embedded, argumentContext, ithValue);
+ 				// if it's an anonymous template with a formal arg, don't set it/attr
+ 				if ( !(isAnonymous && formalArgs!=null && formalArgs.size()>0) ) {
+@@ -347,13 +346,13 @@ public class ASTExpr extends Expr {
+             embedded.getName()+
+             " to "+attributeValue);
+             */
+-            embedded = (StringTemplate)templatesToApply.get(0);
++            embedded = (org.antlr.stringtemplate.StringTemplate)templatesToApply.get(0);
+             argumentContext = new HashMap();
+ 			Map formalArgs = embedded.getFormalArguments();
+ 			StringTemplateAST args = embedded.getArgumentsAST();
+ 			setSoleFormalArgumentToIthValue(embedded, argumentContext, attributeValue);
+ 			boolean isAnonymous =
+-				embedded.getName() == StringTemplate.ANONYMOUS_ST_NAME;
++				embedded.getName() == org.antlr.stringtemplate.StringTemplate.ANONYMOUS_ST_NAME;
+ 			// if it's an anonymous template with a formal arg, don't set it/attr
+ 			if ( !(isAnonymous && formalArgs!=null && formalArgs.size()>0) ) {
+ 				argumentContext.put(DEFAULT_ATTRIBUTE_NAME, attributeValue);
+@@ -367,12 +366,12 @@ public class ASTExpr extends Expr {
+         }
+     }
+ 
+-	protected void setSoleFormalArgumentToIthValue(StringTemplate embedded, Map argumentContext, Object ithValue) {
++	protected void setSoleFormalArgumentToIthValue(org.antlr.stringtemplate.StringTemplate embedded, Map argumentContext, Object ithValue) {
+ 		Map formalArgs = embedded.getFormalArguments();
+ 		if ( formalArgs!=null ) {
+ 			String soleArgName = null;
+ 			boolean isAnonymous =
+-				embedded.getName() == StringTemplate.ANONYMOUS_ST_NAME;
++				embedded.getName() == org.antlr.stringtemplate.StringTemplate.ANONYMOUS_ST_NAME;
+ 			if ( formalArgs.size()==1 || (isAnonymous&&formalArgs.size()>0) ) {
+ 				if ( isAnonymous && formalArgs.size()>1 ) {
+ 					embedded.error("too many arguments on {...} template: "+formalArgs);
+@@ -395,7 +394,7 @@ public class ASTExpr extends Expr {
+ 	 *
+ 	 *  Cache repeated requests for obj.prop within same group.
+      */
+-	public Object getObjectProperty(StringTemplate self,
++	public Object getObjectProperty(org.antlr.stringtemplate.StringTemplate self,
+ 									final Object o,
+ 									final Object propertyName) {
+ 		if ( o==null || propertyName==null ) {
+@@ -421,23 +420,23 @@ public class ASTExpr extends Expr {
+ 		return value;
+ 	}
+ 
+-	protected Object rawGetObjectProperty(StringTemplate self, Object o, Object property) {
++	protected Object rawGetObjectProperty(org.antlr.stringtemplate.StringTemplate self, Object o, Object property) {
+ 		Class c = o.getClass();
+         Object value = null;
+ 
+ 		// Special case: our automatically created Aggregates via
+         // attribute name: "{obj.{prop1,prop2}}"
+-        if ( c==StringTemplate.Aggregate.class ) {
++        if ( c==org.antlr.stringtemplate.StringTemplate.Aggregate.class ) {
+ 			String propertyName = (String)property;
+-            value = ((StringTemplate.Aggregate)o).get((String)propertyName);
++            value = ((org.antlr.stringtemplate.StringTemplate.Aggregate)o).get((String)propertyName);
+ 			return value;
+         }
+ 
+         // Special case: if it's a template, pull property from
+         // it's attribute table.
+         // TODO: TJP just asked himself why we can't do inherited attr here?
+-        else if ( c==StringTemplate.class ) {
+-            Map attributes = ((StringTemplate)o).getAttributes();
++        else if ( c==org.antlr.stringtemplate.StringTemplate.class ) {
++            Map attributes = ((org.antlr.stringtemplate.StringTemplate)o).getAttributes();
+             if ( attributes!=null ) {
+ 				String propertyName = (String)property;
+                 value = attributes.get(propertyName);
+@@ -629,13 +628,13 @@ public class ASTExpr extends Expr {
+      *  to a string yet.  It may need attributes that will be available after
+      *  this is inserted into another template.
+      */
+-	public StringTemplate getTemplateInclude(StringTemplate enclosing,
++	public org.antlr.stringtemplate.StringTemplate getTemplateInclude(org.antlr.stringtemplate.StringTemplate enclosing,
+ 											 String templateName,
+ 											 StringTemplateAST argumentsAST)
+     {
+ 		//System.out.println("getTemplateInclude: look up "+enclosing.getGroup().getName()+"::"+templateName);
+         StringTemplateGroup group = enclosing.getGroup();
+-        StringTemplate embedded = group.getEmbeddedInstanceOf(enclosing, templateName);
++        org.antlr.stringtemplate.StringTemplate embedded = group.getEmbeddedInstanceOf(enclosing, templateName);
+         if ( embedded==null ) {
+             enclosing.error("cannot make embedded instance of "+templateName+
+                     " in template "+enclosing.getName());
+@@ -656,7 +655,7 @@ public class ASTExpr extends Expr {
+      *  If self is an embedded template, you might have specified
+      *  a separator arg; used when is a vector.
+ 	 */
+-    public int writeAttribute(StringTemplate self, Object o, StringTemplateWriter out) {
++    public int writeAttribute(org.antlr.stringtemplate.StringTemplate self, Object o, StringTemplateWriter out) {
+         return write(self,o,out);
+     }
+ 
+@@ -665,7 +664,7 @@ public class ASTExpr extends Expr {
+ 	 *  John Snyders fixes here for formatString.  Basically, any time
+ 	 *  you are about to write a value, check formatting.
+ 	 */
+-	protected int write(StringTemplate self,
++	protected int write(org.antlr.stringtemplate.StringTemplate self,
+ 						Object o,
+ 						StringTemplateWriter out)
+     {
+@@ -677,7 +676,7 @@ public class ASTExpr extends Expr {
+         }
+         int n = 0;
+         try {
+-            if ( o instanceof StringTemplate ) return writeTemplate(self, o, out);
++            if ( o instanceof org.antlr.stringtemplate.StringTemplate ) return writeTemplate(self, o, out);
+             o = convertAnythingIteratableToIterator(o); // normalize
+             if ( o instanceof Iterator ) return writeIterableValue(self, o, out);
+             return writePOJO(self, o, out);
+@@ -688,7 +687,7 @@ public class ASTExpr extends Expr {
+ 		return n;
+     }
+ 
+-    protected int writePOJO(StringTemplate self, Object o, StringTemplateWriter out) throws IOException {
++    protected int writePOJO(org.antlr.stringtemplate.StringTemplate self, Object o, StringTemplateWriter out) throws IOException {
+         int n = 0;
+         AttributeRenderer renderer =
+             self.getAttributeRenderer(o.getClass());
+@@ -703,9 +702,9 @@ public class ASTExpr extends Expr {
+         return n;
+     }
+ 
+-    protected int writeTemplate(StringTemplate self, Object o, StringTemplateWriter out) throws IOException {
++    protected int writeTemplate(org.antlr.stringtemplate.StringTemplate self, Object o, StringTemplateWriter out) throws IOException {
+         int n = 0;
+-        StringTemplate stToWrite = (StringTemplate)o;
++        org.antlr.stringtemplate.StringTemplate stToWrite = (org.antlr.stringtemplate.StringTemplate)o;
+         // failsafe: perhaps enclosing instance not set
+         // Or, it could be set to another context!  This occurs
+         // when you store a template instance as an attribute of more
+@@ -715,8 +714,8 @@ public class ASTExpr extends Expr {
+         stToWrite.setEnclosingInstance(self);
+         // if self is found up the enclosing instance chain, then
+         // infinite recursion
+-        if ( StringTemplate.inLintMode() &&
+-             StringTemplate.isRecursiveEnclosingInstance(stToWrite) )
++        if ( org.antlr.stringtemplate.StringTemplate.inLintMode() &&
++             org.antlr.stringtemplate.StringTemplate.isRecursiveEnclosingInstance(stToWrite) )
+         {
+             // throw exception since sometimes eval keeps going
+             // even after I ignore this write of o.
+@@ -752,7 +751,7 @@ public class ASTExpr extends Expr {
+         return n;
+     }
+ 
+-    protected int writeIterableValue(StringTemplate self,
++    protected int writeIterableValue(org.antlr.stringtemplate.StringTemplate self,
+                                      Object o,
+                                      StringTemplateWriter out)
+         throws IOException
+@@ -776,8 +775,8 @@ public class ASTExpr extends Expr {
+                 // if value to emit is a template, only buffer its
+                 // value if it's nullable (can eval to missing).
+                 // Only a sequence of IF can eval to missing.
+-                if ( iterValue instanceof StringTemplate ) {
+-                    StringTemplate st = (StringTemplate)iterValue;
++                if ( iterValue instanceof org.antlr.stringtemplate.StringTemplate ) {
++                    org.antlr.stringtemplate.StringTemplate st = (org.antlr.stringtemplate.StringTemplate)iterValue;
+                     int nchunks = st.getChunks()!=null ? st.getChunks().size() : 0;
+                     boolean nullable = true;
+                     for (int i=0; i<nchunks; i++) {
+@@ -796,7 +795,7 @@ public class ASTExpr extends Expr {
+                     }
+                 }
+ 
+-                if ( !(iterValue instanceof StringTemplate) &&
++                if ( !(iterValue instanceof org.antlr.stringtemplate.StringTemplate) &&
+                      !(iterValue instanceof Iterator))
+                 {
+                     // if not possible to be missing, don't waste time
+@@ -845,7 +844,7 @@ public class ASTExpr extends Expr {
+      *  so that we can convert to string and then reuse, don't want to compute
+      *  all the time; must precompute w/o writing to output buffer.
+      */
+-    public String evaluateExpression(StringTemplate self,
++    public String evaluateExpression(org.antlr.stringtemplate.StringTemplate self,
+                                      Object expr)
+     {
+         if ( expr ==null ) {
+@@ -880,7 +879,7 @@ public class ASTExpr extends Expr {
+ 	 *  new embedded template.  For example, bold(item=item) means
+ 	 *  that bold.item should get the value of enclosing.item.
+ 	 */
+-    protected void evaluateArguments(StringTemplate self) {
++    protected void evaluateArguments(org.antlr.stringtemplate.StringTemplate self) {
+         StringTemplateAST argumentsAST = self.getArgumentsAST();
+         if ( argumentsAST==null || argumentsAST.getFirstChild()==null )	{
+             // return immediately if missing tree or no actual args
+@@ -892,8 +891,8 @@ public class ASTExpr extends Expr {
+ 		// available as well so we put a dummy ST between the enclosing
+ 		// context and the embedded context.  The dummy has the predefined
+ 		// context as does the embedded.
+-		StringTemplate enclosing = self.getEnclosingInstance();
+-		StringTemplate argContextST = new StringTemplate(self.getGroup(), "");
++		org.antlr.stringtemplate.StringTemplate enclosing = self.getEnclosingInstance();
++		org.antlr.stringtemplate.StringTemplate argContextST = new org.antlr.stringtemplate.StringTemplate(self.getGroup(), "");
+ 		argContextST.setName("<invoke "+self.getName()+" arg context>");
+ 		argContextST.setEnclosingInstance(enclosing);
+ 		argContextST.setArgumentContext(self.getArgumentContext());
+@@ -975,7 +974,7 @@ public class ASTExpr extends Expr {
+ 			iter = (Iterator)o;
+ 		}
+ 		if ( iter==null ) {
+-			List singleton = new StringTemplate.STAttributeList(1);
++			List singleton = new org.antlr.stringtemplate.StringTemplate.STAttributeList(1);
+ 			singleton.add(o);
+ 			return singleton.iterator();
+ 		}
+--- src/org/antlr/stringtemplate/language/ConditionalExpr.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/ConditionalExpr.java	2025-07-05 13:33:16.436172037 -0600
+@@ -29,7 +29,6 @@ package org.antlr.stringtemplate.languag
+ 
+ import antlr.RecognitionException;
+ import antlr.collections.AST;
+-import org.antlr.stringtemplate.StringTemplate;
+ import org.antlr.stringtemplate.StringTemplateWriter;
+ 
+ import java.io.IOException;
+@@ -38,25 +37,25 @@ import java.util.ArrayList;
+ 
+ /** A conditional reference to an embedded subtemplate. */
+ public class ConditionalExpr extends ASTExpr {
+-	StringTemplate subtemplate = null;
++	org.antlr.stringtemplate.StringTemplate subtemplate = null;
+ 	List elseIfSubtemplates = null;
+-	StringTemplate elseSubtemplate = null;
++	org.antlr.stringtemplate.StringTemplate elseSubtemplate = null;
+ 
+ 	protected static class ElseIfClauseData {
+ 		ASTExpr expr;
+-		StringTemplate st;
++		org.antlr.stringtemplate.StringTemplate st;
+ 	}
+ 
+-	public ConditionalExpr(StringTemplate enclosingTemplate, AST tree) {
++	public ConditionalExpr(org.antlr.stringtemplate.StringTemplate enclosingTemplate, AST tree) {
+ 		super(enclosingTemplate,tree,null);
+ 	}
+ 
+-	public void setSubtemplate(StringTemplate subtemplate) {
++	public void setSubtemplate(org.antlr.stringtemplate.StringTemplate subtemplate) {
+ 		this.subtemplate = subtemplate;
+ 	}
+ 
+ 	public void addElseIfSubtemplate(final ASTExpr conditionalTree,
+-									 final StringTemplate subtemplate)
++									 final org.antlr.stringtemplate.StringTemplate subtemplate)
+ 	{
+ 		if ( elseIfSubtemplates==null ) {
+ 			elseIfSubtemplates = new ArrayList();
+@@ -68,15 +67,15 @@ public class ConditionalExpr extends AST
+ 		elseIfSubtemplates.add(d);
+ 	}
+ 
+-	public StringTemplate getSubtemplate() {
++	public org.antlr.stringtemplate.StringTemplate getSubtemplate() {
+ 		return subtemplate;
+ 	}
+ 
+-	public StringTemplate getElseSubtemplate() {
++	public org.antlr.stringtemplate.StringTemplate getElseSubtemplate() {
+ 		return elseSubtemplate;
+ 	}
+ 
+-	public void setElseSubtemplate(StringTemplate elseSubtemplate) {
++	public void setElseSubtemplate(org.antlr.stringtemplate.StringTemplate elseSubtemplate) {
+ 		this.elseSubtemplate = elseSubtemplate;
+ 	}
+ 
+@@ -84,7 +83,7 @@ public class ConditionalExpr extends AST
+ 	 *  to walk the condition tree computing the boolean value.  If result
+ 	 *  is true, then write subtemplate.
+ 	 */
+-	public int write(StringTemplate self, StringTemplateWriter out) throws IOException {
++	public int write(org.antlr.stringtemplate.StringTemplate self, StringTemplateWriter out) throws IOException {
+ 		if ( exprTree==null || self==null || out==null ) {
+ 			return 0;
+ 		}
+@@ -119,7 +118,7 @@ public class ConditionalExpr extends AST
+ 			// ELSE
+ 			if ( !testedTrue && elseSubtemplate!=null ) {
+ 				// evaluate ELSE clause if present and IF condition failed
+-				StringTemplate s = elseSubtemplate.getInstanceOf();
++				org.antlr.stringtemplate.StringTemplate s = elseSubtemplate.getInstanceOf();
+ 				s.setEnclosingInstance(self);
+ 				s.setGroup(self.getGroup());
+ 				s.setNativeGroup(self.getNativeGroup());
+@@ -134,9 +133,9 @@ public class ConditionalExpr extends AST
+ 		return n;
+ 	}
+ 
+-	protected int writeSubTemplate(StringTemplate self,
++	protected int writeSubTemplate(org.antlr.stringtemplate.StringTemplate self,
+ 								   StringTemplateWriter out,
+-								   StringTemplate subtemplate)
++								   org.antlr.stringtemplate.StringTemplate subtemplate)
+ 		throws IOException
+ 	{
+ 		/* To evaluate the IF chunk, make a new instance whose enclosingInstance
+@@ -145,7 +144,7 @@ public class ConditionalExpr extends AST
+ 		 * new template instance every time we exec this chunk to get the new
+ 		 * "enclosing instance" pointer.
+ 		 */
+-		StringTemplate s = subtemplate.getInstanceOf();
++		org.antlr.stringtemplate.StringTemplate s = subtemplate.getInstanceOf();
+ 		s.setEnclosingInstance(self);
+ 		// make sure we evaluate in context of enclosing template's
+ 		// group so polymorphism works. :)
+--- src/org/antlr/stringtemplate/language/eval.g.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/eval.g	2025-07-05 13:18:54.006186164 -0600
+@@ -46,12 +46,12 @@ options {
+         public Object value;
+     };
+ 
+-    protected StringTemplate self = null;
++    protected org.antlr.stringtemplate.StringTemplate self = null;
+     protected StringTemplateWriter out = null;
+     protected ASTExpr chunk = null;
+ 
+     /** Create an evaluator using attributes from self */
+-    public ActionEvaluator(StringTemplate self, ASTExpr chunk, StringTemplateWriter out) {
++    public ActionEvaluator(org.antlr.stringtemplate.StringTemplate self, ASTExpr chunk, StringTemplateWriter out) {
+         this.self = self;
+         this.chunk = chunk;
+         this.out = out;
+@@ -155,7 +155,7 @@ List attributes = new ArrayList();
+     |	#(	MULTI_APPLY (a=expr {attributes.add(a);} )+ COLON
+ 			anon:ANONYMOUS_TEMPLATE
+ 			{
+-			StringTemplate anonymous = anon.getStringTemplate();
++			org.antlr.stringtemplate.StringTemplate anonymous = anon.getStringTemplate();
+ 			templatesToApply.addElement(anonymous);
+ 			value = chunk.applyTemplateToListOfAttributes(self,
+ 														  attributes,
+@@ -194,7 +194,7 @@ Object n = null;
+                 {
+                 String templateName = t.getText();
+                 StringTemplateGroup group = self.getGroup();
+-                StringTemplate embedded = group.getEmbeddedInstanceOf(self, templateName);
++                org.antlr.stringtemplate.StringTemplate embedded = group.getEmbeddedInstanceOf(self, templateName);
+                 if ( embedded!=null ) {
+                     embedded.setArgumentsAST(#args);
+                     templatesToApply.addElement(embedded);
+@@ -203,7 +203,7 @@ Object n = null;
+ 
+             |	anon:ANONYMOUS_TEMPLATE
+                 {
+-                StringTemplate anonymous = anon.getStringTemplate();
++                org.antlr.stringtemplate.StringTemplate anonymous = anon.getStringTemplate();
+                 // to properly see overridden templates, always set
+                 // anonymous' group to be self's group
+ 				anonymous.setGroup(self.getGroup());
+@@ -212,7 +212,7 @@ Object n = null;
+ 
+             |   #(  VALUE n=expr args2:.
+ 					{
+-					StringTemplate embedded = null;
++					org.antlr.stringtemplate.StringTemplate embedded = null;
+ 					if ( n!=null ) {
+ 						String templateName = n.toString();
+ 						StringTemplateGroup group = self.getGroup();
+@@ -273,7 +273,7 @@ attribute returns [Object value=null]
+     	{
+     	value=at.getText();
+ 		if ( at.getText()!=null ) {
+-			StringTemplate valueST =new StringTemplate(self.getGroup(), at.getText());
++			org.antlr.stringtemplate.StringTemplate valueST =new org.antlr.stringtemplate.StringTemplate(self.getGroup(), at.getText());
+ 			valueST.setEnclosingInstance(self);
+ 			valueST.setName("<anonymous template argument>");
+ 			value = valueST;
+@@ -286,7 +286,7 @@ attribute returns [Object value=null]
+  *  the embedded template (the one invoked) so we can check formal args
+  *  in rawSetArgumentAttribute.
+  */
+-argList[StringTemplate embedded, Map initialContext]
++argList[org.antlr.stringtemplate.StringTemplate embedded, Map initialContext]
+     returns [Map argumentContext=null]
+ {
+     argumentContext = initialContext;
+@@ -298,7 +298,7 @@ argList[StringTemplate embedded, Map ini
+     |	singleTemplateArg[embedded,argumentContext]
+ 	;
+ 
+-singleTemplateArg[StringTemplate embedded, Map argumentContext]
++singleTemplateArg[org.antlr.stringtemplate.StringTemplate embedded, Map argumentContext]
+ {
+     Object e = null;
+ }
+@@ -334,7 +334,7 @@ singleTemplateArg[StringTemplate embedde
+ 	    }
+ 	;
+ 
+-argumentAssignment[StringTemplate embedded, Map argumentContext]
++argumentAssignment[org.antlr.stringtemplate.StringTemplate embedded, Map argumentContext]
+ {
+     Object e = null;
+ }
+--- src/org/antlr/stringtemplate/language/Expr.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/Expr.java	2025-07-05 13:34:18.643542587 -0600
+@@ -27,7 +27,6 @@
+ */
+ package org.antlr.stringtemplate.language;
+ 
+-import org.antlr.stringtemplate.StringTemplate;
+ import org.antlr.stringtemplate.StringTemplateGroup;
+ import org.antlr.stringtemplate.StringTemplateWriter;
+ 
+@@ -45,7 +44,7 @@ import java.util.Enumeration;
+  */
+ abstract public class Expr {
+ 	/** The StringTemplate object surrounding this expr */
+-	protected StringTemplate enclosingTemplate;
++	protected org.antlr.stringtemplate.StringTemplate enclosingTemplate;
+ 
+     /** Any thing spit out as a chunk (even plain text) must be indented
+      *  according to whitespace before the action that generated it.  So,
+@@ -56,15 +55,15 @@ abstract public class Expr {
+      */
+     protected String indentation = null;
+ 
+-	public Expr(StringTemplate enclosingTemplate) {
++	public Expr(org.antlr.stringtemplate.StringTemplate enclosingTemplate) {
+ 		this.enclosingTemplate = enclosingTemplate;
+ 	}
+ 
+     /** How to write this node to output; return how many char written */
+-    abstract public int write(StringTemplate self, StringTemplateWriter out)
++    abstract public int write(org.antlr.stringtemplate.StringTemplate self, StringTemplateWriter out)
+         throws IOException;
+ 
+-	public StringTemplate getEnclosingTemplate() {
++	public org.antlr.stringtemplate.StringTemplate getEnclosingTemplate() {
+ 		return enclosingTemplate;
+ 	}
+ 
+--- src/org/antlr/stringtemplate/language/FormalArgument.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/FormalArgument.java	2025-07-05 13:34:44.267303857 -0600
+@@ -1,7 +1,5 @@
+ package org.antlr.stringtemplate.language;
+ 
+-import org.antlr.stringtemplate.StringTemplate;
+-
+ import java.util.HashMap;
+ import java.util.Map;
+ import java.util.List;
+@@ -52,13 +50,13 @@ public class FormalArgument {
+     //protected int cardinality = REQUIRED;
+ 
+ 	/** If they specified name="value", store the template here */
+-	public StringTemplate defaultValueST;
++	public org.antlr.stringtemplate.StringTemplate defaultValueST;
+ 
+ 	public FormalArgument(String name) {
+ 		this.name = name;
+ 	}
+ 
+-	public FormalArgument(String name, StringTemplate defaultValueST) {
++	public FormalArgument(String name, org.antlr.stringtemplate.StringTemplate defaultValueST) {
+ 		this.name = name;
+ 		this.defaultValueST = defaultValueST;
+ 	}
+--- src/org/antlr/stringtemplate/language/group.g.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/group.g	2025-07-05 13:38:01.096902572 -0600
+@@ -88,7 +88,7 @@ this.group = g;
+ template[StringTemplateGroup g]
+ {
+     Map formalArgs = null;
+-    StringTemplate st = null;
++    org.antlr.stringtemplate.StringTemplate st = null;
+     boolean ignore = false;
+     String templateName=null;
+     int line = LT(1).getLine();
+@@ -99,12 +99,12 @@ template[StringTemplateGroup g]
+ 	    	if ( g.isDefinedInThisGroup(templateName) ) {
+ 	        	g.error("group "+g.getName()+" line "+line+": redefinition of template region: @"+
+ 	        		scope.getText()+"."+region.getText());
+-				st = new StringTemplate(); // create bogus template to fill in
++				st = new org.antlr.stringtemplate.StringTemplate(); // create bogus template to fill in
+ 			}
+ 			else {
+ 				boolean err = false;
+ 				// @template.region() ::= "..."
+-				StringTemplate scopeST = g.lookupTemplate(scope.getText());
++				org.antlr.stringtemplate.StringTemplate scopeST = g.lookupTemplate(scope.getText());
+ 				if ( scopeST==null ) {
+ 					g.error("group "+g.getName()+" line "+line+": reference to region within undefined template: "+
+ 						scope.getText());
+@@ -116,13 +116,13 @@ template[StringTemplateGroup g]
+ 					err=true;
+ 				}
+ 				if ( err ) {
+-					st = new StringTemplate();
++					st = new org.antlr.stringtemplate.StringTemplate();
+ 				}
+ 				else {
+ 					st = g.defineRegionTemplate(scope.getText(),
+ 												region.getText(),
+ 												null,
+-												StringTemplate.REGION_EXPLICIT);
++												org.antlr.stringtemplate.StringTemplate.REGION_EXPLICIT);
+ 				}
+ 			}
+ 			}
+@@ -130,7 +130,7 @@ template[StringTemplateGroup g]
+ 			{
+ 			if ( g.isDefinedInThisGroup(templateName) ) {
+ 				g.error("redefinition of template: "+templateName);
+-				st = new StringTemplate(); // create bogus template to fill in
++				st = new org.antlr.stringtemplate.StringTemplate(); // create bogus template to fill in
+ 			}
+ 			else {
+ 				st = g.defineTemplate(templateName, null);
+@@ -150,25 +150,25 @@ template[StringTemplateGroup g]
+ 	    {g.defineTemplateAlias(alias.getText(), target.getText());}
+ 	;
+ 
+-args[StringTemplate st]
++args[org.antlr.stringtemplate.StringTemplate st]
+     :	arg[st] ( COMMA arg[st] )*
+ 	;
+ 
+-arg[StringTemplate st]
++arg[org.antlr.stringtemplate.StringTemplate st]
+ {
+-	StringTemplate defaultValue = null;
++	org.antlr.stringtemplate.StringTemplate defaultValue = null;
+ }
+ 	:	name:ID
+ 		(	ASSIGN s:STRING
+ 			{
+-			defaultValue=new StringTemplate("$_val_$");
++			defaultValue=new org.antlr.stringtemplate.StringTemplate("$_val_$");
+ 			defaultValue.setAttribute("_val_", s.getText());
+ 			defaultValue.defineFormalArgument("_val_");
+ 			defaultValue.setName("<"+st.getName()+"'s arg "+name.getText()+" default value subtemplate>");
+ 			}
+ 		|	ASSIGN bs:ANONYMOUS_TEMPLATE
+ 			{
+-			defaultValue=new StringTemplate(st.getGroup(), bs.getText());
++			defaultValue=new org.antlr.stringtemplate.StringTemplate(st.getGroup(), bs.getText());
+ 			defaultValue.setName("<"+st.getName()+"'s arg "+name.getText()+" default value subtemplate>");
+ 			}
+ 		)?
+@@ -215,7 +215,7 @@ mapPairs [Map mapping]
+ 	
+ defaultValuePair[Map mapping]
+ {
+-StringTemplate v = null;
++org.antlr.stringtemplate.StringTemplate v = null;
+ }	
+ 	:	"default" COLON v=keyValue
+         {mapping.put(ASTExpr.DEFAULT_MAP_VALUE_NAME, v);}
+@@ -223,14 +223,14 @@ StringTemplate v = null;
+ 
+ keyValuePair[Map mapping]
+ {
+-StringTemplate v = null;
++org.antlr.stringtemplate.StringTemplate v = null;
+ }
+ 	:	key:STRING COLON v=keyValue {mapping.put(key.getText(), v);}
+ 	;
+ 
+-keyValue returns [StringTemplate value=null]
+-	:	s1:BIGSTRING	{value = new StringTemplate(group,s1.getText());}
+-	|	s2:STRING		{value = new StringTemplate(group,s2.getText());}
++keyValue returns [org.antlr.stringtemplate.StringTemplate value=null]
++	:	s1:BIGSTRING	{value = new org.antlr.stringtemplate.StringTemplate(group,s1.getText());}
++	|	s2:STRING		{value = new org.antlr.stringtemplate.StringTemplate(group,s2.getText());}
+ 	|	k:ID			{k.getText().equals("key")}?
+ 						{value = ASTExpr.MAP_KEY_VALUE;}
+ 	|					{value = null;}
+--- src/org/antlr/stringtemplate/language/NewlineRef.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/NewlineRef.java	2025-07-05 13:38:27.072710830 -0600
+@@ -29,7 +29,6 @@ package org.antlr.stringtemplate.languag
+ 
+ import org.antlr.stringtemplate.*;
+ import org.antlr.stringtemplate.language.Expr;
+-import org.antlr.stringtemplate.StringTemplate;
+ 
+ import java.io.Writer;
+ import java.io.IOException;
+@@ -38,7 +37,7 @@ import java.io.IOException;
+  *  spitting out newlines when the only thing on a line is an attr expr.
+  */
+ public class NewlineRef extends StringRef {
+-	public NewlineRef(StringTemplate enclosingTemplate, String str) {
++	public NewlineRef(org.antlr.stringtemplate.StringTemplate enclosingTemplate, String str) {
+ 		super(enclosingTemplate, str);
+ 	}
+ }
+--- src/org/antlr/stringtemplate/language/StringRef.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/StringRef.java	2025-07-05 13:38:51.608382280 -0600
+@@ -27,7 +27,6 @@
+ */
+ package org.antlr.stringtemplate.language;
+ 
+-import org.antlr.stringtemplate.StringTemplate;
+ import org.antlr.stringtemplate.StringTemplateWriter;
+ 
+ import java.io.IOException;
+@@ -36,7 +35,7 @@ import java.io.IOException;
+ public class StringRef extends Expr {
+ 	String str;
+ 
+-	public StringRef(StringTemplate enclosingTemplate, String str) {
++	public StringRef(org.antlr.stringtemplate.StringTemplate enclosingTemplate, String str) {
+ 		super(enclosingTemplate);
+ 		this.str = str;
+ 	}
+@@ -46,7 +45,7 @@ public class StringRef extends Expr {
+ 	 *  never wrap because they are not part of an <...> expression.
+ 	 *  <"foo"; wrap="\n"> should wrap though if necessary.
+      */
+-    public int write(StringTemplate self, StringTemplateWriter out) throws IOException {
++    public int write(org.antlr.stringtemplate.StringTemplate self, StringTemplateWriter out) throws IOException {
+ 		if ( str!=null ) {
+ 			int n = out.write(str);
+ 			return n;
+--- src/org/antlr/stringtemplate/language/StringTemplateAST.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/StringTemplateAST.java	2025-07-05 13:39:24.655864480 -0600
+@@ -28,10 +28,9 @@
+ package org.antlr.stringtemplate.language;
+ 
+ import antlr.CommonAST;
+-import org.antlr.stringtemplate.StringTemplate;
+ 
+ public class StringTemplateAST extends CommonAST {
+-    protected StringTemplate st = null; // track template for ANONYMOUS blocks
++    protected org.antlr.stringtemplate.StringTemplate st = null; // track template for ANONYMOUS blocks
+ 
+ 	public StringTemplateAST() {;}
+ 	
+@@ -40,11 +39,11 @@ public class StringTemplateAST extends C
+ 		this.setText(text);
+ 	}
+ 
+-	public StringTemplate getStringTemplate() {
++	public org.antlr.stringtemplate.StringTemplate getStringTemplate() {
+         return st;
+     }
+ 
+-    public void setStringTemplate(StringTemplate st) {
++    public void setStringTemplate(org.antlr.stringtemplate.StringTemplate st) {
+         this.st = st;
+     }
+ }
+--- src/org/antlr/stringtemplate/language/template.g.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/language/template.g	2025-07-05 13:40:49.143146868 -0600
+@@ -37,11 +37,11 @@ header {
+ class TemplateParser extends Parser;
+ 
+ {
+-protected StringTemplate self;
++protected org.antlr.stringtemplate.StringTemplate self;
+ 
+ public void reportError(RecognitionException e) {
+     StringTemplateGroup group = self.getGroup();
+-    if ( group==StringTemplate.defaultGroup ) {
++    if ( group==org.antlr.stringtemplate.StringTemplate.defaultGroup ) {
+         self.error("template parse error; template context is "+self.getEnclosingInstanceStackString(), e);
+     }
+     else {
+@@ -50,7 +50,7 @@ public void reportError(RecognitionExcep
+ }
+ }
+ 
+-template[StringTemplate self]
++template[org.antlr.stringtemplate.StringTemplate self]
+ {
+ 	this.self = self;
+ }
+@@ -65,7 +65,7 @@ template[StringTemplate self]
+         )*
+     ;
+ 
+-action[StringTemplate self]
++action[org.antlr.stringtemplate.StringTemplate self]
+     :   a:ACTION
+         {
+         String indent = ((ChunkToken)a).getIndentation();
+@@ -78,8 +78,8 @@ action[StringTemplate self]
+         {
+         ConditionalExpr c = (ConditionalExpr)self.parseAction(i.getText());
+         // create and precompile the subtemplate
+-        StringTemplate subtemplate =
+-        	new StringTemplate(self.getGroup(), null);
++        org.antlr.stringtemplate.StringTemplate subtemplate =
++        	new org.antlr.stringtemplate.StringTemplate(self.getGroup(), null);
+         subtemplate.setEnclosingInstance(self);
+         subtemplate.setName(i.getText()+"_subtemplate");
+         self.addChunk(c);
+@@ -91,8 +91,8 @@ action[StringTemplate self]
+             {
+              ASTExpr ec = self.parseAction(ei.getText());
+              // create and precompile the subtemplate
+-             StringTemplate elseIfSubtemplate =
+-                 new StringTemplate(self.getGroup(), null);
++             org.antlr.stringtemplate.StringTemplate elseIfSubtemplate =
++                 new org.antlr.stringtemplate.StringTemplate(self.getGroup(), null);
+              elseIfSubtemplate.setEnclosingInstance(self);
+              elseIfSubtemplate.setName(ei.getText()+"_subtemplate");
+             }
+@@ -105,8 +105,8 @@ action[StringTemplate self]
+         (   ELSE
+             {
+             // create and precompile the subtemplate
+-            StringTemplate elseSubtemplate =
+-         		new StringTemplate(self.getGroup(), null);
++            org.antlr.stringtemplate.StringTemplate elseSubtemplate =
++         		new org.antlr.stringtemplate.StringTemplate(self.getGroup(), null);
+             elseSubtemplate.setEnclosingInstance(self);
+             elseSubtemplate.setName("else_subtemplate");
+             }
+@@ -132,7 +132,7 @@ action[StringTemplate self]
+ 					regionName.substring("super.".length(),regionName.length());
+ 				String templateScope =
+ 					self.getGroup().getUnMangledTemplateName(self.getName());
+-				StringTemplate scopeST = self.getGroup().lookupTemplate(templateScope);
++				org.antlr.stringtemplate.StringTemplate scopeST = self.getGroup().lookupTemplate(templateScope);
+ 				if ( scopeST==null ) {
+ 					self.getGroup().error("reference to region within undefined template: "+
+ 						templateScope);
+@@ -151,7 +151,7 @@ action[StringTemplate self]
+ 			}
+ 			else {
+ 				//System.out.println("region ref "+regionName);
+-				StringTemplate regionST =
++				org.antlr.stringtemplate.StringTemplate regionST =
+                     self.getGroup().defineImplicitRegionTemplate(self,regionName);
+                 mangledRef = regionST.getName();
+             }
+@@ -174,11 +174,11 @@ action[StringTemplate self]
+ 				String template =
+ 					combinedNameTemplateStr.substring(indexOfDefSymbol+3,
+ 						combinedNameTemplateStr.length());
+-				StringTemplate regionST =
++				org.antlr.stringtemplate.StringTemplate regionST =
+                     self.getGroup().defineRegionTemplate(self,
+ 									regionName,
+ 									template,
+-									StringTemplate.REGION_EMBEDDED);
++									org.antlr.stringtemplate.StringTemplate.REGION_EMBEDDED);
+ 				// treat as regular action: mangled template include
+ 				String indent = ((ChunkToken)rd).getIndentation();
+ 				ASTExpr c = self.parseAction(regionST.getName()+"()");
+@@ -204,9 +204,9 @@ options {
+ 
+ {
+ protected String currentIndent = null;
+-protected StringTemplate self;
++protected org.antlr.stringtemplate.StringTemplate self;
+ 
+-public DefaultTemplateLexer(StringTemplate self, Reader r) {
++public DefaultTemplateLexer(org.antlr.stringtemplate.StringTemplate self, Reader r) {
+ 	this(r);
+ 	this.self = self;
+ }
+--- src/org/antlr/stringtemplate/misc/JTreeStringTemplateModel.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/misc/JTreeStringTemplateModel.java	2025-07-05 13:51:22.935120757 -0600
+@@ -32,7 +32,6 @@ import antlr.collections.AST;
+ import javax.swing.event.*;
+ import javax.swing.tree.*;
+ 
+-import org.antlr.stringtemplate.StringTemplate;
+ import org.antlr.stringtemplate.StringTemplateGroup;
+ import org.antlr.stringtemplate.language.*;
+ 
+@@ -68,18 +67,18 @@ public class JTreeStringTemplateModel im
+ 	}
+ 
+ 	static class StringTemplateWrapper extends Wrapper {
+-		StringTemplate st = null;
++		org.antlr.stringtemplate.StringTemplate st = null;
+ 		public StringTemplateWrapper(Object o) {
+-			this.st = (StringTemplate)o;
++			this.st = (org.antlr.stringtemplate.StringTemplate)o;
+ 		}
+ 		public Object getWrappedObject() {
+ 			return getStringTemplate();
+ 		}
+-		public StringTemplate getStringTemplate() {
++		public org.antlr.stringtemplate.StringTemplate getStringTemplate() {
+ 			return st;
+ 		}
+ 		public Object getChild(Object parent, int index) {
+-			StringTemplate st = ((StringTemplateWrapper)parent).getStringTemplate();
++			org.antlr.stringtemplate.StringTemplate st = ((StringTemplateWrapper)parent).getStringTemplate();
+ 			if ( index==0 ) {
+ 				// System.out.println("chunk type index "+index+" is attributes");
+ 				// return attributes
+@@ -145,9 +144,9 @@ public class JTreeStringTemplateModel im
+ 							return root.getFirstChild().getNextSibling().toStringList();
+ 						case 1 :
+ 							String templateName = root.getFirstChild().getText();
+-							StringTemplate enclosingST = expr.getEnclosingTemplate();
++							org.antlr.stringtemplate.StringTemplate enclosingST = expr.getEnclosingTemplate();
+ 							StringTemplateGroup group = enclosingST.getGroup();
+-							StringTemplate embedded =
++							org.antlr.stringtemplate.StringTemplate embedded =
+ 									group.getEmbeddedInstanceOf(enclosingST,
+ 																templateName);
+ 							return new StringTemplateWrapper(embedded);
+@@ -336,7 +335,7 @@ public class JTreeStringTemplateModel im
+ 		return wrappedObject;
+ 	}
+ 
+-    public JTreeStringTemplateModel(StringTemplate st) {
++    public JTreeStringTemplateModel(org.antlr.stringtemplate.StringTemplate st) {
+         if (st == null) {
+             throw new IllegalArgumentException("root is null");
+         }
+--- src/org/antlr/stringtemplate/misc/StringTemplateTreeView.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/misc/StringTemplateTreeView.java	2025-07-05 13:52:07.423317093 -0600
+@@ -52,7 +52,7 @@ public class StringTemplateTreeView exte
+     static final int WIDTH = 200;
+     static final int HEIGHT = 300;
+ 
+-    public StringTemplateTreeView(String label, StringTemplate st) {
++    public StringTemplateTreeView(String label, org.antlr.stringtemplate.StringTemplate st) {
+         super(label);
+ 
+         JTreeStringTemplatePanel tp =
+@@ -72,9 +72,9 @@ public class StringTemplateTreeView exte
+ 
+     public static void main(String args[]) {
+ 		StringTemplateGroup group = new StringTemplateGroup("dummy");
+-		StringTemplate bold = group.defineTemplate("bold", "<b>$attr$</b>");
+-		StringTemplate banner = group.defineTemplate("banner", "the banner");
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate bold = group.defineTemplate("bold", "<b>$attr$</b>");
++		org.antlr.stringtemplate.StringTemplate banner = group.defineTemplate("banner", "the banner");
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				group,
+ 				"<html>\n" +  // doesn't like the first < and doesn't show :(
+ 				"$banner(a=b)$"+
+--- src/org/antlr/stringtemplate/StringTemplateGroupInterface.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/StringTemplateGroupInterface.java	2025-07-05 13:41:47.438126149 -0600
+@@ -129,7 +129,7 @@ public class StringTemplateGroupInterfac
+ 			String name = (String)it.next();
+ 			TemplateDefinition d = (TemplateDefinition)templates.get(name);
+ 			if ( group.isDefined(d.name) ) {
+-				StringTemplate defST = group.getTemplateDefinition(d.name);
++				org.antlr.stringtemplate.StringTemplate defST = group.getTemplateDefinition(d.name);
+ 				Map formalArgs = defST.getFormalArguments();
+ 				boolean ack = false;
+ 				if ( (d.formalArgs!=null && formalArgs==null) ||
+--- src/org/antlr/stringtemplate/StringTemplateGroup.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/StringTemplateGroup.java	2025-07-05 13:46:45.107125637 -0600
+@@ -188,8 +188,8 @@ public class StringTemplateGroup {
+ 	/** Used to indicate that the template doesn't exist.
+ 	 *  We don't have to check disk for it; we know it's not there.
+ 	 */
+-	protected static final StringTemplate NOT_FOUND_ST =
+-		new StringTemplate();
++	protected static final org.antlr.stringtemplate.StringTemplate NOT_FOUND_ST =
++		new org.antlr.stringtemplate.StringTemplate();
+ 
+ 	/** How long before tossing out all templates in seconds. */
+ 	protected int refreshIntervalInSeconds = Integer.MAX_VALUE/1000; // default: no refreshing from disk
+@@ -376,22 +376,22 @@ public class StringTemplateGroup {
+ 	}
+ 
+ 	/** StringTemplate object factory; each group can have its own. */
+-	public StringTemplate createStringTemplate() {
+-		StringTemplate st = new StringTemplate();
++	public org.antlr.stringtemplate.StringTemplate createStringTemplate() {
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate();
+ 		return st;
+ 	}
+ 
+ 	/** A support routine that gets an instance of name knowing which
+ 	 *  ST encloses it for error messages.
+ 	 */
+-	protected StringTemplate getInstanceOf(StringTemplate enclosingInstance,
++	protected org.antlr.stringtemplate.StringTemplate getInstanceOf(org.antlr.stringtemplate.StringTemplate enclosingInstance,
+ 										   String name)
+ 		throws IllegalArgumentException
+ 	{
+ 		//System.out.println("getInstanceOf("+getName()+"::"+name+")");
+-		StringTemplate st = lookupTemplate(enclosingInstance,name);
++		org.antlr.stringtemplate.StringTemplate st = lookupTemplate(enclosingInstance,name);
+ 		if ( st!=null ) {
+-			StringTemplate instanceST = st.getInstanceOf();
++			org.antlr.stringtemplate.StringTemplate instanceST = st.getInstanceOf();
+ 			return instanceST;
+ 		}
+ 		return null;
+@@ -400,7 +400,7 @@ public class StringTemplateGroup {
+ 	/** The primary means of getting an instance of a template from this
+ 	 *  group.
+ 	 */
+-	public StringTemplate getInstanceOf(String name) {
++	public org.antlr.stringtemplate.StringTemplate getInstanceOf(String name) {
+ 		return getInstanceOf(null, name);
+ 	}
+ 
+@@ -408,13 +408,13 @@ public class StringTemplateGroup {
+ 	 *  group when you have a predefined set of attributes you want to
+ 	 *  use.
+ 	 */
+-	public StringTemplate getInstanceOf(String name, Map attributes) {
+-		StringTemplate st = getInstanceOf(name);
++	public org.antlr.stringtemplate.StringTemplate getInstanceOf(String name, Map attributes) {
++		org.antlr.stringtemplate.StringTemplate st = getInstanceOf(name);
+ 		st.attributes = attributes;
+ 		return st;
+ 	}
+ 
+-	public StringTemplate getEmbeddedInstanceOf(StringTemplate enclosingInstance,
++	public org.antlr.stringtemplate.StringTemplate getEmbeddedInstanceOf(org.antlr.stringtemplate.StringTemplate enclosingInstance,
+ 												String name)
+ 		throws IllegalArgumentException
+ 	{
+@@ -423,7 +423,7 @@ public class StringTemplateGroup {
+ 						   enclosingInstance.getGroup().getName()+
+ 						   " with native group "+enclosingInstance.getNativeGroup().getName());
+ 						   */
+-		StringTemplate st = null;
++		org.antlr.stringtemplate.StringTemplate st = null;
+ 		// TODO: seems like this should go into lookupTemplate
+ 		if ( name.startsWith("super.") ) {
+ 			// for super.foo() refs, ensure that we look at the native
+@@ -450,7 +450,7 @@ public class StringTemplateGroup {
+ 	 *
+ 	 *  If I find a template in a super group, copy an instance down here
+ 	 */
+-	public synchronized StringTemplate lookupTemplate(StringTemplate enclosingInstance,
++	public synchronized org.antlr.stringtemplate.StringTemplate lookupTemplate(org.antlr.stringtemplate.StringTemplate enclosingInstance,
+ 													  String name)
+ 		throws IllegalArgumentException
+ 	{
+@@ -459,7 +459,7 @@ public class StringTemplateGroup {
+ 			if ( superGroup!=null ) {
+ 				int dot = name.indexOf('.');
+ 				name = name.substring(dot+1,name.length());
+-				StringTemplate superScopeST =
++				org.antlr.stringtemplate.StringTemplate superScopeST =
+ 					superGroup.lookupTemplate(enclosingInstance,name);
+ 				/*
+ 				System.out.println("superScopeST is "+
+@@ -472,7 +472,7 @@ public class StringTemplateGroup {
+ 											   " has no super group; invalid template: "+name);
+ 		}
+ 		checkRefreshInterval();
+-		StringTemplate st = (StringTemplate)templates.get(name);
++		org.antlr.stringtemplate.StringTemplate st = (org.antlr.stringtemplate.StringTemplate)templates.get(name);
+ 		if ( st==null ) {
+ 			// not there?  Attempt to load
+ 			if ( !templatesDefinedInGroupFile ) {
+@@ -516,7 +516,7 @@ public class StringTemplateGroup {
+ 		return st;
+ 	}
+ 
+-	public StringTemplate lookupTemplate(String name) {
++	public org.antlr.stringtemplate.StringTemplate lookupTemplate(String name) {
+ 		return lookupTemplate(null, name);
+ 	}
+ 
+@@ -533,7 +533,7 @@ public class StringTemplateGroup {
+ 		}
+ 	}
+ 
+-	protected StringTemplate loadTemplate(String name, BufferedReader r)
++	protected org.antlr.stringtemplate.StringTemplate loadTemplate(String name, BufferedReader r)
+ 			throws IOException
+ 	{
+ 		String line;
+@@ -558,9 +558,9 @@ public class StringTemplateGroup {
+ 	 *  the classpath.  If there is a rootDir, try to load the file
+ 	 *  from there.
+ 	 */
+-	protected StringTemplate loadTemplateFromBeneathRootDirOrCLASSPATH(String fileName)
++	protected org.antlr.stringtemplate.StringTemplate loadTemplateFromBeneathRootDirOrCLASSPATH(String fileName)
+ 	{
+-		StringTemplate template = null;
++		org.antlr.stringtemplate.StringTemplate template = null;
+ 		String name = getTemplateNameFromFileName(fileName);
+ 		// if no rootDir, try to load as a resource in CLASSPATH
+ 		if ( rootDir==null ) {
+@@ -618,10 +618,10 @@ public class StringTemplateGroup {
+ 		return name;
+ 	}
+ 
+-	protected StringTemplate loadTemplate(String name, String fileName)
++	protected org.antlr.stringtemplate.StringTemplate loadTemplate(String name, String fileName)
+ 	{
+ 		BufferedReader br = null;
+-		StringTemplate template = null;
++		org.antlr.stringtemplate.StringTemplate template = null;
+ 		try {
+ 			InputStream fin = new FileInputStream(fileName);
+ 			InputStreamReader isr = getInputStreamReader(fin);
+@@ -665,14 +665,14 @@ public class StringTemplateGroup {
+ 	/** Define an examplar template; precompiled and stored
+ 	 *  with no attributes.  Remove any previous definition.
+ 	 */
+-	public synchronized StringTemplate defineTemplate(String name,
++	public synchronized org.antlr.stringtemplate.StringTemplate defineTemplate(String name,
+ 													  String template)
+ 	{
+ 		//System.out.println("defineTemplate "+getName()+"::"+name);
+ 		if ( name!=null && name.indexOf('.')>=0 ) {
+ 			throw new IllegalArgumentException("cannot have '.' in template names");
+ 		}
+-		StringTemplate st = createStringTemplate();
++		org.antlr.stringtemplate.StringTemplate st = createStringTemplate();
+ 		st.setName(name);
+ 		st.setGroup(this);
+ 		st.setNativeGroup(this);
+@@ -683,26 +683,26 @@ public class StringTemplateGroup {
+ 	}
+ 
+ 	/** Track all references to regions <@foo>...<@end> or <@foo()>.  */
+-	public StringTemplate defineRegionTemplate(String enclosingTemplateName,
++	public org.antlr.stringtemplate.StringTemplate defineRegionTemplate(String enclosingTemplateName,
+ 											   String regionName,
+ 											   String template,
+ 											   int type)
+ 	{
+ 		String mangledName =
+ 			getMangledRegionName(enclosingTemplateName,regionName);
+-		StringTemplate regionST = defineTemplate(mangledName, template);
++		org.antlr.stringtemplate.StringTemplate regionST = defineTemplate(mangledName, template);
+ 		regionST.setIsRegion(true);
+ 		regionST.setRegionDefType(type);
+ 		return regionST;
+ 	}
+ 
+ 	/** Track all references to regions <@foo>...<@end> or <@foo()>.  */
+-	public StringTemplate defineRegionTemplate(StringTemplate enclosingTemplate,
++	public org.antlr.stringtemplate.StringTemplate defineRegionTemplate(org.antlr.stringtemplate.StringTemplate enclosingTemplate,
+ 											   String regionName,
+ 											   String template,
+ 											   int type)
+ 	{
+-		StringTemplate regionST =
++		org.antlr.stringtemplate.StringTemplate regionST =
+ 			defineRegionTemplate(enclosingTemplate.getOutermostName(),
+ 								 regionName,
+ 								 template,
+@@ -719,13 +719,13 @@ public class StringTemplateGroup {
+ 	 *  You cannot set these manually in the same group; you have to subgroup
+ 	 *  to override.
+ 	 */
+-	public StringTemplate defineImplicitRegionTemplate(StringTemplate enclosingTemplate,
++	public org.antlr.stringtemplate.StringTemplate defineImplicitRegionTemplate(org.antlr.stringtemplate.StringTemplate enclosingTemplate,
+ 													   String name)
+ 	{
+ 		return defineRegionTemplate(enclosingTemplate,
+ 									name,
+ 									"",
+-									StringTemplate.REGION_IMPLICIT);
++									org.antlr.stringtemplate.StringTemplate.REGION_IMPLICIT);
+ 
+ 	}
+ 
+@@ -744,8 +744,8 @@ public class StringTemplateGroup {
+ 	}
+ 
+ 	/** Make name and alias for target.  Replace any previous def of name */
+-	public synchronized StringTemplate defineTemplateAlias(String name, String target) {
+-		StringTemplate targetST=getTemplateDefinition(target);
++	public synchronized org.antlr.stringtemplate.StringTemplate defineTemplateAlias(String name, String target) {
++		org.antlr.stringtemplate.StringTemplate targetST=getTemplateDefinition(target);
+ 		if ( targetST==null ){
+ 			error("cannot alias "+name+" to undefined template: "+target);
+ 			return null;
+@@ -755,11 +755,11 @@ public class StringTemplateGroup {
+ 	}
+ 
+ 	public synchronized boolean isDefinedInThisGroup(String name) {
+-		StringTemplate st = (StringTemplate)templates.get(name);
++		org.antlr.stringtemplate.StringTemplate st = (org.antlr.stringtemplate.StringTemplate)templates.get(name);
+ 		if ( st!=null ) {
+ 			if ( st.isRegion() ) {
+ 				// don't allow redef of @t.r() ::= "..." or <@r>...<@end>
+-				if ( st.getRegionDefType()==StringTemplate.REGION_IMPLICIT ) {
++				if ( st.getRegionDefType()==org.antlr.stringtemplate.StringTemplate.REGION_IMPLICIT ) {
+ 					return false;
+ 				}
+ 			}
+@@ -769,8 +769,8 @@ public class StringTemplateGroup {
+ 	}
+ 
+ 	/** Get the ST for 'name' in this group only */
+-	public synchronized StringTemplate getTemplateDefinition(String name) {
+-		return (StringTemplate)templates.get(name);
++	public synchronized org.antlr.stringtemplate.StringTemplate getTemplateDefinition(String name) {
++		return (org.antlr.stringtemplate.StringTemplate)templates.get(name);
+ 	}
+ 
+ 	/** Is there *any* definition for template 'name' in this template
+@@ -1012,7 +1012,7 @@ public class StringTemplateGroup {
+ 		noDebugStartStopStrings.add(templateName);
+ 	}
+ 
+-	public void emitTemplateStartDebugString(StringTemplate st,
++	public void emitTemplateStartDebugString(org.antlr.stringtemplate.StringTemplate st,
+ 											 StringTemplateWriter out)
+ 		throws IOException
+ 	{
+@@ -1032,7 +1032,7 @@ public class StringTemplateGroup {
+ 		}
+ 	}
+ 
+-	public void emitTemplateStopDebugString(StringTemplate st,
++	public void emitTemplateStopDebugString(org.antlr.stringtemplate.StringTemplate st,
+ 											StringTemplateWriter out)
+ 		throws IOException
+ 	{
+@@ -1063,10 +1063,10 @@ public class StringTemplateGroup {
+ 		Collections.sort(sortedNames);
+ 		Iterator iter = sortedNames.iterator();
+ 		buf.append("group "+getName()+";\n");
+-		StringTemplate formalArgs = new StringTemplate("$args;separator=\",\"$");
++		org.antlr.stringtemplate.StringTemplate formalArgs = new org.antlr.stringtemplate.StringTemplate("$args;separator=\",\"$");
+ 		while (iter.hasNext()) {
+ 			String tname = (String) iter.next();
+-			StringTemplate st = (StringTemplate)templates.get(tname);
++			org.antlr.stringtemplate.StringTemplate st = (org.antlr.stringtemplate.StringTemplate)templates.get(tname);
+ 			if ( st!=NOT_FOUND_ST ) {
+ 				formalArgs = formalArgs.getInstanceOf();
+ 				formalArgs.setAttribute("args", st.getFormalArguments());
+--- test/org/antlr/stringtemplate/test/TestStringTemplate.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ test/org/antlr/stringtemplate/test/TestStringTemplate.java	2025-07-05 15:16:42.836799197 -0600
+@@ -208,7 +208,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup(new FileReader(tmpdir+"/testG.stg"),
+ 										DefaultTemplateLexer.class,
+ 										errors);
+-		StringTemplate st = group.getInstanceOf("main");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("main");
+ 		st.setAttribute("x", "foo");
+ 
+ 		String expecting = "*foo*";
+@@ -236,7 +236,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new FileReader(tmpdir+"/testG.stg"),
+ 										errors);
+-		StringTemplate st = group.getInstanceOf("main");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("main");
+ 		st.setAttribute("x", "foo");
+ 
+ 		String expecting = "*foo*";
+@@ -338,11 +338,11 @@ public class TestStringTemplate extends
+ 				"t() ::= <<literal template>>"+newline;
+ 		assertEquals(expecting,group.toString());
+ 
+-		StringTemplate a = group.getInstanceOf("t");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("t");
+ 		expecting = "literal template";
+ 		assertEquals(expecting,a.toString());
+ 
+-		StringTemplate b = group.getInstanceOf("bold");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("bold");
+ 		b.setAttribute("item", "dork");
+ 		expecting = "<b>dork</b>";
+ 		assertEquals(expecting,b.toString());
+@@ -364,12 +364,12 @@ public class TestStringTemplate extends
+ 				"t() ::= <<$\"literal\":{a|$a$\\}}$ template>>"+newline;
+ 		assertEquals(expecting,group.toString());
+ 
+-		StringTemplate b = group.getInstanceOf("bold");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("bold");
+ 		b.setAttribute("item", "dork");
+ 		expecting = "<b>dork</b>";
+ 		assertEquals(expecting,b.toString());
+ 
+-		StringTemplate a = group.getInstanceOf("t");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("t");
+ 		expecting = "literal} template";
+ 		assertEquals(expecting,a.toString());
+ 	}
+@@ -388,7 +388,7 @@ public class TestStringTemplate extends
+ 										DefaultTemplateLexer.class);
+ 
+         // check setting unknown arg in empty formal list
+-        StringTemplate a = group.getInstanceOf("t");
++        org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("t");
+         String error = null;
+         try {
+             a.setAttribute("foo", "x"); // want NoSuchElementException
+@@ -436,7 +436,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-        StringTemplate t = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("page");
+         t.setAttribute("title","my title");
+         t.setAttribute("font","Helvetica"); // body() will see it
+         t.toString(); // should be no problem
+@@ -450,7 +450,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-        StringTemplate t = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("page");
+         String expecting = "<font face=Times>my body</font>";
+         assertEquals(expecting, t.toString());
+     }
+@@ -463,7 +463,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-        StringTemplate t = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("page");
+         t.setAttribute("x","Times");
+         String error = "";
+         try {
+@@ -484,7 +484,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-        StringTemplate t = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("page");
+         t.setAttribute("name", "Ter");
+         String expecting = "<font face=Times><b>Ter</b></font>";
+         assertEquals(expecting, t.toString());
+@@ -498,7 +498,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-        StringTemplate t = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("page");
+         t.setAttribute("x","Times");
+         t.setAttribute("name", "Ter");
+         String error = "";
+@@ -520,7 +520,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-        StringTemplate t = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("page");
+         String error = "";
+         try {
+             t.toString();
+@@ -540,7 +540,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-        StringTemplate t = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("page");
+         String error = "";
+         try {
+             t.toString();
+@@ -562,14 +562,14 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(
+                         new StringReader(templates));
+-        StringTemplate t = group.getInstanceOf("a");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("a");
+         t.setAttribute("s","Test");
+         String expecting = "case 1 : Test break;";
+         assertEquals(expecting, t.toString());
+     }
+ 
+     public void testAngleBracketsNoGroup() throws Exception {
+-        StringTemplate st =new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+                 "Tokens : <rules; separator=\"|\"> ;",
+                 AngleBracketTemplateLexer.class);
+         st.setAttribute("rules", "A");
+@@ -585,7 +585,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XY";
+ 		assertEquals(expecting, result);
+@@ -598,7 +598,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XblortY";
+ 		assertEquals(expecting, result);
+@@ -610,7 +610,7 @@ public class TestStringTemplate extends
+ 				"a() ::= \"X<@r()>Y\"" +newline;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XY";
+ 		assertEquals(expecting, result);
+@@ -622,7 +622,7 @@ public class TestStringTemplate extends
+ 				"a() ::= \"X<@r>blort<@end>Y\"" +newline;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XblortY";
+ 		assertEquals(expecting, result);
+@@ -638,7 +638,7 @@ public class TestStringTemplate extends
+ 				"Y\"" +newline;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XblortY";
+ 		assertEquals(expecting, result);
+@@ -651,7 +651,7 @@ public class TestStringTemplate extends
+ 				"@a.r() ::= \"foo\"" +newline;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XfooY";
+ 		assertEquals(expecting, result);
+@@ -664,7 +664,7 @@ public class TestStringTemplate extends
+ 				"@a.r() ::= \"foo\"" +newline;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		st.setAttribute("v", "true");
+ 		String result = st.toString();
+ 		String expecting = "XAfooBY";
+@@ -680,7 +680,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										errors);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		st.setAttribute("v", "true");
+ 		String result = st.toString();
+ 		String expecting = "XAyoBY";
+@@ -708,7 +708,7 @@ public class TestStringTemplate extends
+ 										null,
+ 										group);
+ 
+-		StringTemplate st = subGroup.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = subGroup.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XfooY";
+ 		assertEquals(expecting, result);
+@@ -731,7 +731,7 @@ public class TestStringTemplate extends
+ 										null,
+ 										group);
+ 
+-		StringTemplate st = subGroup.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = subGroup.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XAfooBY";
+ 		assertEquals(expecting, result);
+@@ -776,7 +776,7 @@ public class TestStringTemplate extends
+ 										null,
+ 										subGroup);
+ 
+-		StringTemplate st = subSubGroup.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = subSubGroup.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "Xfoo23Y";
+ 		assertEquals(expecting, result);
+@@ -798,7 +798,7 @@ public class TestStringTemplate extends
+ 										null,
+ 										group);
+ 
+-		StringTemplate st = subGroup.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = subGroup.getInstanceOf("a");
+ 		String result = st.toString();
+ 		String expecting = "XAfooY";
+ 		assertEquals(expecting, result);
+@@ -814,7 +814,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										errors);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		st.toString();
+ 		String result = errors.toString();
+ 		String expecting = "group test line 2: redefinition of template region: @a.r";
+@@ -832,7 +832,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										errors);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		st.toString();
+ 		String result = errors.toString();
+ 		String expecting = "group test line 4: redefinition of template region: @a.r";
+@@ -874,7 +874,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										errors);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		st.toString();
+ 		String result = errors.toString();
+ 		String expecting = "group test line 3: template a has no region called q";
+@@ -916,7 +916,7 @@ public class TestStringTemplate extends
+ 										DefaultTemplateLexer.class,
+ 										errors,
+ 										null);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		st.toString();
+ 		String result = errors.toString();
+ 		String expecting = "missing region r $@end$ tag";
+@@ -932,7 +932,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										errors);
+-		StringTemplate st = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("a");
+ 		st.toString();
+ 		String result = errors.toString();
+ 		String expecting = "missing region r <@end> tag";
+@@ -948,7 +948,7 @@ public class TestStringTemplate extends
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		subgroup.setErrorListener(errors);
+ 		supergroup.setErrorListener(errors);
+-		StringTemplate duh = new StringTemplate(subgroup, "$name:bold()$");
++		org.antlr.stringtemplate.StringTemplate duh = new org.antlr.stringtemplate.StringTemplate(subgroup, "$name:bold()$");
+ 		duh.setAttribute("name", "Terence");
+ 		String expecting = "<b>Terence</b>";
+ 		assertEquals(expecting,duh.toString());
+@@ -964,7 +964,7 @@ public class TestStringTemplate extends
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		subgroup.setErrorListener(errors);
+ 		supergroup.setErrorListener(errors);
+-		StringTemplate duh = new StringTemplate(subgroup, "$name:bold()$");
++		org.antlr.stringtemplate.StringTemplate duh = new org.antlr.stringtemplate.StringTemplate(subgroup, "$name:bold()$");
+ 		duh.setAttribute("name", "Terence");
+ 		String expecting = "<strong>Terence</strong>";
+ 		assertEquals(expecting,duh.toString());
+@@ -982,7 +982,7 @@ public class TestStringTemplate extends
+ 		rootgroup.setErrorListener(errors);
+ 		level1.setErrorListener(errors);
+ 		level2.setErrorListener(errors);
+-		StringTemplate duh = new StringTemplate(level2, "$name:bold()$");
++		org.antlr.stringtemplate.StringTemplate duh = new org.antlr.stringtemplate.StringTemplate(level2, "$name:bold()$");
+ 		duh.setAttribute("name", "Terence");
+ 		String expecting = "<b>Terence</b>";
+ 		assertEquals(expecting,duh.toString());
+@@ -1012,7 +1012,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup sub =
+ 				new StringTemplateGroup(new StringReader(subtemplates));
+ 		sub.setSuperGroup(base);
+-		StringTemplate st = sub.getInstanceOf("decls");
++		org.antlr.stringtemplate.StringTemplate st = sub.getInstanceOf("decls");
+ 		String expecting = "DSL";
+ 		String result = st.toString();
+ 		assertEquals(expecting, result);
+@@ -1043,7 +1043,7 @@ public class TestStringTemplate extends
+ 										null,
+ 										subGroup);
+ 
+-		StringTemplate st = subSubGroup.getInstanceOf("r");
++		org.antlr.stringtemplate.StringTemplate st = subSubGroup.getInstanceOf("r");
+ 		String result = st.toString();
+ 		String expecting = "foo23";
+ 		assertEquals(expecting, result);
+@@ -1052,10 +1052,10 @@ public class TestStringTemplate extends
+ 	public void testExprInParens() throws Exception {
+ 		// specify a template to apply to an attribute
+ 		// Use a template group so we can specify the start/stop chars
+-		StringTemplateGroup group =
++		org.antlr.stringtemplate.StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".");
+ 		/*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-		StringTemplate duh = new StringTemplate(group, "$(\"blort: \"+(list)):bold()$");
++		org.antlr.stringtemplate.StringTemplate duh = new org.antlr.stringtemplate.StringTemplate(group, "$(\"blort: \"+(list)):bold()$");
+ 		duh.setAttribute("list", "a");
+ 		duh.setAttribute("list", "b");
+ 		duh.setAttribute("list", "c");
+@@ -1067,11 +1067,11 @@ public class TestStringTemplate extends
+     public void testMultipleAdditions() throws Exception {
+         // specify a template to apply to an attribute
+         // Use a template group so we can specify the start/stop chars
+-        StringTemplateGroup group =
+-            new StringTemplateGroup("dummy", ".");
++        org.antlr.stringtemplate.StringTemplateGroup group =
++            new org.antlr.stringtemplate.StringTemplateGroup("dummy", ".");
+         group.defineTemplate("link", "<a href=\"$url$\"><b>$title$</b></a>");
+-        StringTemplate duh =
+-            new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate duh =
++            new org.antlr.stringtemplate.StringTemplate(group,
+                 "$link(url=\"/member/view?ID=\"+ID+\"&x=y\"+foo, title=\"the title\")$");
+         duh.setAttribute("ID", "3321");
+         duh.setAttribute("foo", "fubar");
+@@ -1083,8 +1083,8 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-        StringTemplate t =
+-            new StringTemplate(group, "$data$, $data:bold()$, "+
++        org.antlr.stringtemplate.StringTemplate t =
++            new org.antlr.stringtemplate.StringTemplate(group, "$data$, $data:bold()$, "+
+                                       "$list:bold():bold()$, $array$, $a2$, $a3$, $a4$");
+         Vector v = new Vector();
+         v.addElement("1");
+@@ -1110,7 +1110,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-        StringTemplate t = new StringTemplate(group, "$(f+l):bold()$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$(f+l):bold()$");
+         t.setAttribute("f", "Joe");
+         t.setAttribute("l", "Schmoe");
+         //System.out.println(t);
+@@ -1122,7 +1122,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /* StringTemplate bold =*/ group.defineTemplate("foobar", "foo$attr$bar");
+-        StringTemplate t = new StringTemplate(group, "$data:(name+\"bar\")()$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$data:(name+\"bar\")()$");
+         t.setAttribute("data", "Ter");
+         t.setAttribute("data", "Tom");
+         t.setAttribute("name", "foo");
+@@ -1136,7 +1136,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+ 		/*StringTemplate foobar =*/ group.defineTemplate("foobar", "foo$it$bar");
+ 		/*StringTemplate a =*/ group.defineTemplate("a", "$it$bar");
+-        StringTemplate t = new StringTemplate(group, "$data:(\"foo\":a())()$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$data:(\"foo\":a())()$");
+         t.setAttribute("data", "Ter");
+         t.setAttribute("data", "Tom");
+         //System.out.println(t);
+@@ -1148,7 +1148,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /*StringTemplate foo =*/ group.defineTemplate("foo", "hi there!");
+-        StringTemplate t = new StringTemplate(group, "$(name)()$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$(name)()$");
+         t.setAttribute("name", "foo");
+         //System.out.println(t);
+         String expecting="hi there!";
+@@ -1160,7 +1160,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+         group.setErrorListener(errors);
+-        /*StringTemplate t =*/ new StringTemplate(group, "stuff $a then more junk etc...");
++        /*StringTemplate t =*/ new org.antlr.stringtemplate.StringTemplate(group, "stuff $a then more junk etc...");
+         String expectingError="problem parsing template 'anonymous': line 1:31: expecting '$', found '<EOF>'";
+         //System.out.println("error: '"+errors+"'");
+         //System.out.println("expecting: '"+expectingError+"'");
+@@ -1168,10 +1168,10 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testSetButNotRefd() throws Exception {
+-        StringTemplate.setLintMode(true);
++        org.antlr.stringtemplate.StringTemplate.setLintMode(true);
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+-        StringTemplate t = new StringTemplate(group, "$a$ then $b$ and $c$ refs.");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$a$ then $b$ and $c$ refs.");
+         t.setAttribute("a", "Terence");
+         t.setAttribute("b", "Terence");
+         t.setAttribute("cc", "Terence"); // oops...should be 'c'
+@@ -1181,7 +1181,7 @@ public class TestStringTemplate extends
+         /*String result =*/ t.toString();    // result is irrelevant
+         //System.out.println("result error: '"+errors+"'");
+         //System.out.println("expecting: '"+expectingError+"'");
+-        StringTemplate.setLintMode(false);
++        org.antlr.stringtemplate.StringTemplate.setLintMode(false);
+         assertEquals(expectingError,errors.toString());
+     }
+ 
+@@ -1190,7 +1190,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+         group.setErrorListener(errors);
+-        StringTemplate t = new StringTemplate(group, "$names:bold(x=it)$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$names:bold(x=it)$");
+         t.setAttribute("names", "Terence");
+         
+ 		String error = null;
+@@ -1209,7 +1209,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+         group.setErrorListener(errors);
+-        StringTemplate t = new StringTemplate(group, "$names:bold(x=it)$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$names:bold(x=it)$");
+         t.setAttribute("names", "Terence");
+         t.setAttribute("names", "Tom");
+         //System.out.println(t);
+@@ -1228,7 +1228,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$x$</b>");
+-        StringTemplate t = new StringTemplate(group, "$names:bold(x=it)$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$names:bold(x=it)$");
+         t.setAttribute("names", "Terence");
+         t.setAttribute("names", "Tom");
+         //System.out.println("'"+t.toString()+"'");
+@@ -1241,8 +1241,8 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("dummy", ".");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$item$</b>");
+         /*StringTemplate italics =*/ group.defineTemplate("italics", "<i>$it$</i>");
+-        StringTemplate members =
+-                new StringTemplate(group, "$members:bold(item=it):italics(it=it)$");
++        org.antlr.stringtemplate.StringTemplate members =
++                new org.antlr.stringtemplate.StringTemplate(group, "$members:bold(item=it):italics(it=it)$");
+         members.setAttribute("members", "Jim");
+         members.setAttribute("members", "Mike");
+         members.setAttribute("members", "Ashar");
+@@ -1257,8 +1257,8 @@ public class TestStringTemplate extends
+         /*StringTemplate listItem =*/ group.defineTemplate("listItem", "<li>$it$</li>");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+         /*StringTemplate italics =*/ group.defineTemplate("italics", "<i>$it$</i>");
+-        StringTemplate item =
+-                new StringTemplate(group, "$item:bold(),italics():listItem()$");
++        org.antlr.stringtemplate.StringTemplate item =
++                new org.antlr.stringtemplate.StringTemplate(group, "$item:bold(),italics():listItem()$");
+         item.setAttribute("item", "Jim");
+         item.setAttribute("item", "Mike");
+         item.setAttribute("item", "Ashar");
+@@ -1272,7 +1272,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+         /*StringTemplate hostname =*/ group.defineTemplate("hostname", "$machine$.jguru.com");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$x$</b>");
+-        StringTemplate t = new StringTemplate(group, "$bold(x=hostname(machine=\"www\"))$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$bold(x=hostname(machine=\"www\"))$");
+         String expecting="<b>www.jguru.com</b>";
+         assertEquals(expecting, t.toString());
+     }
+@@ -1283,7 +1283,7 @@ public class TestStringTemplate extends
+         /*StringTemplate hostname =*/ group.defineTemplate("hostname", "$machine$.jguru.com");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$x$</b>");
+         /*StringTemplate italics =*/ group.defineTemplate("italics", "<i>$it$</i>");
+-        StringTemplate t = new StringTemplate(group, "$bold(x=hostname(machine=\"www\"):italics())$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$bold(x=hostname(machine=\"www\"):italics())$");
+         String expecting="<b><i>www.jguru.com</i></b>";
+         assertEquals(expecting, t.toString());
+     }
+@@ -1293,7 +1293,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+         /*StringTemplate italics =*/ group.defineTemplate("italics", "<i>$x$</i>");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$x$</b>");
+-        StringTemplate t = new StringTemplate(group, "$bold(x=italics(x=name))$");
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$bold(x=italics(x=name))$");
+         t.setAttribute("name", "Terence");
+         //System.out.println(t);
+         String expecting="<b><i>Terence</i></b>";
+@@ -1305,8 +1305,8 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+         /*StringTemplate bold =*/ group.defineTemplate("bulletSeparator", "</li>$foo$<li>");
+         // make separator a complicated expression with args passed to included template
+-        StringTemplate t =
+-            new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate t =
++            new org.antlr.stringtemplate.StringTemplate(group,
+                                "<ul>$name; separator=bulletSeparator(foo=\" \")+\"&nbsp;\"$</ul>");
+         t.setAttribute("name", "Ter");
+         t.setAttribute("name", "Tom");
+@@ -1319,7 +1319,7 @@ public class TestStringTemplate extends
+     public void testAttributeRefButtedUpAgainstEndifAndWhitespace() throws Exception {
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+-        StringTemplate a = new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate a = new org.antlr.stringtemplate.StringTemplate(group,
+                                               "$if (!firstName)$$email$$endif$");
+         a.setAttribute("email", "parrt@jguru.com");
+         String expecting = "parrt@jguru.com";
+@@ -1331,7 +1331,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		/*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+ 		//StringTemplate a = new StringTemplate(group, "$\" Parr\":bold()$");
+-		StringTemplate b = new StringTemplate(group, "$bold(it={$name$ Parr})$");
++		org.antlr.stringtemplate.StringTemplate b = new org.antlr.stringtemplate.StringTemplate(group, "$bold(it={$name$ Parr})$");
+ 		//a.setAttribute("name", "Terence");
+ 		b.setAttribute("name", "Terence");
+ 		String expecting = "<b>Terence Parr</b>";
+@@ -1343,7 +1343,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test");
+ 		/*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-		StringTemplate b = new StringTemplate(group, "$bold(it=name+\" Parr\")$");
++		org.antlr.stringtemplate.StringTemplate b = new org.antlr.stringtemplate.StringTemplate(group, "$bold(it=name+\" Parr\")$");
+ 		//a.setAttribute("name", "Terence");
+ 		b.setAttribute("name", "Terence");
+ 		String expecting = "<b>Terence Parr</b>";
+@@ -1355,7 +1355,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test");
+ 		/*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-		StringTemplate b = new StringTemplate(group, "$bold(it=name+\" Parr=\")$");
++		org.antlr.stringtemplate.StringTemplate b = new org.antlr.stringtemplate.StringTemplate(group, "$bold(it=name+\" Parr=\")$");
+ 		//a.setAttribute("name", "Terence");
+ 		b.setAttribute("name", "Terence");
+ 		String expecting = "<b>Terence Parr=</b>";
+@@ -1400,7 +1400,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", tmpWorkDir.toString());
+ 
+-        StringTemplate a = group.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("page");
+         a.setAttribute("member", new Connector());
+         String expecting = "<html><head>"+newline+
+                 "</head>"+newline+
+@@ -1422,8 +1422,8 @@ public class TestStringTemplate extends
+     {
+         StringTemplateGroup tgroup =
+                 new StringTemplateGroup("dummy", ".");
+-        StringTemplate t =
+-                new StringTemplate(tgroup,
++        org.antlr.stringtemplate.StringTemplate t =
++                new org.antlr.stringtemplate.StringTemplate(tgroup,
+                                    " List:"+newline+"  "+newline+"foo"+newline+newline+
+                                    "$names:{<br>$i$. $it$"+newline+
+ 								   "}$");
+@@ -1446,7 +1446,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup mgroup =
+                 new StringTemplateGroup("method stuff",
+ 										AngleBracketTemplateLexer.class);
+-        StringTemplate m = mgroup.getInstanceOf("org/antlr/stringtemplate/test/method");
++        org.antlr.stringtemplate.StringTemplate m = mgroup.getInstanceOf("org/antlr/stringtemplate/test/method");
+         // "method.st" references body() so "body.st" will be loaded too
+         m.setAttribute("visibility", "public");
+         m.setAttribute("name", "foobar");
+@@ -1468,7 +1468,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$x$</b>");
+-        StringTemplate name = new StringTemplate(group, "$name:bold(x=name)$");
++        org.antlr.stringtemplate.StringTemplate name = new org.antlr.stringtemplate.StringTemplate(group, "$name:bold(x=name)$");
+         name.setAttribute("name", "Terence");
+         assertEquals("<b>Terence</b>",name.toString());
+     }
+@@ -1477,7 +1477,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-        StringTemplate name = new StringTemplate(group, "$\"Terence\":bold()$");
++        org.antlr.stringtemplate.StringTemplate name = new org.antlr.stringtemplate.StringTemplate(group, "$\"Terence\":bold()$");
+         assertEquals("<b>Terence</b>",name.toString());
+     }
+ 
+@@ -1485,7 +1485,7 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+         /*StringTemplate bold =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-        StringTemplate name = new StringTemplate(group, "$name:bold()$");
++        org.antlr.stringtemplate.StringTemplate name = new org.antlr.stringtemplate.StringTemplate(group, "$name:bold()$");
+         name.setAttribute("name", "Terence");
+         assertEquals("<b>Terence</b>",name.toString());
+     }
+@@ -1495,8 +1495,8 @@ public class TestStringTemplate extends
+         // Use a template group so we can specify the start/stop chars
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+-        StringTemplate item =
+-                new StringTemplate(group, "$item:{<li>$it$</li>}$");
++        org.antlr.stringtemplate.StringTemplate item =
++                new org.antlr.stringtemplate.StringTemplate(group, "$item:{<li>$it$</li>}$");
+         item.setAttribute("item", "Terence");
+         assertEquals("<li>Terence</li>",item.toString());
+     }
+@@ -1506,11 +1506,11 @@ public class TestStringTemplate extends
+         // Use a template group so we can specify the start/stop chars
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+-        StringTemplate list =
+-                new StringTemplate(group, "<ul>$items$</ul>");
++        org.antlr.stringtemplate.StringTemplate list =
++                new org.antlr.stringtemplate.StringTemplate(group, "<ul>$items$</ul>");
+         // demonstrate setting arg to anonymous subtemplate
+-        StringTemplate item =
+-                new StringTemplate(group, "$item:{<li>$it$</li>}; separator=\",\"$");
++        org.antlr.stringtemplate.StringTemplate item =
++                new org.antlr.stringtemplate.StringTemplate(group, "$item:{<li>$it$</li>}; separator=\",\"$");
+         item.setAttribute("item", "Terence");
+         item.setAttribute("item", "Jim");
+         item.setAttribute("item", "John");
+@@ -1520,8 +1520,8 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testApplyAnonymousTemplateToAggregateAttribute() throws Exception {
+-        StringTemplate st =
+-                new StringTemplate("$items:{$it.lastName$, $it.firstName$\n}$");
++        org.antlr.stringtemplate.StringTemplate st =
++                new org.antlr.stringtemplate.StringTemplate("$items:{$it.lastName$, $it.firstName$\n}$");
+ 		// also testing wacky spaces in aggregate spec
+ 		st.setAttribute("items.{ firstName ,lastName}", "Ter", "Parr");
+         st.setAttribute("items.{firstName, lastName }", "Tom", "Burns");
+@@ -1535,8 +1535,8 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+         /*StringTemplate search =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-        StringTemplate item =
+-                new StringTemplate(group, "$item:bold():bold()$");
++        org.antlr.stringtemplate.StringTemplate item =
++                new org.antlr.stringtemplate.StringTemplate(group, "$item:bold():bold()$");
+         item.setAttribute("item", "Jim");
+         assertEquals("<b><b>Jim</b></b>", item.toString());
+     }
+@@ -1545,8 +1545,8 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+         /*StringTemplate search =*/ group.defineTemplate("bold", "<b>$it$</b>");
+-        StringTemplate item =
+-                new StringTemplate(group, "$item:bold():bold(); separator=\",\"$");
++        org.antlr.stringtemplate.StringTemplate item =
++                new org.antlr.stringtemplate.StringTemplate(group, "$item:bold():bold(); separator=\",\"$");
+         item.setAttribute("item", "Jim");
+         item.setAttribute("item", "Mike");
+         item.setAttribute("item", "Ashar");
+@@ -1559,12 +1559,12 @@ public class TestStringTemplate extends
+     // ### NEED A TEST OF obj ASSIGNED TO ARG?
+ 
+     public void testMultiValuedAttributeWithSeparator() throws Exception {
+-        StringTemplate query;
++        org.antlr.stringtemplate.StringTemplate query;
+ 
+         // if column can be multi-valued, specify a separator
+         StringTemplateGroup group =
+             new StringTemplateGroup("dummy", ".", AngleBracketTemplateLexer.class);
+-        query = new StringTemplate(group, "SELECT <distinct> <column; separator=\", \"> FROM <table>;");
++        query = new org.antlr.stringtemplate.StringTemplate(group, "SELECT <distinct> <column; separator=\", \"> FROM <table>;");
+         query.setAttribute("column", "name");
+         query.setAttribute("column", "email");
+         query.setAttribute("table", "User");
+@@ -1576,8 +1576,8 @@ public class TestStringTemplate extends
+ 
+     public void testSingleValuedAttributes() throws Exception {
+         // all attributes are single-valued:
+-        StringTemplate query =
+-                new StringTemplate("SELECT $column$ FROM $table$;");
++        org.antlr.stringtemplate.StringTemplate query =
++                new org.antlr.stringtemplate.StringTemplate("SELECT $column$ FROM $table$;");
+         query.setAttribute("column", "name");
+         query.setAttribute("table", "User");
+         // System.out.println(query);
+@@ -1587,8 +1587,8 @@ public class TestStringTemplate extends
+ 	public void testIFTemplate() throws Exception {
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
+-			new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t =
++			new org.antlr.stringtemplate.StringTemplate(group,
+ 					  "SELECT <column> FROM PERSON "+
+ 					  "<if(cond)>WHERE ID=<id><endif>;");
+ 		t.setAttribute("column", "name");
+@@ -1600,8 +1600,8 @@ public class TestStringTemplate extends
+ 	public void testIFCondWithParensTemplate() throws Exception {
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
+-			new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t =
++			new org.antlr.stringtemplate.StringTemplate(group,
+ 				"<if(map.(type))><type> <prop>=<map.(type)>;<endif>");
+ 		HashMap map = new HashMap();
+ 		map.put("int","0");
+@@ -1614,8 +1614,8 @@ public class TestStringTemplate extends
+ 	public void testIFCondWithParensDollarDelimsTemplate() throws Exception {
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".");
+-		StringTemplate t =
+-			new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t =
++			new org.antlr.stringtemplate.StringTemplate(group,
+ 				"$if(map.(type))$$type$ $prop$=$map.(type)$;$endif$");
+ 		HashMap map = new HashMap();
+ 		map.put("int","0");
+@@ -1629,8 +1629,8 @@ public class TestStringTemplate extends
+ 	public void testIFBoolean() throws Exception {
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".");
+-		StringTemplate t =
+-			new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t =
++			new org.antlr.stringtemplate.StringTemplate(group,
+ 					  "$if(b)$x$endif$ $if(!b)$y$endif$");
+ 		t.setAttribute("b", new Boolean(true));
+ 		assertEquals(t.toString(), "x ");
+@@ -1643,8 +1643,8 @@ public class TestStringTemplate extends
+     public void testNestedIFTemplate() throws Exception {        
+         StringTemplateGroup group =
+             new StringTemplateGroup("dummy", ".", AngleBracketTemplateLexer.class);
+-        StringTemplate t =
+-            new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate t =
++            new org.antlr.stringtemplate.StringTemplate(group,
+                 "ack<if(a)>"+newline+
+                 "foo"+newline+
+                 "<if(!b)>stuff<endif>"+newline+
+@@ -1665,8 +1665,8 @@ public class TestStringTemplate extends
+     public void testIFConditionWithTemplateApplication() throws Exception {
+         StringTemplateGroup group =
+             new StringTemplateGroup("dummy", ".");
+-        StringTemplate t =
+-            new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate t =
++            new org.antlr.stringtemplate.StringTemplate(group,
+                       "$if(names:{$it$})$Fail!$endif$ $if(!names:{$it$})$Works!$endif$");
+         t.setAttribute("b", new Boolean(true));
+         assertEquals(t.toString(), " Works!");
+@@ -1696,8 +1696,8 @@ public class TestStringTemplate extends
+     public void testObjectPropertyReference() throws Exception {
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+-        StringTemplate t =
+-                new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate t =
++                new org.antlr.stringtemplate.StringTemplate(
+                         group,
+                         "<b>Name: $p.firstName$ $p.lastName$</b><br>"+newline+
+                         "<b>Email: $p.email$</b><br>"+newline+
+@@ -1718,8 +1718,8 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+             new StringTemplateGroup("dummy", ".");
+         group.defineTemplate("link", "<a href=\"$url$\"><b>$title$</b></a>");
+-        StringTemplate duh =
+-            new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate duh =
++            new org.antlr.stringtemplate.StringTemplate(group,
+         "start|$p:{$link(url=\"/member/view?ID=\"+it.ID, title=it.firstName)$ $if(it.canEdit)$canEdit$endif$}:"+
+         "{$it$<br>\n}$|end");
+         duh.setAttribute("p", new Connector());
+@@ -1763,7 +1763,7 @@ public class TestStringTemplate extends
+ 		"<else>" +
+ 		  "<it.text>" +
+ 		"<endif>");
+-		StringTemplate tree = group.getInstanceOf("tree");
++		org.antlr.stringtemplate.StringTemplate tree = group.getInstanceOf("tree");
+ 		// build ( a b (c d) e )
+ 		Tree root = new Tree("a");
+ 		root.addChild(new Tree("b"));
+@@ -1779,8 +1779,8 @@ public class TestStringTemplate extends
+     public void testNestedAnonymousTemplates() throws Exception {
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+-        StringTemplate t =
+-                new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate t =
++                new org.antlr.stringtemplate.StringTemplate(
+                         group,
+                         "$A:{" + newline +
+                           "<i>$it:{" + newline +
+@@ -1799,8 +1799,8 @@ public class TestStringTemplate extends
+     public void testAnonymousTemplateAccessToEnclosingAttributes() throws Exception {
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+-        StringTemplate t =
+-                new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate t =
++                new org.antlr.stringtemplate.StringTemplate(
+                         group,
+                         "$A:{" + newline +
+                           "<i>$it:{" + newline +
+@@ -1821,8 +1821,8 @@ public class TestStringTemplate extends
+ 
+         StringTemplateGroup group =
+                 new StringTemplateGroup("dummy", ".");
+-        StringTemplate t =
+-                new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate t =
++                new org.antlr.stringtemplate.StringTemplate(
+                         group,
+                         "<table>"+newline +
+                         "$names:{<tr>$it:{<td>$it:{<b>$it$</b>}$</td>}$</tr>}$"+newline +
+@@ -1841,18 +1841,18 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("dummy", ".");		
+ 		group.defineTemplate("foo", "$x$ && $it$");
+-		StringTemplate t =
+-				new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate t =
++				new org.antlr.stringtemplate.StringTemplate(
+ 						group,
+ 						"$A:foo(x=\"dog\\\"\\\"\")$" // $A:foo("dog\"\"")$
+ 				);
+-		StringTemplate u =
+-				new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate u =
++				new org.antlr.stringtemplate.StringTemplate(
+ 						group,
+ 						"$A:foo(x=\"dog\\\"g\")$" // $A:foo(x="dog\"g")$
+ 				);
+-		StringTemplate v =
+-				new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate v =
++				new org.antlr.stringtemplate.StringTemplate(
+ 						group,
+ 						// $A:{$attr:foo(x="\{dog\}\"")$ is cool}$
+ 						"$A:{$it:foo(x=\"\\{dog\\}\\\"\")$ is cool}$"
+@@ -1872,7 +1872,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+     public void testEscapesOutsideExpressions() throws Exception {
+-        StringTemplate b = new StringTemplate("It\\'s ok...\\$; $a:{\\'hi\\', $it$}$");
++        org.antlr.stringtemplate.StringTemplate b = new org.antlr.stringtemplate.StringTemplate("It\\'s ok...\\$; $a:{\\'hi\\', $it$}$");
+         b.setAttribute("a", "Ter");
+         String expecting ="It\\'s ok...$; \\'hi\\', Ter";
+         String result = b.toString();
+@@ -1880,7 +1880,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testElseClause() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "$if(title)$"+newline +
+                 "foo"+newline +
+                 "$else$"+newline +
+@@ -1897,7 +1897,7 @@ public class TestStringTemplate extends
+     }
+ 
+ 	public void testElseIfClause() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$if(x)$"+newline +
+ 				"foo"+newline +
+ 				"$elseif(y)$"+newline +
+@@ -1910,7 +1910,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+     public void testElseIfClauseAngleBrackets() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "<if(x)>"+newline +
+                 "foo"+newline +
+                 "<elseif(y)>"+newline +
+@@ -1924,7 +1924,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testElseIfClause2() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$if(x)$"+newline +
+ 				"foo"+newline +
+ 				"$elseif(y)$"+newline +
+@@ -1939,7 +1939,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testElseIfClauseAndElse() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$if(x)$"+newline +
+ 				"foo"+newline +
+ 				"$elseif(y)$"+newline +
+@@ -1955,7 +1955,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testNestedIF() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$if(title)$"+newline +
+ 				"foo"+newline +
+ 				"$else$"+newline +
+@@ -1983,8 +1983,8 @@ public class TestStringTemplate extends
+ 	public void testEmbeddedMultiLineIF() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test");
+-		StringTemplate main = new StringTemplate(group, "$sub$");
+-		StringTemplate sub = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate main = new org.antlr.stringtemplate.StringTemplate(group, "$sub$");
++		org.antlr.stringtemplate.StringTemplate sub = new org.antlr.stringtemplate.StringTemplate(group,
+ 				"begin" + newline +
+ 				"$if(foo)$" + newline +
+ 				"$foo$" + newline +
+@@ -1999,7 +1999,7 @@ public class TestStringTemplate extends
+ 			"stuff";
+ 		assertEquals(expecting, main.toString());
+ 
+-		main = new StringTemplate(group, "$sub$");
++		main = new org.antlr.stringtemplate.StringTemplate(group, "$sub$");
+ 		sub = sub.getInstanceOf();
+ 		main.setAttribute("sub", sub);
+ 		expecting =
+@@ -2021,7 +2021,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class,
+ 										errors);
+-        StringTemplate t = group.getInstanceOf("list");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("list");
+         t.setAttribute("names", "Terence");
+         t.setAttribute("names", "Jim");
+         t.setAttribute("names", "Sriram");
+@@ -2045,7 +2045,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class,
+ 										errors);
+-        StringTemplate t = group.getInstanceOf("list");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("list");
+         t.setAttribute("names", "Terence\nis\na\nmaniac");
+         t.setAttribute("names", "Jim");
+         t.setAttribute("names", "Sriram\nis\ncool");
+@@ -2074,7 +2074,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class,
+ 										errors);
+-		StringTemplate t = group.getInstanceOf("list");
++		org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("list");
+ 		t.setAttribute("names", "Terence\n\nis a maniac");
+ 		String expecting =
+ 				"  Terence"+newline+
+@@ -2098,7 +2098,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class,
+ 										errors);
+-        StringTemplate t = group.getInstanceOf("list");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("list");
+         t.setAttribute("names", "Terence");
+         t.setAttribute("names", "Jim");
+         t.setAttribute("names", "Sriram");
+@@ -2133,17 +2133,17 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class,
+ 										errors);
+-        StringTemplate t = group.getInstanceOf("method");
++        org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("method");
+         t.setAttribute("name", "foo");
+-        StringTemplate s1 = group.getInstanceOf("assign");
++        org.antlr.stringtemplate.StringTemplate s1 = group.getInstanceOf("assign");
+         s1.setAttribute("lhs", "x");
+         s1.setAttribute("expr", "0");
+-        StringTemplate s2 = group.getInstanceOf("ifstat");
++        org.antlr.stringtemplate.StringTemplate s2 = group.getInstanceOf("ifstat");
+         s2.setAttribute("expr", "x>0");
+-        StringTemplate s2a = group.getInstanceOf("assign");
++        org.antlr.stringtemplate.StringTemplate s2a = group.getInstanceOf("assign");
+         s2a.setAttribute("lhs", "y");
+         s2a.setAttribute("expr", "x+y");
+-        StringTemplate s2b = group.getInstanceOf("assign");
++        org.antlr.stringtemplate.StringTemplate s2b = group.getInstanceOf("assign");
+         s2b.setAttribute("lhs", "z");
+         s2b.setAttribute("expr", "4");
+         s2.setAttribute("stats", s2a);
+@@ -2191,15 +2191,15 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test");
+ 		group.defineTemplate("bold", "<b>$x$</b>");
+-		StringTemplate name = new StringTemplate(group, "$name:bold(x=name)$");
++		org.antlr.stringtemplate.StringTemplate name = new org.antlr.stringtemplate.StringTemplate(group, "$name:bold(x=name)$");
+ 		name.setAttribute("name", "Terence");
+ 		name.write(w);
+ 		assertEquals("<b>Terence</b>", buf.toString());
+ 	}
+ 
+ 	public void testApplyAnonymousTemplateToMapAndSet() throws Exception {
+-		StringTemplate st =
+-				new StringTemplate("$items:{<li>$it$</li>}$");
++		org.antlr.stringtemplate.StringTemplate st =
++				new org.antlr.stringtemplate.StringTemplate("$items:{<li>$it$</li>}$");
+ 		Map m = new LinkedHashMap();
+ 		m.put("a", "1");
+ 		m.put("b", "2");
+@@ -2219,8 +2219,8 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testDumpMapAndSet() throws Exception {
+-		StringTemplate st =
+-				new StringTemplate("$items; separator=\",\"$");
++		org.antlr.stringtemplate.StringTemplate st =
++				new org.antlr.stringtemplate.StringTemplate("$items; separator=\",\"$");
+ 		Map m = new LinkedHashMap();
+ 		m.put("a", "1");
+ 		m.put("b", "2");
+@@ -2247,13 +2247,13 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testApplyAnonymousTemplateToArrayAndMapProperty() throws Exception {
+-		StringTemplate st =
+-				new StringTemplate("$x.values:{<li>$it$</li>}$");
++		org.antlr.stringtemplate.StringTemplate st =
++				new org.antlr.stringtemplate.StringTemplate("$x.values:{<li>$it$</li>}$");
+ 		st.setAttribute("x", new Connector3());
+ 		String expecting = "<li>1</li><li>2</li><li>3</li>";
+ 		assertEquals(expecting, st.toString());
+ 
+-		st = new StringTemplate("$x.stuff:{<li>$it$</li>}$");
++		st = new org.antlr.stringtemplate.StringTemplate("$x.stuff:{<li>$it$</li>}$");
+ 		st.setAttribute("x", new Connector3());
+ 		expecting = "<li>1</li><li>2</li>";
+ 		assertEquals(expecting, st.toString());
+@@ -2269,7 +2269,7 @@ public class TestStringTemplate extends
+         group.defineTemplate("page", "$font()$:text");
+         group.defineTemplate("font", "Helvetica");
+         subGroup.defineTemplate("font", "$super.font()$ and Times");
+-        StringTemplate st = subGroup.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate st = subGroup.getInstanceOf("page");
+         String expecting =
+                 "Helvetica and Times:text";
+         assertEquals(expecting, st.toString());
+@@ -2284,7 +2284,7 @@ public class TestStringTemplate extends
+         group.defineTemplate("bold", "<b>$it$</b>");
+         subGroup.defineTemplate("bold", "<strong>$it$</strong>");
+         subGroup.defineTemplate("page", "$name:super.bold()$");
+-        StringTemplate st = subGroup.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate st = subGroup.getInstanceOf("page");
+         st.setAttribute("name", "Ter");
+         String expecting =
+                 "<b>Ter</b>";
+@@ -2308,7 +2308,7 @@ public class TestStringTemplate extends
+         // of page in group not subGroup, however, I will get
+         // an error as superGroup is null for group "group".
+         group.defineTemplate("page", "$name:super.bold()$");
+-        StringTemplate st = subGroup.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate st = subGroup.getInstanceOf("page");
+         st.setAttribute("name", "Ter");
+ 		String error = null;
+ 		try {
+@@ -2334,7 +2334,7 @@ public class TestStringTemplate extends
+         group.defineTemplate("bold", "<b>$it$</b>");
+         group.defineTemplate("page", "$name:bold()$");
+         subGroup.defineTemplate("bold", "<strong>$it$</strong>");
+-        StringTemplate st = subGroup.getInstanceOf("page");
++        org.antlr.stringtemplate.StringTemplate st = subGroup.getInstanceOf("page");
+         st.setAttribute("name", "Ter");
+         String expecting =
+                 "<strong>Ter</strong>";
+@@ -2353,10 +2353,10 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class,
+ 										errors);
+-        StringTemplate outputST = group.getInstanceOf("output");
+-        StringTemplate bodyST1 = group.getInstanceOf("mybody");
+-        StringTemplate bodyST2 = group.getInstanceOf("mybody");
+-        StringTemplate bodyST3 = group.getInstanceOf("mybody");
++        org.antlr.stringtemplate.StringTemplate outputST = group.getInstanceOf("output");
++        org.antlr.stringtemplate.StringTemplate bodyST1 = group.getInstanceOf("mybody");
++        org.antlr.stringtemplate.StringTemplate bodyST2 = group.getInstanceOf("mybody");
++        org.antlr.stringtemplate.StringTemplate bodyST3 = group.getInstanceOf("mybody");
+         outputST.setAttribute("items", bodyST1);
+         outputST.setAttribute("items", bodyST2);
+         outputST.setAttribute("items", bodyST3);
+@@ -2373,7 +2373,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate b = group.getInstanceOf("block");
++        org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("block");
+         b.setAttribute("stats", group.getInstanceOf("ifstat"));
+         b.setAttribute("stats", group.getInstanceOf("ifstat"));
+         String expecting = "IF true then IF true then ";
+@@ -2391,12 +2391,12 @@ public class TestStringTemplate extends
+                 "block(stats) ::= \"<stats>\"" +
+                 "ifstat(stats) ::= \"IF true then <stats>\""+newline
+                 ;
+-        StringTemplate.setLintMode(true);
+-        StringTemplate.resetTemplateCounter();
++        org.antlr.stringtemplate.StringTemplate.setLintMode(true);
++        org.antlr.stringtemplate.StringTemplate.resetTemplateCounter();
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate b = group.getInstanceOf("block");
+-        StringTemplate ifstat = group.getInstanceOf("ifstat");
++        org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("block");
++        org.antlr.stringtemplate.StringTemplate ifstat = group.getInstanceOf("ifstat");
+         b.setAttribute("stats", ifstat); // block has if stat
+         ifstat.setAttribute("stats", b); // but make "if" contain block
+         String expectingError =
+@@ -2418,7 +2418,7 @@ public class TestStringTemplate extends
+         }
+         //System.err.println("errors="+errors+"'");
+         //System.err.println("expecting="+expectingError+"'");
+-        StringTemplate.setLintMode(false);
++        org.antlr.stringtemplate.StringTemplate.setLintMode(false);
+         assertEquals(expectingError, errors);
+     }
+ 
+@@ -2433,7 +2433,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate b = group.getInstanceOf("block");
++        org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("block");
+         b.setAttribute("stats", group.getInstanceOf("block"));
+         String expecting ="{{}}";
+         String result = b.toString();
+@@ -2450,7 +2450,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate b = group.getInstanceOf("other");  // alias for page
++        org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("other");  // alias for page
+         b.setAttribute("name", "Ter");
+         String expecting ="name is Ter";
+         String result = b.toString();
+@@ -2473,9 +2473,9 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate b = group.getInstanceOf("Cfile");
+-        StringTemplate f1 = group.getInstanceOf("func");
+-        StringTemplate f2 = group.getInstanceOf("func");
++        org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("Cfile");
++        org.antlr.stringtemplate.StringTemplate f1 = group.getInstanceOf("func");
++        org.antlr.stringtemplate.StringTemplate f2 = group.getInstanceOf("func");
+         f1.setAttribute("name", "f");
+         f1.setAttribute("args", "");
+         f1.setAttribute("body", "i=1;");
+@@ -2512,7 +2512,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate f = group.getInstanceOf("file");
++		org.antlr.stringtemplate.StringTemplate f = group.getInstanceOf("file");
+ 		f.setAttribute("variables.{decl,format}", new Decl("i","int"), "intdecl");
+ 		f.setAttribute("variables.{decl,format}", new Decl("a","int-array"), "intarray");
+ 		//System.out.println("f='"+f+"'");
+@@ -2533,7 +2533,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate f = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate f = group.getInstanceOf("test");
+ 		f.setAttribute("name", "first");
+ 		String expecting = "the first";
+ 		assertEquals(expecting, f.toString());
+@@ -2551,7 +2551,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate f = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate f = group.getInstanceOf("test");
+ 		f.setAttribute("name", "first");
+ 		String expecting = "the first: foo";
+ 		assertEquals(f.toString(), expecting);
+@@ -2568,7 +2568,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate f = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate f = group.getInstanceOf("test");
+ 		f.setAttribute("names", "me");
+ 		f.setAttribute("names", "you");
+ 		String expecting = "";
+@@ -2587,14 +2587,14 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate f = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate f = group.getInstanceOf("test");
+ 		//f.setAttribute("name", "first");
+ 		String expecting = "";
+ 		assertEquals(expecting, f.toString());
+ 	}
+ 
+ 	public void testHashMapPropertyFetch() throws Exception {
+-		StringTemplate a = new StringTemplate("$stuff.prop$");
++		org.antlr.stringtemplate.StringTemplate a = new org.antlr.stringtemplate.StringTemplate("$stuff.prop$");
+ 		HashMap map = new HashMap();
+ 		a.setAttribute("stuff", map);
+ 		map.put("prop", "Terence");
+@@ -2605,11 +2605,11 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testHashMapPropertyFetchEmbeddedStringTemplate() throws Exception {
+-		StringTemplate a = new StringTemplate("$stuff.prop$");
++		org.antlr.stringtemplate.StringTemplate a = new org.antlr.stringtemplate.StringTemplate("$stuff.prop$");
+ 		HashMap map = new HashMap();
+ 		a.setAttribute("stuff", map);
+ 		a.setAttribute("title", "ST rocks");
+-		map.put("prop", new StringTemplate("embedded refers to $title$"));
++		map.put("prop", new org.antlr.stringtemplate.StringTemplate("embedded refers to $title$"));
+ 		String results = a.toString();
+ 		//System.out.println(results);
+ 		String expecting = "embedded refers to ST rocks";
+@@ -2617,14 +2617,14 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testEmbeddedComments() throws Exception {
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo $! ignore !$bar" +newline
+ 				);
+ 		String expecting ="Foo bar"+newline;
+ 		String result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo $! ignore" +newline+
+ 				" and a line break!$" +newline+
+ 				"bar" +newline
+@@ -2633,7 +2633,7 @@ public class TestStringTemplate extends
+ 		result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"$! start of line $ and $! ick" +newline+
+ 				"!$boo"+newline
+ 				);
+@@ -2641,7 +2641,7 @@ public class TestStringTemplate extends
+ 		result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 			"$! start of line !$" +newline+
+ 			"$! another to ignore !$" +newline+
+ 			"$! ick" +newline+
+@@ -2651,7 +2651,7 @@ public class TestStringTemplate extends
+ 		result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 			"$! back !$$! to back !$" +newline+ // can't detect; leaves \n
+ 			"$! ick" +newline+
+ 			"!$boo"+newline
+@@ -2662,7 +2662,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testEmbeddedCommentsAngleBracketed() throws Exception {
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo <! ignore !>bar" +newline,
+ 				AngleBracketTemplateLexer.class
+ 				);
+@@ -2670,7 +2670,7 @@ public class TestStringTemplate extends
+ 		String result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo <! ignore" +newline+
+ 				" and a line break!>" +newline+
+ 				"bar" +newline,
+@@ -2680,7 +2680,7 @@ public class TestStringTemplate extends
+ 		result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"<! start of line $ and <! ick" +newline+
+ 				"!>boo"+newline,
+ 				AngleBracketTemplateLexer.class
+@@ -2689,7 +2689,7 @@ public class TestStringTemplate extends
+ 		result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 			"<! start of line !>" +
+ 			"<! another to ignore !>" +
+ 			"<! ick" +newline+
+@@ -2701,7 +2701,7 @@ public class TestStringTemplate extends
+ 		//System.out.println(result);
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 			"<! back !><! to back !>" +newline+ // can't detect; leaves \n
+ 			"<! ick" +newline+
+ 			"!>boo"+newline,
+@@ -2713,7 +2713,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+     public void testLineBreak() throws Exception {
+-        StringTemplate st = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+                 "Foo <\\\\>"+newline+
+                 "  \t  bar" +newline,
+                 AngleBracketTemplateLexer.class
+@@ -2726,7 +2726,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testLineBreak2() throws Exception {
+-        StringTemplate st = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+                 "Foo <\\\\>       "+newline+
+                 "  \t  bar" +newline,
+                 AngleBracketTemplateLexer.class
+@@ -2739,7 +2739,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testLineBreakNoWhiteSpace() throws Exception {
+-        StringTemplate st = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+                 "Foo <\\\\>"+newline+
+                 "bar" +newline,
+                 AngleBracketTemplateLexer.class
+@@ -2752,7 +2752,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testLineBreakDollar() throws Exception {
+-        StringTemplate st = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+                 "Foo $\\\\$"+newline+
+                 "  \t  bar" +newline,
+                 DefaultTemplateLexer.class
+@@ -2765,7 +2765,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testLineBreakDollar2() throws Exception {
+-        StringTemplate st = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+                 "Foo $\\\\$          "+newline+
+                 "  \t  bar" +newline,
+                 DefaultTemplateLexer.class
+@@ -2778,7 +2778,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testLineBreakNoWhiteSpaceDollar() throws Exception {
+-        StringTemplate st = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+                 "Foo $\\\\$"+newline+
+                 "bar" +newline,
+                 DefaultTemplateLexer.class
+@@ -2791,7 +2791,7 @@ public class TestStringTemplate extends
+     }
+ 
+ 	public void testCharLiterals() throws Exception {
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo <\\r\\n><\\n><\\t> bar" +newline,
+ 				AngleBracketTemplateLexer.class
+ 				);
+@@ -2801,7 +2801,7 @@ public class TestStringTemplate extends
+ 		String expecting ="Foo \n\n\t bar"+newline;     // expect \n in output
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo $\\n$$\\t$ bar" +newline);
+ 		sw = new StringWriter();
+ 		st.write(new AutoIndentWriter(sw,"\n")); // force \n as newline
+@@ -2809,7 +2809,7 @@ public class TestStringTemplate extends
+ 		result = sw.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo$\\ $bar$\\n$");
+ 		sw = new StringWriter();
+ 		st.write(new AutoIndentWriter(sw,"\n")); // force \n as newline
+@@ -2819,7 +2819,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testNewlineNormalizationInTemplateString() throws Exception {
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo\r\n"+
+ 				"Bar\n",
+ 				AngleBracketTemplateLexer.class
+@@ -2832,7 +2832,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testNewlineNormalizationInTemplateStringPC() throws Exception {
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo\r\n"+
+ 				"Bar\n",
+ 				AngleBracketTemplateLexer.class
+@@ -2845,7 +2845,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testNewlineNormalizationInAttribute() throws Exception {
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo\r\n"+
+ 				"<name>\n",
+ 				AngleBracketTemplateLexer.class
+@@ -2859,7 +2859,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testUnicodeLiterals() throws Exception {
+-		StringTemplate st = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo <\\uFEA5\\n\\u00C2> bar" +newline,
+ 				AngleBracketTemplateLexer.class
+ 				);
+@@ -2867,13 +2867,13 @@ public class TestStringTemplate extends
+ 		String result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo $\\uFEA5\\n\\u00C2$ bar" +newline);
+ 		expecting ="Foo \ufea5"+newline+"\u00C2 bar"+newline;
+ 		result = st.toString();
+ 		assertEquals(expecting, result);
+ 
+-		st = new StringTemplate(
++		st = new org.antlr.stringtemplate.StringTemplate(
+ 				"Foo$\\ $bar$\\n$");
+ 		expecting ="Foo bar"+newline;
+ 		result = st.toString();
+@@ -2886,7 +2886,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group, "$names; separator=\",\"$");
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$names; separator=\",\"$");
+ 		t.setAttribute("names", "Terence");
+ 		t.setAttribute("names", "");
+ 		t.setAttribute("names", "");
+@@ -2904,7 +2904,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+         StringTemplateErrorListener errors = new ErrorBuffer();
+         group.setErrorListener(errors);
+-        StringTemplate t = new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+             "$users:{$if(it.ok)$$it.name$$endif$}; separator=\",\"$");
+         t.setAttribute("users.{name,ok}", "Terence", new Boolean(true));
+         t.setAttribute("users.{name,ok}", "Tom", new Boolean(false));
+@@ -2921,7 +2921,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+         StringTemplateErrorListener errors = new ErrorBuffer();
+         group.setErrorListener(errors);
+-        StringTemplate t = new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+             "$users:{$if(it.ok)$$it.name$$endif$}; separator=\",\"$");
+         t.setAttribute("users.{name,ok}", "Terence", new Boolean(true));
+         t.setAttribute("users.{name,ok}", "Tom", new Boolean(false));
+@@ -2938,7 +2938,7 @@ public class TestStringTemplate extends
+                 new StringTemplateGroup("test");
+         StringTemplateErrorListener errors = new ErrorBuffer();
+         group.setErrorListener(errors);
+-        StringTemplate t = new StringTemplate(group,
++        org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+             "$users:{$if(it.ok)$$it.name$$endif$$if(it.ok)$$it.name$$endif$}; separator=\",\"$");
+         t.setAttribute("users.{name,ok}", "Terence", new Boolean(false));
+         t.setAttribute("users.{name,ok}", "Tom", new Boolean(true));
+@@ -2955,7 +2955,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"$users:{$if(it.ok)$$it.name$$else$$endif$}; separator=\",\"$");
+ 		t.setAttribute("users.{name,ok}", "Terence", new Boolean(true));
+ 		t.setAttribute("users.{name,ok}", "Tom", new Boolean(false));
+@@ -2969,8 +2969,8 @@ public class TestStringTemplate extends
+ 
+ 	public void testWhiteSpaceAtEndOfTemplate() throws Exception {
+ 		StringTemplateGroup group = new StringTemplateGroup("group");
+-		StringTemplate pageST = group.getInstanceOf("org/antlr/stringtemplate/test/page");
+-		StringTemplate listST = group.getInstanceOf("org/antlr/stringtemplate/test/users_list");
++		org.antlr.stringtemplate.StringTemplate pageST = group.getInstanceOf("org/antlr/stringtemplate/test/page");
++		org.antlr.stringtemplate.StringTemplate listST = group.getInstanceOf("org/antlr/stringtemplate/test/users_list");
+ 		// users.list references row.st which has a single blank line at the end.
+ 		// I.e., there are 2 \n in a row at the end
+ 		// ST should eat all whitespace at end
+@@ -2994,7 +2994,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"begin\n" +
+ 			"$duh.users:{name: $it$}; separator=\", \"$\n" +
+ 			"end\n");
+@@ -3009,7 +3009,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"begin\n" +
+ 			"$users:{name: $it$}; separator=\", \"$\n" +
+ 			"end\n");
+@@ -3024,7 +3024,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"begin\n" +
+ 			"$users:{name: $it$}; separator=\", \"$\n" +
+ 			"end\n");
+@@ -3039,7 +3039,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"begin\n" +
+ 			"$users; separator=\", \"$\n" +
+ 			"end\n");
+@@ -3055,7 +3055,7 @@ public class TestStringTemplate extends
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+ 		group.defineTemplate("bold", "<b>$it$</b>");
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"$users$\n" +
+ 			"end\n");
+ 		String expecting="end\n";
+@@ -3068,7 +3068,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"begin\n"+
+ 			"$name$\n"+
+ 			"$users:{name: $it$}$\n"+
+@@ -3084,7 +3084,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"begin\n"+
+ 			"  $name$\n"+
+ 			"	$users:{name: $it$}$\n"+
+@@ -3096,7 +3096,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testSimpleAutoIndent() throws Exception {
+-		StringTemplate a = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate a = new org.antlr.stringtemplate.StringTemplate(
+ 			"$title$: {\n" +
+ 			"	$name; separator=\"\n\"$\n" +
+ 			"}");
+@@ -3118,7 +3118,7 @@ public class TestStringTemplate extends
+ 				new StringTemplateGroup("test");
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+ 		group.setErrorListener(errors);
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"variable property $propName$=$v.(propName)$");
+ 		t.setAttribute("v", new Decl("i","int"));
+ 		t.setAttribute("propName", "type");
+@@ -3131,7 +3131,7 @@ public class TestStringTemplate extends
+ 	public void testNonNullButEmptyIteratorTestsFalse() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test");
+-		StringTemplate t = new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"$if(users)$\n" +
+ 			"Users: $users:{$it.name$ }$\n" +
+ 			"$endif$");
+@@ -3151,7 +3151,7 @@ public class TestStringTemplate extends
+ 		// somehow, it must be set.
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		String expecting = "x=y; // ";
+ 		String result = b.toString();
+@@ -3172,7 +3172,7 @@ public class TestStringTemplate extends
+ 		// is evaluated in the context of stat's arg list.
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		String expecting = "x=y; // foo";
+ 		String result = b.toString();
+@@ -3188,7 +3188,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		String expecting = "x=y; // foo";
+ 		String result = b.toString();
+@@ -3206,7 +3206,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		String expecting = "x=34; // foo";
+ 		String result = b.toString();
+@@ -3224,7 +3224,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		String expecting = "x=99; // foo";
+ 		String result = b.toString();
+@@ -3239,7 +3239,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("stat");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("stat");
+ 		b.setAttribute("name", "foo");
+ 		String expecting = "x=99; // foo";
+ 		String result = b.toString();
+@@ -3264,7 +3264,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate m = group.getInstanceOf("method");
++        org.antlr.stringtemplate.StringTemplate m = group.getInstanceOf("method");
+         m.setAttribute("fields", new Field());
+         String expecting = "x=parrt; // parrt";
+         String result = m.toString();
+@@ -3299,7 +3299,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate m = group.getInstanceOf("method");
++        org.antlr.stringtemplate.StringTemplate m = group.getInstanceOf("method");
+         m.setAttribute("fields", new Field());
+         String expecting = "x=parrt; // parrt";
+         String result = m.toString();
+@@ -3342,7 +3342,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		b.setAttribute("size", "2");
+ 		String expecting = "x=foo; // foo";
+@@ -3361,7 +3361,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		b.setAttribute("size", "2");
+ 		String expecting = "x= [foo] ; // foo";
+@@ -3380,7 +3380,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		String expecting = "x=34; // foo";
+ 		String result = b.toString();
+@@ -3399,7 +3399,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate b = group.getInstanceOf("A");
++        org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("A");
+         b.setAttribute("x", new Counter());
+         String expecting = "0 1 2 0";
+         String result = b.toString();
+@@ -3417,7 +3417,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		b.setAttribute("size", "34");
+ 		String expecting = "x=34;";
+@@ -3436,9 +3436,9 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate f = group.getInstanceOf("file");
++		org.antlr.stringtemplate.StringTemplate f = group.getInstanceOf("file");
+ 		f.setAttribute("size", "34");
+-		StringTemplate m = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate m = group.getInstanceOf("method");
+ 		m.setAttribute("name", "foo");
+ 		f.setAttribute("m", m);
+ 		String expecting = "x=34.0;";
+@@ -3457,7 +3457,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-		StringTemplate b = group.getInstanceOf("method");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("method");
+ 		b.setAttribute("name", "foo");
+ 		b.setAttribute("size", "34");
+ 		String expecting = "x=34;";
+@@ -3472,7 +3472,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate b = group.getInstanceOf("b");
++		org.antlr.stringtemplate.StringTemplate b = group.getInstanceOf("b");
+ 		String expecting = ".foo.";
+ 		String result = b.toString();
+ 		assertEquals(expecting, result);
+@@ -3522,7 +3522,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRendererForST() throws Exception {
+-		StringTemplate st =new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+ 				"date: <created>",
+ 				AngleBracketTemplateLexer.class);
+ 		st.setAttribute("created",
+@@ -3534,7 +3534,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRendererWithFormat() throws Exception {
+-		StringTemplate st =new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+ 				"date: <created; format=\"yyyy.MM.dd\">",
+ 				AngleBracketTemplateLexer.class);
+ 		st.setAttribute("created",
+@@ -3546,7 +3546,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRendererWithFormatAndList() throws Exception {
+-		StringTemplate st =new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+ 				"The names: <names; format=\"upper\">",
+ 				AngleBracketTemplateLexer.class);
+ 		st.setAttribute("names", "ter");
+@@ -3559,7 +3559,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRendererWithFormatAndSeparator() throws Exception {
+-		StringTemplate st =new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+ 				"The names: <names; separator=\" and \", format=\"upper\">",
+ 				AngleBracketTemplateLexer.class);
+ 		st.setAttribute("names", "ter");
+@@ -3572,7 +3572,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRendererWithFormatAndSeparatorAndNull() throws Exception {
+-		StringTemplate st =new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+ 				"The names: <names; separator=\" and \", null=\"n/a\", format=\"upper\">",
+ 				AngleBracketTemplateLexer.class);
+ 		List names = new ArrayList();
+@@ -3589,10 +3589,10 @@ public class TestStringTemplate extends
+ 	public void testEmbeddedRendererSeesEnclosing() throws Exception {
+ 		// st is embedded in outer; set renderer on outer, st should
+ 		// still see it.
+-		StringTemplate outer =new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate outer =new org.antlr.stringtemplate.StringTemplate(
+ 				"X: <x>",
+ 				AngleBracketTemplateLexer.class);
+-		StringTemplate st =new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+ 				"date: <created>",
+ 				AngleBracketTemplateLexer.class);
+ 		st.setAttribute("created",
+@@ -3611,7 +3611,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("dateThing");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("dateThing");
+ 		st.setAttribute("created",
+ 						new GregorianCalendar(2005, 07-1, 05));
+ 		group.registerRenderer(GregorianCalendar.class, new DateRenderer());
+@@ -3627,7 +3627,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("dateThing");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("dateThing");
+ 		st.setAttribute("created",
+ 						new GregorianCalendar(2005, 07-1, 05));
+ 		group.registerRenderer(GregorianCalendar.class, new DateRenderer());
+@@ -3645,7 +3645,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("type", "int");
+ 		st.setAttribute("name", "x");
+ 		String expecting = "int x = 0;";
+@@ -3661,7 +3661,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("w", "L");
+ 		st.setAttribute("type", "int");
+ 		st.setAttribute("name", "x");
+@@ -3681,9 +3681,9 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("w", "L");
+-		st.setAttribute("type", new StringTemplate("int"));
++		st.setAttribute("type", new org.antlr.stringtemplate.StringTemplate("int"));
+ 		st.setAttribute("name", "x");
+ 		String expecting = "int x = 0L;";
+ 		String result = st.toString();
+@@ -3698,7 +3698,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("w", "L");
+ 		st.setAttribute("type", "double"); // double not in typeInit map
+ 		st.setAttribute("name", "x");
+@@ -3715,7 +3715,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("type", "int");
+ 		st.setAttribute("name", "x");
+ 		String expecting = "int x = ;";
+@@ -3731,7 +3731,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("type", "float");
+ 		st.setAttribute("name", "x");
+ 		String expecting = "float x = ;";
+@@ -3747,7 +3747,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("type", "UserRecord");
+ 		st.setAttribute("name", "x");
+ 		String expecting = "UserRecord x = null;";
+@@ -3763,7 +3763,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("type", "UserRecord");
+ 		st.setAttribute("name", "x");
+ 		String expecting = "UserRecord x = ;";
+@@ -3779,7 +3779,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+ 		st.setAttribute("type", "UserRecord");
+ 		st.setAttribute("name", "x");
+ 		String expecting = "UserRecord x = UserRecord;";
+@@ -3800,7 +3800,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate st = group.getInstanceOf("var");
++        org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("var");
+         st.setAttribute("type", "default");
+         st.setAttribute("name", "x");
+         String expecting = "default x = foo;";
+@@ -3821,7 +3821,7 @@ public class TestStringTemplate extends
+                 ;
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+-        StringTemplate st = group.getInstanceOf("t1");
++        org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("t1");
+         String expecting = "default";
+         String result = st.toString();        
+         assertEquals(expecting, result);
+@@ -3836,7 +3836,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate st = group.getInstanceOf("intermediate");
++		org.antlr.stringtemplate.StringTemplate st = group.getInstanceOf("intermediate");
+ 		st.setAttribute("type", "int");
+ 		st.setAttribute("name", "x");
+ 		String expecting = "int x = 0;";
+@@ -3853,8 +3853,8 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate interm = group.getInstanceOf("intermediate");
+-		StringTemplate var = group.getInstanceOf("var");
++		org.antlr.stringtemplate.StringTemplate interm = group.getInstanceOf("intermediate");
++		org.antlr.stringtemplate.StringTemplate var = group.getInstanceOf("var");
+ 		var.setAttribute("type", "int");
+ 		var.setAttribute("name", "x");
+ 		interm.setAttribute("stuff", var);
+@@ -3870,7 +3870,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate a = group.getInstanceOf("foo");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("foo");
+ 		String expecting = "";
+ 		String result = a.toString();
+ 		assertEquals(expecting, result);
+@@ -3884,7 +3884,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate a = group.getInstanceOf("top");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("top");
+ 		String expecting = "a=, b=";
+ 		String result = a.toString();
+ 		assertEquals(expecting, result);
+@@ -3899,7 +3899,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-		StringTemplate a = group.getInstanceOf("top");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("top");
+ 		String expecting = "a=, b=";
+ 		String result = a.toString();
+ 		assertEquals(expecting, result);
+@@ -3911,7 +3911,7 @@ public class TestStringTemplate extends
+      *  Please correct to escape the correct charcter.
+      */
+ 	public void test8BitEuroChars() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"Danish: \u0143 char"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -3920,7 +3920,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void test16BitUnicodeChar() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"DINGBAT CIRCLED SANS-SERIF DIGIT ONE: \u2780"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -3929,7 +3929,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testFirstOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$first(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -3941,7 +3941,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testTruncOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$trunc(names); separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -3953,7 +3953,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+     public void testRestOp() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "$rest(names); separator=\", \"$"
+             );
+         e = e.getInstanceOf();
+@@ -3965,7 +3965,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testRestOpEmptyList() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "$rest(names); separator=\", \"$"
+             );
+         e = e.getInstanceOf();
+@@ -3982,7 +3982,7 @@ public class TestStringTemplate extends
+ 			;
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate e = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("a");
+ 		List names = new ArrayList();
+ 		names.add("Ter");
+ 		names.add("Tom");
+@@ -3992,7 +3992,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLastOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$last(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4005,7 +4005,7 @@ public class TestStringTemplate extends
+ 
+ 	public void testCombinedOp() throws Exception {
+ 		// replace first of yours with first of mine
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[first(mine),rest(yours)]; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4020,7 +4020,7 @@ public class TestStringTemplate extends
+ 
+ 	public void testCatListAndSingleAttribute() throws Exception {
+ 		// replace first of yours with first of mine
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[mine,yours]; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4040,7 +4040,7 @@ public class TestStringTemplate extends
+ 			;
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate e = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("a");
+ 		List mine = new ArrayList();
+ 		mine.add("Ter");
+ 		mine.add("Tom");
+@@ -4057,7 +4057,7 @@ public class TestStringTemplate extends
+ 		// two operands (from left to right) determine which way it
+ 		// goes.  In this case, x+mine is a list so everything from their
+ 		// to the right becomes list cat.
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[x,mine,y,yours,z]; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4070,7 +4070,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testNestedOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$first(rest(names))$" // gets 2nd element
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4082,7 +4082,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testFirstWithOneAttributeOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$first(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4092,7 +4092,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLastWithOneAttributeOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$last(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4102,7 +4102,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLastWithLengthOneListAttributeOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$last(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4112,7 +4112,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRestWithOneAttributeOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$rest(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4122,7 +4122,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRestWithLengthOneListAttributeOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$rest(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4132,7 +4132,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testRepeatedRestOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$rest(names)$, $rest(names)$" // gets 2nd element
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4156,7 +4156,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-		StringTemplate e = group.getInstanceOf("root");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("root");
+ 		List names = new ArrayList();
+ 		names.add("Ter");
+ 		names.add("Tom");
+@@ -4191,7 +4191,7 @@ public class TestStringTemplate extends
+ 	*/
+ 
+ 	public void testIncomingLists() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$rest(names)$, $rest(names)$" // gets 2nd element
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4202,7 +4202,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testIncomingListsAreNotModified() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names; separator=\", \"$" // gets 2nd element
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4218,7 +4218,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testIncomingListsAreNotModified2() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names; separator=\", \"$" // gets 2nd element
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4234,7 +4234,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testIncomingArraysAreOk() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names; separator=\", \"$" // gets 2nd element
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4251,7 +4251,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate e = group.getInstanceOf("f");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("f");
+ 		e.setAttribute("x", "Ter");
+ 		e.setAttribute("x", "Tom");
+ 		String expecting = "TerTom TerTom";
+@@ -4266,7 +4266,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("names", "Ter");
+ 		e.setAttribute("names", "Tom");
+ 		String expecting = "*Ter*, *Tom* ";
+@@ -4283,7 +4283,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 						AngleBracketTemplateLexer.class);
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("names", "Ter");
+ 		e.setAttribute("names", "Tom");
+ 		String expecting = "*Ter*, *Tom* ";
+@@ -4292,7 +4292,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testAnonTemplateArgs() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names:{n| $n$}; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4303,7 +4303,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testAnonTemplateWithArgHasNoITArg() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names:{n| $n$:$it$}; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4321,7 +4321,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testAnonTemplateArgs2() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names:{n| .$n$.}:{ n | _$n$_}; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4332,7 +4332,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testFirstWithCatAttribute() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$first([names,phones])$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4345,7 +4345,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testFirstWithListOfMaps() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$first(maps).Ter$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4388,7 +4388,7 @@ public class TestStringTemplate extends
+ 	}
+ */
+ 	public void testJustCat() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[names,phones]$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4401,7 +4401,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testCat2Attributes() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[names,phones]; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4414,7 +4414,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testCat2AttributesWithApply() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[names,phones]:{a|$a$.}$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4427,7 +4427,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testCat3Attributes() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[names,phones,salaries]; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4442,7 +4442,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+     public void testCatWithTemplateApplicationAsElement() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "$[names:{$it$!},phones]; separator=\", \"$"
+             );
+         e = e.getInstanceOf();
+@@ -4455,7 +4455,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testCatWithIFAsElement() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "$[{$if(names)$doh$endif$},phones]; separator=\", \"$"
+             );
+         e = e.getInstanceOf();
+@@ -4468,7 +4468,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testCatWithNullTemplateApplicationAsElement() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "$[names:{$it$!},\"foo\"]:{x}; separator=\", \"$"
+             );
+         e = e.getInstanceOf();
+@@ -4479,7 +4479,7 @@ public class TestStringTemplate extends
+     }
+ 
+     public void testCatWithNestedTemplateApplicationAsElement() throws Exception {
+-        StringTemplate e = new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+                 "$[names, [\"foo\",\"bar\"]:{$it$!},phones]; separator=\", \"$"
+             );
+         e = e.getInstanceOf();
+@@ -4500,7 +4500,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 						AngleBracketTemplateLexer.class);
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("names", "Ter");
+ 		e.setAttribute("names", "Tom");
+ 		e.setAttribute("phones", "1");
+@@ -4519,7 +4519,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 						AngleBracketTemplateLexer.class);
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("name", "Ter");
+ 		String expecting = "*Ter*";
+ 		String result = e.toString();
+@@ -4538,7 +4538,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 						AngleBracketTemplateLexer.class);
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("names", "Ter");
+ 		e.setAttribute("names", "Tom");
+ 		e.setAttribute("x", "ick");
+@@ -4557,7 +4557,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 						AngleBracketTemplateLexer.class);
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("names", "Ter");
+ 		e.setAttribute("names", "Tom");
+ 		String expecting = "*Ter*_Tom_";
+@@ -4575,7 +4575,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 						AngleBracketTemplateLexer.class, errors);
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("name", "Ter");
+ 		/*String result =*/ e.toString();
+ 		String expecting = "template bold must have exactly one formal arg in template context [test <invoke bold arg context>]";
+@@ -4591,7 +4591,7 @@ public class TestStringTemplate extends
+ 				;
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate e = group.getInstanceOf("test");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("test");
+ 		e.setAttribute("templateName", "italics");
+ 		e.setAttribute("arg", "Ter");
+ 		String expecting = "_Ter_";
+@@ -4600,7 +4600,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testParallelAttributeIteration() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names,phones,salaries:{n,p,s | $n$@$p$: $s$\n}$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4615,7 +4615,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testParallelAttributeIterationWithNullValue() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names,phones,salaries:{n,p,s | $n$@$p$: $s$\n}$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4633,7 +4633,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testParallelAttributeIterationHasI() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names,phones,salaries:{n,p,s | $i0$. $n$@$p$: $s$\n}$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4648,7 +4648,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testParallelAttributeIterationWithDifferentSizes() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names,phones,salaries:{n,p,s | $n$@$p$: $s$}; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4663,7 +4663,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testParallelAttributeIterationWithSingletons() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names,phones,salaries:{n,p,s | $n$@$p$: $s$}; separator=\", \"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -4676,7 +4676,7 @@ public class TestStringTemplate extends
+ 
+ 	public void testParallelAttributeIterationWithMismatchArgListSizes() throws Exception {
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names,phones,salaries:{n,p | $n$@$p$}; separator=\", \"$"
+ 			);
+ 		e.setErrorListener(errors);
+@@ -4694,7 +4694,7 @@ public class TestStringTemplate extends
+ 
+ 	public void testParallelAttributeIterationWithMissingArgs() throws Exception {
+ 		StringTemplateErrorListener errors = new ErrorBuffer();
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$names,phones,salaries:{$n$@$p$}; separator=\", \"$"
+ 			);
+ 		e.setErrorListener(errors);
+@@ -4716,7 +4716,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates),
+ 										DefaultTemplateLexer.class);
+-		StringTemplate p = group.getInstanceOf("page");
++		org.antlr.stringtemplate.StringTemplate p = group.getInstanceOf("page");
+ 		p.setAttribute("names", "Ter");
+ 		p.setAttribute("names", "Tom");
+ 		p.setAttribute("names", "Sriram");
+@@ -4728,7 +4728,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testAnonTemplateOnLeftOfApply() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"${foo}:{($it$)}$"
+ 			);
+ 		String expecting = "(foo)";
+@@ -4753,7 +4753,7 @@ public class TestStringTemplate extends
+ 									null,
+ 									group);
+ 
+-		StringTemplate b = subgroup.getInstanceOf("body");
++		org.antlr.stringtemplate.StringTemplate b = subgroup.getInstanceOf("body");
+ 		String expecting ="bar";
+ 		String result = b.toString();
+ 		assertEquals(expecting, result);
+@@ -4764,8 +4764,8 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testNonPublicPropertyAccess() throws Exception {
+-		StringTemplate st =
+-				new StringTemplate("$x.foo$:$x.bar$");
++		org.antlr.stringtemplate.StringTemplate st =
++				new org.antlr.stringtemplate.StringTemplate("$x.foo$:$x.bar$");
+ 		Object o = new Object() {
+ 			public int foo = 9;
+ 			public int getBar() { return 34; }
+@@ -4779,8 +4779,8 @@ public class TestStringTemplate extends
+ 	public void testIndexVar() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("dummy", ".");
+-		StringTemplate t =
+-				new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate t =
++				new org.antlr.stringtemplate.StringTemplate(
+ 						group,
+ 						"$A:{$i$. $it$}; separator=\"\\n\"$"
+ 				);
+@@ -4795,8 +4795,8 @@ public class TestStringTemplate extends
+ 	public void testIndex0Var() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("dummy", ".");
+-		StringTemplate t =
+-				new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate t =
++				new org.antlr.stringtemplate.StringTemplate(
+ 						group,
+ 						"$A:{$i0$. $it$}; separator=\"\\n\"$"
+ 				);
+@@ -4811,8 +4811,8 @@ public class TestStringTemplate extends
+ 	public void testIndexVarWithMultipleExprs() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("dummy", ".");
+-		StringTemplate t =
+-				new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate t =
++				new org.antlr.stringtemplate.StringTemplate(
+ 						group,
+ 						"$A,B:{a,b|$i$. $a$@$b$}; separator=\"\\n\"$"
+ 				);
+@@ -4829,8 +4829,8 @@ public class TestStringTemplate extends
+ 	public void testIndex0VarWithMultipleExprs() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("dummy", ".");
+-		StringTemplate t =
+-				new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate t =
++				new org.antlr.stringtemplate.StringTemplate(
+ 						group,
+ 						"$A,B:{a,b|$i0$. $a$@$b$}; separator=\"\\n\"$"
+ 				);
+@@ -4849,7 +4849,7 @@ public class TestStringTemplate extends
+ 		// context.  it can therefore see name.
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test");
+-		StringTemplate main = group.defineTemplate("main", "$foo(t={Hi, $name$}, name=\"parrt\")$");
++		org.antlr.stringtemplate.StringTemplate main = group.defineTemplate("main", "$foo(t={Hi, $name$}, name=\"parrt\")$");
+ 		/*StringTemplate foo =*/ group.defineTemplate("foo", "$t$");
+ 		String expecting="Hi, parrt";
+ 		assertEquals(expecting, main.toString());
+@@ -4857,7 +4857,7 @@ public class TestStringTemplate extends
+ 
+ 	public void testNoDotsInAttributeNames() throws Exception {
+ 		StringTemplateGroup group = new StringTemplateGroup("dummy", ".");
+-		StringTemplate t = new StringTemplate(group, "$user.Name$");
++		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group, "$user.Name$");
+ 		String error=null;
+ 		try {
+ 			t.setAttribute("user.Name", "Kunle");
+@@ -4890,7 +4890,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("array");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("array");
+ 		a.setAttribute("values",
+ 					   new int[] {3,9,20,2,1,4,6,32,5,6,77,888,2,1,6,32,5,6,77,
+ 						4,9,20,2,1,4,63,9,20,2,1,4,6,32,5,6,77,6,32,5,6,77,
+@@ -4910,7 +4910,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("array");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("array");
+ 		a.setAttribute("values",
+ 					   new int[] {3,9,20,2,1,4,6,32,5,6,77,888,2,1,6,32,5,6,77,
+ 						4,9,20,2,1,4,63,9,20,2,1,4,6,32,5,6,77,6,32,5,6,77,
+@@ -4936,7 +4936,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("array");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("array");
+ 		a.setAttribute("values",
+ 					   new int[] {3,9,20,2,1,4,6,32,5,6,77,888,2,1,6,32,5,6,77,
+ 						4,9,20,2,1,4,63,9,20,2,1,4,6,32,5,6,77,6,32,5,6,77,
+@@ -4957,11 +4957,11 @@ public class TestStringTemplate extends
+         StringTemplateGroup group =
+                 new StringTemplateGroup(new StringReader(templates));
+ 
+-        final StringTemplate x = new StringTemplate(group, "<\\n>{ <stuff; anchor, separator=\",\\n\"> }<\\n>");
++        final org.antlr.stringtemplate.StringTemplate x = new org.antlr.stringtemplate.StringTemplate(group, "<\\n>{ <stuff; anchor, separator=\",\\n\"> }<\\n>");
+         x.setAttribute("stuff", "1");
+         x.setAttribute("stuff", "2");
+         x.setAttribute("stuff", "3");
+-        StringTemplate a = group.getInstanceOf("array");
++        org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("array");
+         a.setAttribute("values", new ArrayList() {{
+             add("a"); add(x); add("b");
+         }});
+@@ -4981,7 +4981,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("func");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("func");
+ 		a.setAttribute("args",
+ 					   new String[] {"a","b","c","d","e","f"});
+ 		String expecting =
+@@ -4997,7 +4997,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("array");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("array");
+ 		a.setAttribute("values",
+ 					   new int[] {3,9,20,2,1,4,6,32,5,6,77,888,2,1,6,32,5,6,77,
+ 						4,9,20,2,1,4,63,9,20,2,1,4,6});
+@@ -5017,7 +5017,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("duh");
+ 		a.setAttribute("chars", new String[] {"a","b","c","d","e"});
+ 		// lineWidth==3 implies that we can have 3 characters at most
+ 		String expecting =
+@@ -5033,7 +5033,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("duh");
+ 		a.setAttribute("chars", new String[] {"a","b","\n","d","e"});
+ 		// don't do \n if it's last element anyway
+ 		String expecting =
+@@ -5049,7 +5049,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("duh");
+ 		a.setAttribute("chars", new String[] {"a","b","c","\n","d","e"});
+ 		// Once we wrap, we must dump chars as we see them.  A newline right
+ 		// after a wrap is just an "unfortunate" event.  People will expect
+@@ -5068,7 +5068,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("duh");
+ 		a.setAttribute("data", new int[] {1,2,3,4,5,6,7,8,9});
+ 		String expecting =
+ 			"![1][2][3]\n" + // width=9 is the 3 char; don't break til after ]
+@@ -5084,7 +5084,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("duh");
+ 		a.setAttribute("data", new int[] {1,2,3,4,5,6,7,8,9});
+ 		String expecting =
+ 			"![1][2][3]\n" +
+@@ -5101,8 +5101,8 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate t = group.getInstanceOf("top");
+-		StringTemplate s = group.getInstanceOf("str");
++		org.antlr.stringtemplate.StringTemplate t = group.getInstanceOf("top");
++		org.antlr.stringtemplate.StringTemplate s = group.getInstanceOf("str");
+ 		s.setAttribute("data", new int[] {1,2,3,4,5,6,7,8,9});
+ 		t.setAttribute("s", s);
+ 		String expecting =
+@@ -5121,7 +5121,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("duh");
+ 		a.setAttribute("chars", new String[] {"a","b","c","d","e"});
+ 		//
+ 		String expecting =
+@@ -5140,7 +5140,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("duh");
+ 		a.setAttribute("chars", new String[] {"a","b","c","d","e"});
+ 		//
+ 		String expecting =
+@@ -5159,8 +5159,8 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate top = group.getInstanceOf("top");
+-		StringTemplate duh = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate top = group.getInstanceOf("top");
++		org.antlr.stringtemplate.StringTemplate duh = group.getInstanceOf("duh");
+ 		duh.setAttribute("chars", new String[] {"a","b","c","d","e"});
+ 		top.setAttribute("d", duh);
+ 		String expecting =
+@@ -5179,8 +5179,8 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate top = group.getInstanceOf("top");
+-		StringTemplate duh = group.getInstanceOf("duh");
++		org.antlr.stringtemplate.StringTemplate top = group.getInstanceOf("top");
++		org.antlr.stringtemplate.StringTemplate duh = group.getInstanceOf("duh");
+ 		duh.setAttribute("chars", new String[] {"a","b","c","d","e"});
+ 		top.setAttribute("d", duh);
+ 		//
+@@ -5198,7 +5198,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate a = group.getInstanceOf("m");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("m");
+ 		a.setAttribute("args",
+ 					   new String[] {"a", "b", "c"});
+ 		a.setAttribute("body", "i=3;");
+@@ -5216,7 +5216,7 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate m = group.getInstanceOf("m");
++		org.antlr.stringtemplate.StringTemplate m = group.getInstanceOf("m");
+ 		m.setAttribute("body", "i=3;");
+ 		// make it wrap because of ") throws Ick { " literal
+ 		String expecting =
+@@ -5233,8 +5233,8 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup(new StringReader(templates));
+ 
+-		StringTemplate top = group.getInstanceOf("top");
+-		StringTemplate a = group.getInstanceOf("array");
++		org.antlr.stringtemplate.StringTemplate top = group.getInstanceOf("top");
++		org.antlr.stringtemplate.StringTemplate a = group.getInstanceOf("array");
+ 		a.setAttribute("values",
+ 					   new int[] {3,9,20,2,1,4,6,32,5,6,77,888,2,1,6,32,5,6,77,
+ 						4,9,20,2,1,4,63,9,20,2,1,4,6,32,5,6,77,6,32,5,6,77,
+@@ -5261,7 +5261,7 @@ public class TestStringTemplate extends
+     public void testBackslash() throws Exception {
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+-        StringTemplate t = group.defineTemplate("t", "\\");
++        org.antlr.stringtemplate.StringTemplate t = group.defineTemplate("t", "\\");
+         String expecting="\\";
+         assertEquals(expecting, t.toString());
+     }
+@@ -5269,7 +5269,7 @@ public class TestStringTemplate extends
+     public void testBackslash2() throws Exception {
+         StringTemplateGroup group =
+                 new StringTemplateGroup("test");
+-        StringTemplate t = group.defineTemplate("t", "\\ ");
++        org.antlr.stringtemplate.StringTemplate t = group.defineTemplate("t", "\\ ");
+         String expecting="\\ ";
+         assertEquals(expecting, t.toString());
+     }
+@@ -5277,7 +5277,7 @@ public class TestStringTemplate extends
+ 	public void testEscapeEscape() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test");
+-		StringTemplate t = group.defineTemplate("t", "\\\\$v$");
++		org.antlr.stringtemplate.StringTemplate t = group.defineTemplate("t", "\\\\$v$");
+ 		t.setAttribute("v", "Joe");
+ 		//System.out.println(t);
+ 		String expecting="\\Joe";
+@@ -5287,7 +5287,7 @@ public class TestStringTemplate extends
+ 	public void testEscapeEscapeNestedAngle() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t = group.defineTemplate("t", "<v:{a|\\\\<a>}>");
++		org.antlr.stringtemplate.StringTemplate t = group.defineTemplate("t", "<v:{a|\\\\<a>}>");
+ 		t.setAttribute("v", "Joe");
+ 		//System.out.println(t);
+ 		String expecting="\\Joe";
+@@ -5297,7 +5297,7 @@ public class TestStringTemplate extends
+ 	public void testListOfIntArrays() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data:array()>");
+ 		group.defineTemplate("array", "[<it:element(); separator=\",\">]");
+ 		group.defineTemplate("element", "<it>");
+@@ -5315,7 +5315,7 @@ public class TestStringTemplate extends
+ 	public void testNullOptionSingleNullValue() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data; null=\"0\">");
+ 		//System.out.println(t);
+ 		String expecting="0";
+@@ -5325,7 +5325,7 @@ public class TestStringTemplate extends
+ 	public void testNullOptionHasEmptyNullValue() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data; null=\"\", separator=\", \">");
+ 		List data = new ArrayList();
+ 		data.add(null);
+@@ -5338,7 +5338,7 @@ public class TestStringTemplate extends
+ 	public void testNullOptionSingleNullValueInList() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data; null=\"0\">");
+ 		List data = new ArrayList();
+ 		data.add(null);
+@@ -5351,7 +5351,7 @@ public class TestStringTemplate extends
+ 	public void testNullValueInList() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data; null=\"-1\", separator=\", \">");
+ 		List data = new ArrayList();
+ 		data.add(null);
+@@ -5369,7 +5369,7 @@ public class TestStringTemplate extends
+ 	public void testNullValueInListNoNullOption() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data; separator=\", \">");
+ 		List data = new ArrayList();
+ 		data.add(null);
+@@ -5387,7 +5387,7 @@ public class TestStringTemplate extends
+     public void testNullValueInListWithTemplateApply() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data:array(); null=\"-1\", separator=\", \">");
+ 		group.defineTemplate("array", "<it>");
+ 		List data = new ArrayList();
+@@ -5403,7 +5403,7 @@ public class TestStringTemplate extends
+ 	public void testNullValueInListWithTemplateApplyNullFirstValue() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data:array(); null=\"-1\", separator=\", \">");
+ 		group.defineTemplate("array", "<it>");
+ 		List data = new ArrayList();
+@@ -5419,7 +5419,7 @@ public class TestStringTemplate extends
+ 	public void testNullSingleValueInListWithTemplateApply() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data:array(); null=\"-1\", separator=\", \">");
+ 		group.defineTemplate("array", "<it>");
+ 		List data = new ArrayList();
+@@ -5432,7 +5432,7 @@ public class TestStringTemplate extends
+ 	public void testNullSingleValueWithTemplateApply() throws Exception {
+ 		StringTemplateGroup group =
+ 				new StringTemplateGroup("test", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
++		org.antlr.stringtemplate.StringTemplate t =
+ 			group.defineTemplate("t", "<data:array(); null=\"-1\", separator=\", \">");
+ 		group.defineTemplate("array", "<it>");
+ 		String expecting="-1";
+@@ -5440,7 +5440,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOp() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5452,7 +5452,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpWithMap() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5466,7 +5466,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpWithSet() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5480,7 +5480,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpNull() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5490,7 +5490,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpSingleValue() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(names)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5500,7 +5500,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpPrimitive() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(ints)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5510,7 +5510,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpOfListWithNulls() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(data)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5525,7 +5525,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testStripOpOfListWithNulls() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$strip(data)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5540,7 +5540,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testStripOpOfListOfListsWithNulls() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$strip(data):{list | $strip(list)$}; separator=\",\"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5562,7 +5562,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testStripOpOfSingleAlt() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$strip(data)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5572,7 +5572,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testStripOpOfNull() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$strip(data)$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5588,7 +5588,7 @@ public class TestStringTemplate extends
+ 			;
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup(new StringReader(templates));
+-		StringTemplate e = group.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate e = group.getInstanceOf("a");
+ 		List names = new ArrayList();
+ 		names.add("Ter");
+ 		names.add(null);
+@@ -5599,7 +5599,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpOfStrippedListWithNulls() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(strip(data))$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5614,7 +5614,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+ 	public void testLengthOpOfStrippedListWithNullsFrontAndBack() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$length(strip(data))$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5638,8 +5638,8 @@ public class TestStringTemplate extends
+ 	public void testMapKeys() throws Exception {
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
+-			new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t =
++			new org.antlr.stringtemplate.StringTemplate(group,
+ 				"<aMap.keys:{k|<k>:<aMap.(k)>}; separator=\", \">");
+ 		HashMap map = new LinkedHashMap();
+ 		map.put("int","0");
+@@ -5651,8 +5651,8 @@ public class TestStringTemplate extends
+ 	public void testMapValues() throws Exception {
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
+-			new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t =
++			new org.antlr.stringtemplate.StringTemplate(group,
+ 				"<aMap.values; separator=\", \"> <aMap.(\"i\"+\"nt\")>");
+ 		HashMap map = new LinkedHashMap();
+ 		map.put("int","0");
+@@ -5665,8 +5665,8 @@ public class TestStringTemplate extends
+ 		// must get back an Integer from keys not a toString()'d version
+ 		StringTemplateGroup group =
+ 			new StringTemplateGroup("dummy", ".", AngleBracketTemplateLexer.class);
+-		StringTemplate t =
+-			new StringTemplate(group,
++		org.antlr.stringtemplate.StringTemplate t =
++			new org.antlr.stringtemplate.StringTemplate(group,
+ 				"<aMap.keys:{k|<k>:<aMap.(k)>}; separator=\", \">");
+ 		Map map = new HashMap();
+ 		map.put(new Integer(1),new ArrayList(){{add("ick"); add("foo");}});
+@@ -5744,18 +5744,18 @@ public class TestStringTemplate extends
+ 		StringTemplateGroup subGroup = new StringTemplateGroup(
+ 			new StringReader(subGroupString), AngleBracketTemplateLexer.class);
+ 		subGroup.setSuperGroup(superGroup);
+-		StringTemplate a = subGroup.getInstanceOf("a");
++		org.antlr.stringtemplate.StringTemplate a = subGroup.getInstanceOf("a");
+ 		a.setAttribute("x", "foo");
+ 		assertEquals("super.a", a.toString());
+-		StringTemplate b = subGroup.getInstanceOf("b");
++		org.antlr.stringtemplate.StringTemplate b = subGroup.getInstanceOf("b");
+ 		assertEquals("sub.csuper.b", b.toString());
+-		StringTemplate c = subGroup.getInstanceOf("c");
++		org.antlr.stringtemplate.StringTemplate c = subGroup.getInstanceOf("c");
+ 		assertEquals("sub.c", c.toString());
+ 	}
+ 
+ 	/** Added feature for ST-21 */
+ 	public void testListLiteralWithEmptyElements() throws Exception {
+-		StringTemplate e = new StringTemplate(
++		org.antlr.stringtemplate.StringTemplate e = new org.antlr.stringtemplate.StringTemplate(
+ 				"$[\"Ter\",,\"Jesse\"]:{n | $i$:$n$}; separator=\", \", null=\"\"$"
+ 			);
+ 		e = e.getInstanceOf();
+@@ -5767,7 +5767,7 @@ public class TestStringTemplate extends
+ 	}
+ 
+     public void testTemplateApplicationAsOptionValue() throws Exception {
+-        StringTemplate st =new StringTemplate(
++        org.antlr.stringtemplate.StringTemplate st =new org.antlr.stringtemplate.StringTemplate(
+                 "Tokens : <rules; separator=names:{<it>}> ;",
+                 AngleBracketTemplateLexer.class);
+         st.setAttribute("rules", "A");

diff --git a/stringtemplate-3.2.1-deprecated.patch b/stringtemplate-3.2.1-deprecated.patch
new file mode 100644
index 0000000..b3dbaa2
--- /dev/null
+++ b/stringtemplate-3.2.1-deprecated.patch
@@ -0,0 +1,241 @@
+--- src/org/antlr/stringtemplate/language/ASTExpr.java.orig	2025-07-05 13:29:38.535051589 -0600
++++ src/org/antlr/stringtemplate/language/ASTExpr.java	2025-07-05 15:21:11.427272073 -0600
+@@ -263,8 +263,8 @@ public class ASTExpr extends Expr {
+ 			if ( numEmpty==numAttributes ) {
+ 				break;
+ 			}
+-			argumentContext.put(DEFAULT_INDEX_VARIABLE_NAME, new Integer(i+1));
+-			argumentContext.put(DEFAULT_INDEX0_VARIABLE_NAME, new Integer(i));
++			argumentContext.put(DEFAULT_INDEX_VARIABLE_NAME, Integer.valueOf(i+1));
++			argumentContext.put(DEFAULT_INDEX0_VARIABLE_NAME, Integer.valueOf(i));
+ 			org.antlr.stringtemplate.StringTemplate embedded = templateToApply.getInstanceOf();
+ 			embedded.setEnclosingInstance(self);
+ 			embedded.setArgumentContext(argumentContext);
+@@ -323,8 +323,8 @@ public class ASTExpr extends Expr {
+ 					argumentContext.put(DEFAULT_ATTRIBUTE_NAME, ithValue);
+ 	                argumentContext.put(DEFAULT_ATTRIBUTE_NAME_DEPRECATED, ithValue);
+ 				}
+-				argumentContext.put(DEFAULT_INDEX_VARIABLE_NAME, new Integer(i+1));
+-				argumentContext.put(DEFAULT_INDEX0_VARIABLE_NAME, new Integer(i));
++				argumentContext.put(DEFAULT_INDEX_VARIABLE_NAME, Integer.valueOf(i+1));
++				argumentContext.put(DEFAULT_INDEX0_VARIABLE_NAME, Integer.valueOf(i));
+                 embedded.setArgumentContext(argumentContext);
+                 evaluateArguments(embedded);
+                 /*
+@@ -358,8 +358,8 @@ public class ASTExpr extends Expr {
+ 				argumentContext.put(DEFAULT_ATTRIBUTE_NAME, attributeValue);
+ 				argumentContext.put(DEFAULT_ATTRIBUTE_NAME_DEPRECATED, attributeValue);
+ 			}
+-			argumentContext.put(DEFAULT_INDEX_VARIABLE_NAME, new Integer(1));
+-			argumentContext.put(DEFAULT_INDEX0_VARIABLE_NAME, new Integer(0));
++			argumentContext.put(DEFAULT_INDEX_VARIABLE_NAME, Integer.valueOf(1));
++			argumentContext.put(DEFAULT_INDEX0_VARIABLE_NAME, Integer.valueOf(0));
+             embedded.setArgumentContext(argumentContext);
+             evaluateArguments(embedded);
+             return embedded;
+@@ -1093,7 +1093,7 @@ public class ASTExpr extends Expr {
+ 	 */
+ 	public Object length(Object attribute) {
+ 		if ( attribute == null) {
+-			return new Integer(0);
++			return Integer.valueOf(0);
+ 		}
+ 		int i = 1;		// we have at least one of something. Iterator and arrays might be empty.
+ 		if (attribute instanceof Map) {
+@@ -1130,7 +1130,7 @@ public class ASTExpr extends Expr {
+ 				i++;
+ 			}
+ 		}
+-		return new Integer(i);
++		return Integer.valueOf(i);
+ 	}
+ 
+ 	public Object getOption(String name) {
+--- src/org/antlr/stringtemplate/language/eval.g.orig	2025-07-05 13:18:54.006186164 -0600
++++ src/org/antlr/stringtemplate/language/eval.g	2025-07-05 15:21:51.882969554 -0600
+@@ -262,7 +262,7 @@ attribute returns [Object value=null]
+         value=self.getAttribute(i3.getText());
+         }
+ 
+-    |   i:INT {value=new Integer(i.getText());}
++    |   i:INT {value=Integer.valueOf(i.getText());}
+ 
+     |   s:STRING
+     	{
+--- src/org/antlr/stringtemplate/StringTemplate.java.orig	2009-09-22 15:00:17.000000000 -0600
++++ src/org/antlr/stringtemplate/StringTemplate.java	2025-07-05 15:19:18.460303635 -0600
+@@ -541,7 +541,7 @@ public class StringTemplate {
+ 
+ 	/** Convenience method to box ints */
+ 	public void setAttribute(String name, int value) {
+-		setAttribute(name, new Integer(value));
++		setAttribute(name, Integer.valueOf(value));
+ 	}
+ 
+ 	/** Set an aggregate attribute with two values.  The attribute name
+--- test/org/antlr/stringtemplate/test/TestStringTemplate.java.orig	2025-07-05 15:16:42.836799197 -0600
++++ test/org/antlr/stringtemplate/test/TestStringTemplate.java	2025-07-05 15:25:30.627306739 -0600
+@@ -1632,11 +1632,11 @@ public class TestStringTemplate extends
+ 		org.antlr.stringtemplate.StringTemplate t =
+ 			new org.antlr.stringtemplate.StringTemplate(group,
+ 					  "$if(b)$x$endif$ $if(!b)$y$endif$");
+-		t.setAttribute("b", new Boolean(true));
++		t.setAttribute("b", Boolean.TRUE);
+ 		assertEquals(t.toString(), "x ");
+ 
+ 		t = t.getInstanceOf();
+-		t.setAttribute("b", new Boolean(false));
++		t.setAttribute("b", Boolean.FALSE);
+ 		assertEquals(" y", t.toString());
+ 	}
+ 
+@@ -1668,7 +1668,7 @@ public class TestStringTemplate extends
+         org.antlr.stringtemplate.StringTemplate t =
+             new org.antlr.stringtemplate.StringTemplate(group,
+                       "$if(names:{$it$})$Fail!$endif$ $if(!names:{$it$})$Works!$endif$");
+-        t.setAttribute("b", new Boolean(true));
++        t.setAttribute("b", Boolean.TRUE);
+         assertEquals(t.toString(), " Works!");
+     }
+ 
+@@ -1690,7 +1690,7 @@ public class TestStringTemplate extends
+ 		public String getLastName() { return "Burns"; }
+ 		public String getEmail() { return "tombu@jguru.com"; }
+ 		public String getBio() { return "Superhero by day..."; }
+-		public Boolean getCanEdit() { return new Boolean(true); }
++		public Boolean getCanEdit() { return Boolean.TRUE; }
+ 	}
+ 
+     public void testObjectPropertyReference() throws Exception {
+@@ -2906,10 +2906,10 @@ public class TestStringTemplate extends
+         group.setErrorListener(errors);
+         org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+             "$users:{$if(it.ok)$$it.name$$endif$}; separator=\",\"$");
+-        t.setAttribute("users.{name,ok}", "Terence", new Boolean(true));
+-        t.setAttribute("users.{name,ok}", "Tom", new Boolean(false));
+-        t.setAttribute("users.{name,ok}", "Frank", new Boolean(true));
+-        t.setAttribute("users.{name,ok}", "Johnny", new Boolean(false));
++        t.setAttribute("users.{name,ok}", "Terence", Boolean.TRUE);
++        t.setAttribute("users.{name,ok}", "Tom", Boolean.FALSE);
++        t.setAttribute("users.{name,ok}", "Frank", Boolean.TRUE);
++        t.setAttribute("users.{name,ok}", "Johnny", Boolean.FALSE);
+         // empty conditional values get no separator
+         String expecting="Terence,Frank";
+         String result = t.toString();
+@@ -2923,10 +2923,10 @@ public class TestStringTemplate extends
+         group.setErrorListener(errors);
+         org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+             "$users:{$if(it.ok)$$it.name$$endif$}; separator=\",\"$");
+-        t.setAttribute("users.{name,ok}", "Terence", new Boolean(true));
+-        t.setAttribute("users.{name,ok}", "Tom", new Boolean(false));
+-        t.setAttribute("users.{name,ok}", "Frank", new Boolean(false));
+-        t.setAttribute("users.{name,ok}", "Johnny", new Boolean(false));
++        t.setAttribute("users.{name,ok}", "Terence", Boolean.TRUE);
++        t.setAttribute("users.{name,ok}", "Tom", Boolean.FALSE);
++        t.setAttribute("users.{name,ok}", "Frank", Boolean.FALSE);
++        t.setAttribute("users.{name,ok}", "Johnny", Boolean.FALSE);
+         // empty conditional values get no separator
+         String expecting="Terence";
+         String result = t.toString();
+@@ -2940,10 +2940,10 @@ public class TestStringTemplate extends
+         group.setErrorListener(errors);
+         org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+             "$users:{$if(it.ok)$$it.name$$endif$$if(it.ok)$$it.name$$endif$}; separator=\",\"$");
+-        t.setAttribute("users.{name,ok}", "Terence", new Boolean(false));
+-        t.setAttribute("users.{name,ok}", "Tom", new Boolean(true));
+-        t.setAttribute("users.{name,ok}", "Frank", new Boolean(true));
+-        t.setAttribute("users.{name,ok}", "Johnny", new Boolean(true));
++        t.setAttribute("users.{name,ok}", "Terence", Boolean.FALSE);
++        t.setAttribute("users.{name,ok}", "Tom", Boolean.TRUE);
++        t.setAttribute("users.{name,ok}", "Frank", Boolean.TRUE);
++        t.setAttribute("users.{name,ok}", "Johnny", Boolean.TRUE);
+         // empty conditional values get no separator
+         String expecting="TomTom,FrankFrank,JohnnyJohnny";
+         String result = t.toString();
+@@ -2957,10 +2957,10 @@ public class TestStringTemplate extends
+ 		group.setErrorListener(errors);
+ 		org.antlr.stringtemplate.StringTemplate t = new org.antlr.stringtemplate.StringTemplate(group,
+ 			"$users:{$if(it.ok)$$it.name$$else$$endif$}; separator=\",\"$");
+-		t.setAttribute("users.{name,ok}", "Terence", new Boolean(true));
+-		t.setAttribute("users.{name,ok}", "Tom", new Boolean(false));
+-		t.setAttribute("users.{name,ok}", "Frank", new Boolean(true));
+-		t.setAttribute("users.{name,ok}", "Johnny", new Boolean(false));
++		t.setAttribute("users.{name,ok}", "Terence", Boolean.TRUE);
++		t.setAttribute("users.{name,ok}", "Tom", Boolean.FALSE);
++		t.setAttribute("users.{name,ok}", "Frank", Boolean.TRUE);
++		t.setAttribute("users.{name,ok}", "Johnny", Boolean.FALSE);
+ 		// empty conditional values get no separator
+ 		String expecting="Terence,,Frank,";
+ 		String result = t.toString();
+@@ -5329,7 +5329,7 @@ public class TestStringTemplate extends
+ 			group.defineTemplate("t", "<data; null=\"\", separator=\", \">");
+ 		List data = new ArrayList();
+ 		data.add(null);
+-		data.add(new Integer(1));
++		data.add(Integer.valueOf(1));
+ 		t.setAttribute("data", data);
+ 		String expecting=", 1";
+ 		assertEquals(expecting, t.toString());
+@@ -5355,10 +5355,10 @@ public class TestStringTemplate extends
+ 			group.defineTemplate("t", "<data; null=\"-1\", separator=\", \">");
+ 		List data = new ArrayList();
+ 		data.add(null);
+-		data.add(new Integer(1));
++		data.add(Integer.valueOf(1));
+ 		data.add(null);
+-		data.add(new Integer(3));
+-		data.add(new Integer(4));
++		data.add(Integer.valueOf(3));
++		data.add(Integer.valueOf(4));
+ 		data.add(null);
+ 		t.setAttribute("data", data);
+ 		//System.out.println(t);
+@@ -5373,10 +5373,10 @@ public class TestStringTemplate extends
+ 			group.defineTemplate("t", "<data; separator=\", \">");
+ 		List data = new ArrayList();
+ 		data.add(null);
+-		data.add(new Integer(1));
++		data.add(Integer.valueOf(1));
+ 		data.add(null);
+-		data.add(new Integer(3));
+-		data.add(new Integer(4));
++		data.add(Integer.valueOf(3));
++		data.add(Integer.valueOf(4));
+ 		data.add(null);
+ 		t.setAttribute("data", data);
+ 		//System.out.println(t);
+@@ -5391,9 +5391,9 @@ public class TestStringTemplate extends
+ 			group.defineTemplate("t", "<data:array(); null=\"-1\", separator=\", \">");
+ 		group.defineTemplate("array", "<it>");
+ 		List data = new ArrayList();
+-		data.add(new Integer(0));
++		data.add(Integer.valueOf(0));
+ 		data.add(null);
+-		data.add(new Integer(2));
++		data.add(Integer.valueOf(2));
+ 		data.add(null);
+ 		t.setAttribute("data", data);
+ 		String expecting="0, -1, 2, -1";
+@@ -5408,9 +5408,9 @@ public class TestStringTemplate extends
+ 		group.defineTemplate("array", "<it>");
+ 		List data = new ArrayList();
+ 		data.add(null);
+-		data.add(new Integer(0));
++		data.add(Integer.valueOf(0));
+ 		data.add(null);
+-		data.add(new Integer(2));
++		data.add(Integer.valueOf(2));
+ 		t.setAttribute("data", data);
+ 		String expecting="-1, 0, -1, 2";
+ 		assertEquals(expecting, t.toString());
+@@ -5669,8 +5669,8 @@ public class TestStringTemplate extends
+ 			new org.antlr.stringtemplate.StringTemplate(group,
+ 				"<aMap.keys:{k|<k>:<aMap.(k)>}; separator=\", \">");
+ 		Map map = new HashMap();
+-		map.put(new Integer(1),new ArrayList(){{add("ick"); add("foo");}});
+-		map.put(new Integer(2),new ArrayList(){{add("x"); add("y");}});
++		map.put(Integer.valueOf(1),new ArrayList(){{add("ick"); add("foo");}});
++		map.put(Integer.valueOf(2),new ArrayList(){{add("x"); add("y");}});
+ 		t.setAttribute("aMap", map);
+         
+         String res = t.toString();

diff --git a/stringtemplate.spec b/stringtemplate.spec
index 723411b..1972226 100644
--- a/stringtemplate.spec
+++ b/stringtemplate.spec
@@ -1,13 +1,18 @@
 Summary: A Java template engine
 Name: stringtemplate
 Version: 3.2.1
-Release: 37%{?dist}
+Release: 38%{?dist}
+License: BSD-3-Clause
 URL: http://www.stringtemplate.org/
 Source0: http://www.stringtemplate.org/download/stringtemplate-%{version}.tar.gz
 # Build jUnit tests + make the antlr2 generated code before preparing sources
 Patch0: stringtemplate-3.1-build-junit.patch
-# Automatically converted from old format: BSD - review is highly recommended.
-License: LicenseRef-Callaway-BSD
+# With JDK 21 and later, StringTemplate is a name in java.lang, which makes a
+# bar instance of the StringTemplate name ambiguous.  Only use the name fully
+# qualified to eliminate the ambiguity.
+Patch1: stringtemplate-3.2.1-ambiguity.patch
+# Update deprecated uses of "new Integer" and "new Boolean"
+Patch2: stringtemplate-3.2.1-deprecated.patch
 
 BuildRequires: ant
 BuildRequires: ant-antlr
@@ -32,8 +37,7 @@ Requires:       java-javadoc
 API documentation for %{name}.
 
 %prep
-%setup -q
-%patch -P0
+%autosetup -p0
 sed -i -e 's/source="1.4"/source="1.8"/g' build.xml
 sed -i -e 's/target="1.4"/target="1.8"/g' build.xml
 
@@ -56,6 +60,11 @@ ant javadocs -Dpackages= -Djavadocs.additionalparam="-Xdoclint:none"
 %{_javadocdir}/%{name}
 
 %changelog
+* Sat Jul 05 2025 Jerry James  <loganjerry@gmail.com> - 3.2.1-38
+- Add patch to fix ambiguous references to StringTemplate
+- Add patch to avoid using deprecated "new Integer" and "new Boolean"
+- Change license to BSD-3-Clause
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.1-37
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-20 11:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-20 11:50 [rpms/stringtemplate] epel10: Add patch to fix ambiguous references to StringTemplate Jerry James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox