public void rawDefineTemplate(String name, CompiledST code, Token defT) {
   CompiledST prev = rawGetTemplate(name);
   if (prev != null) {
     if (!prev.isRegion) {
       errMgr.compileTimeError(ErrorType.TEMPLATE_REDEFINITION, null, defT);
       return;
     }
     if (prev.isRegion) {
       if (code.regionDefType != ST.RegionType.IMPLICIT
           && prev.regionDefType == ST.RegionType.EMBEDDED) {
         errMgr.compileTimeError(
             ErrorType.EMBEDDED_REGION_REDEFINITION, null, defT, getUnMangledTemplateName(name));
         return;
       } else if (code.regionDefType == ST.RegionType.IMPLICIT
           || prev.regionDefType == ST.RegionType.EXPLICIT) {
         errMgr.compileTimeError(
             ErrorType.REGION_REDEFINITION, null, defT, getUnMangledTemplateName(name));
         return;
       }
     }
   }
   code.nativeGroup = this;
   code.templateDefStartToken = defT;
   templates.put(name, code);
 }