} else if (componentType.equals(ComponentData.HOST) || componentType.equals(ComponentData.NODE)) {
} else if (componentType.equals(ComponentData.NODE)) {
  public String getComponentAlibId(ComponentData data) {    // This relies on being able to find the ancestors    // for plugins and binders, which you cant always do    // FIXME!!    if (data == null) return null;    String result = data.getAlibID();    if (result == null) {      String componentType = data.getType();      if (componentType.equals(ComponentData.SOCIETY)) {	result = ComponentData.SOCIETY + "|" + data.getName();      } else if (componentType.equals(ComponentData.AGENT)) {	result = getAgentAlibId(data.getName());      } else if (componentType.equals(ComponentData.HOST) ||                 componentType.equals(ComponentData.NODE)) {	result = data.getName();      } else {	ComponentData anc = data.getParent();	if (componentType.equals(ComponentData.NODEBINDER) && ! anc.getType().equals(ComponentData.NODE)) {	  if (log.isWarnEnabled()) {	    log.warn("Got Node Binder whose parent is not a node: " + data);	  }	}	if (anc == null) {	  return data.getName();	} else {	  String agentName = anc.getName();	  // Create the alibID using the component name, not the class	  // This allows users to insert 2 items of same class at same point	  // Note that if all the args are the same they really shouldnt	  // do this.	  //result = agentName + "|" + data.getClassName();	  if (data.getName().startsWith(agentName + "|")) {	    result = data.getName();	  } else {	    result = agentName + "|" + data.getName();	  }	} // got an ancestor      } // end of block to handle most cases for generating alib IDs      data.setAlibID(result);    } // end of block to compute alib id    return result;  }