public List<SwitchTarget> getTargets(final boolean onlyVisible, boolean originalProvider) {
   final ArrayList<SwitchTarget> result = new ArrayList<SwitchTarget>();
   TabInfo selected = myTabs.getSelectedInfo();
   new AwtVisitor(selected.getComponent()) {
     @Override
     public boolean visit(Component component) {
       if (component instanceof JBTabs) {
         JBTabs tabs = (JBTabs) component;
         if (tabs != myTabs) {
           result.addAll(tabs.getTargets(onlyVisible, false));
           return true;
         }
       }
       return false;
     }
   };
   return result;
 }
    public SwitchTarget getCurrentTarget() {
      TabInfo selected = myTabs.getSelectedInfo();
      final Ref<SwitchTarget> targetRef = new Ref<SwitchTarget>();
      new AwtVisitor(selected.getComponent()) {
        @Override
        public boolean visit(Component component) {
          if (component instanceof JBTabs) {
            JBTabs tabs = (JBTabs) component;
            if (tabs != myTabs) {
              targetRef.set(tabs.getCurrentTarget());
              return true;
            }
          }
          return false;
        }
      };

      return targetRef.get();
    }
 public Component getComponentAt(final int i) {
   final TabInfo tab = myTabs.getTabAt(i);
   return tab.getComponent();
 }
 @Nullable
 public Object getSelectedComponent() {
   final TabInfo info = myTabs.getTargetInfo();
   return info != null ? info.getComponent() : null;
 }