XSDConcreteComponent bestXSDConcreteComponent = ((XSDSchema)xsdSchema).getCorrespondingComponent(node);
XSDConcreteComponent bestXSDConcreteComponent = xsdSchema.getCorrespondingComponent(node);
  public void handleSelectedNodes(Collection nodes)  {    Collection selection = new ArrayList();    for (Iterator i = nodes.iterator(); i.hasNext(); )    {      Node node = (Node)i.next();      Collection parents = new HashSet();      XSDConcreteComponent bestXSDConcreteComponent = ((XSDSchema)xsdSchema).getCorrespondingComponent(node);      if (bestXSDConcreteComponent != null)      {        boolean add = true;        for (XSDConcreteComponent parent = bestXSDConcreteComponent;             parent != null;             parent = parent.getContainer())        {          if (selection.contains(parent))          {            add = false;            break;          }        }        if (add)        {          XSDConcreteComponent container = bestXSDConcreteComponent.getContainer();          if (container instanceof XSDParticle || container instanceof XSDAttributeUse)          {            bestXSDConcreteComponent = container;          }          selection.add(bestXSDConcreteComponent);        }      }    }    if (!selection.isEmpty())    {      ISelection newSelection = new StructuredSelection(selection.toArray());      if (contentOutlineViewer != null)      {        contentOutlineViewer.setSelection(newSelection, true);      }      setSelection(newSelection);      handleContentOutlineSelectionForTextEditor(newSelection, false);    }  }