code: public void setVisible(Component c, boolean visible) {
  		if (visible) {
  			if (this.hiddenTabs.contains(c)) {
  				
  				if (c instanceof AbstractPanel) {
  					// Don't use the addTab(AbstractPanel) methods as we need to force visibility
  					AbstractPanel panel = (AbstractPanel)c;
  					this.addTab(c.getName(), panel.getIcon(), panel, panel.isHideable(), true, panel.getTabIndex());
  				} else {
  					// Work out the index to add it back in
  					int index = this.fullTabList.indexOf(c);
  					while (index >= 0) {
  						if (index > 0 && ! this.hiddenTabs.contains(this.fullTabList.get(index -1))) {
  							// Found the first preceding tab that isn't hidden
  							break;
  						}
  						index--;
  					}
  					
  					this.addTab(c.getName(), null, c, true, true, index);
  				}
  				this.hiddenTabs.remove(c);
  				handleHiddenTabListTab();
  			}
  			return;
  		}
  
  		hideTab(c);
  	}
docs: Sets whether or not the given component (and corresponding tab) is visible.
  <p>
  <strong>Note:</strong> Non-{@link AbstractPanel#isHideable() hideable} and {@link AbstractPanel#isPinned() pinned} panels
  are hidden as well.
  
  @param c the component to show or hide.
  @param visible {@code true} if the tab of the component should be visible, {@code false} otherwise.