code: private Glyph createControlStructure(Control ctrl) {
  		Glyph cg;
  		Set<PhysicalEntity> controllers = getControllers(ctrl);
  		// If no representable controller found, skip this control
  		if (controllers.isEmpty()) {
  			cg = null;
  		} else if (controllers.size() == 1 && getControllerSize(ctrl.getControlledOf()) == 0)
  		{ // If there is only one controller with no modulator, put an arc for controller
  			cg = getGlyphToLink(controllers.iterator().next(), convertID(ctrl.getUri()));
  		} else {
  			// This list will contain handles for each participant of the AND structure
  			List<Glyph> toConnect = new ArrayList<Glyph>();
  
  			// Bundle controllers if necessary
  			Glyph gg = handlePEGroup(controllers, convertID(ctrl.getUri()));
  			if(gg != null)
  				toConnect.add(gg);
  
  			// Handle co-factors of catalysis
  			if (ctrl instanceof Catalysis) {
  				Set<PhysicalEntity> cofs = ((Catalysis) ctrl).getCofactor();
  				Glyph g = handlePEGroup(cofs, convertID(ctrl.getUri()));
  				if (g != null) 
  					toConnect.add(g);
  			}
  
  			if (toConnect.isEmpty()) {
  				return null;
  			} else if (toConnect.size() == 1) {
  				cg = toConnect.iterator().next();
  			} else {
  				cg = connectWithAND(toConnect);
  			}
  		}
  
  		return cg;
  	}
docs: /*
  Creates or gets the glyph to connect to the control arc.
  
  @param ctrl Control to represent
  @return glyph representing the controller tree