if(isFromRoot){
if(isFromRoot && (!m_ObjectNames.isLeafReached())){
	    private JMenuItem build(){				JMenuItem menu;		int singleItem = 0;		boolean isFromRoot = m_ObjectNames.isRootReached();		String delim = m_ObjectNames.getSeperator();				StringBuffer sb = 		    new StringBuffer(m_ObjectNames.getValue());		while(m_ObjectNames.numChildren() == 1){		    try{			m_ObjectNames.goToChild(0);		    }catch(Exception e){}		    sb.append(delim + m_ObjectNames.getValue());		    singleItem++;		}		    		    						if(isFromRoot){		    String[] kids = m_ObjectNames.childrenValues();		    for(int i=0; i < kids.length; i++){			String child = kids[i];			m_ObjectNames.goToChild(child);			if(m_ObjectNames.isLeafReached()){			    menu = new JMenuItem(m_ObjectNames.fullValue());			    menu.addMouseListener(this);			}			else{			    menu = new JMenu(m_ObjectNames.fullValue());			    ((JMenu)menu).addMenuListener(this);			    String[] grandkids = 				m_ObjectNames.childrenValues();			    for(int j=0; j < grandkids.length; j++){				m_ObjectNames.goToChild(grandkids[j]);				menu.add(build());			    }							}			m_ObjectNames.goToParent();			label.add(menu);		    }		    menu = null;		}		else if(m_ObjectNames.isLeafReached()){		    menu = new JMenuItem(sb.toString());		    menu.addMouseListener(this);		} 		else{		    menu = new JMenu(sb.toString());		    ((JMenu)menu).addMenuListener(this);				    		    String[] kids = m_ObjectNames.childrenValues();		    for(int i=0; i < kids.length; i++){			String child = kids[i];			m_ObjectNames.goToChild(child);			menu.add(build());		    }		}				for(int i=0; i <= singleItem; i++)		    m_ObjectNames.goToParent(); // One more level up		    				return menu;			    }    