Program: 16613
Project: 16613
Buggy source:
void initComponent() throws JspException {
  if (_roottag == null)   throw new IllegalStateException("String_Node_Str" + this);
  composeHandle=new ComposerHandler(_attrMap.remove("String_Node_Str"));
  try {
    Page page=this._roottag.getPage();
    _compDef=page.getComponentDefinition(_tag,true);
    if (_compDef == null)     throw new JspException("String_Node_Str" + _tag);
    Object useClass=_compDef.getImplementationClass();
    if (_compDef.isInlineMacro()) {
      final Map props=new HashMap();
      Component parent=this._parenttag.getComponent();
      props.put("String_Node_Str",parent);
      _compDef.evalProperties(props,page,parent);
      props.putAll(_attrMap);
      if (this.getUse() != null)       props.put("String_Node_Str",this.getUse());
      _comps=parent.getDesktop().getExecution().createComponents(_compDef.getMacroURI(),props);
    }
 else {
      if (super.getUse() != null)       _comps=new Component[]{_comp=(Component)Class.forName(getUse()).newInstance()};
 else       if (useClass instanceof String)       _comps=new Component[]{_comp=_compDef.newInstance(page,useClass.toString())};
 else {
        Class clazz=(Class)useClass;
        _comps=new Component[]{_comp=(Component)clazz.newInstance()};
      }
      composeHandle.doBeforeComposeChildren(_comp);
      _comp.getDefinition().applyProperties(_comp);
    }
  }
 catch (  Exception e) {
    if (!_compDef.isInlineMacro())     composeHandle.doCatch(e);
    throw new JspException(e);
  }
 finally {
    if (!_compDef.isInlineMacro())     composeHandle.doFinally();
  }
  if (_parenttag != null)   _parenttag.addChildTag(this);
 else   _roottag.addChildTag(this);
}

Fixed version (ground truth):
void initComponent() throws JspException {
  if (_roottag == null)   throw new IllegalStateException("String_Node_Str" + this);
  composeHandle=new ComposerHandler(_attrMap.remove("String_Node_Str"));
  try {
    Page page=this._roottag.getPage();
    _compDef=page.getComponentDefinition(_tag,true);
    if (_compDef == null)     throw new JspException("String_Node_Str" + _tag);
    Object useClass=_compDef.getImplementationClass();
    if (_compDef.isInlineMacro()) {
      final Map props=new HashMap();
      Component parent=this._parenttag.getComponent();
      props.put("String_Node_Str",parent);
      _compDef.evalProperties(props,page,parent);
      props.putAll(_attrMap);
      if (this.getUse() != null)       props.put("String_Node_Str",this.getUse());
      _comps=parent.getDesktop().getExecution().createComponents(_compDef.getMacroURI(),props);
    }
 else {
      String clazzName=null;
      if (super.getUse() != null)       clazzName=getUse();
 else       if (useClass instanceof String)       clazzName=(String)useClass;
 else       clazzName=((Class)useClass).getName();
      _comps=new Component[]{_comp=_compDef.newInstance(page,clazzName)};
      composeHandle.doBeforeComposeChildren(_comp);
      _comp.getDefinition().applyProperties(_comp);
    }
  }
 catch (  Exception e) {
    if (!_compDef.isInlineMacro())     composeHandle.doCatch(e);
    throw new JspException(e);
  }
 finally {
    if (!_compDef.isInlineMacro())     composeHandle.doFinally();
  }
  if (_parenttag != null)   _parenttag.addChildTag(this);
 else   _roottag.addChildTag(this);
}