public JpaStructureNode getStructureNode(int textOffset) {
   for (JpaStructureNode child : this.getChildren()) {
     if (child.containsOffset(textOffset)) {
       return child;
     }
   }
   return this;
 }
 @Override
 public boolean providesDetails(JpaStructureNode structureNode) {
   return Tools.valuesAreEqual(structureNode.getType(), JavaPackageInfo.class)
       && structureNode
           .getResourceType()
           .getContentType()
           .equals(JptCommonCorePlugin.JAVA_SOURCE_PACKAGE_INFO_CONTENT_TYPE);
 }
 SetJpaSelectionJob(Manager manager, JpaStructureNode selection) {
   super(JptJpaUiMessages.SET_JPA_SELECTION_JOB_NAME);
   this.setJpaSelectionRunnable = new SetJpaSelectionRunnable(manager, selection);
   // if the selection is null we don't need a scheduling rule -
   // the JPA selection can be set to null at any time
   if (selection != null) {
     this.setRule(selection.getJpaProject().getProject());
   }
 }