public Object getHierarchicalPackageParent(final IScriptFolder child) {
   String name = child.getElementName();
   IProjectFragment parent = (IProjectFragment) child.getParent();
   int index = name.lastIndexOf(IScriptFolder.PACKAGE_DELIMITER);
   if (index != -1) {
     String realParentName = name.substring(0, index);
     IScriptFolder element = parent.getScriptFolder(realParentName);
     if (element != null && element.exists()) {
       try {
         if (fFoldPackages
             && ScriptExplorerContentProvider.isEmpty(element)
             && ScriptExplorerContentProvider.findSinglePackageChild(element, parent.getChildren())
                 != null) {
           return getHierarchicalPackageParent(element);
         }
       } catch (ModelException e) {
         // ignore
       }
       return element;
     } else if (element != null) { // bug 65240
       IResource resource = element.getResource();
       if (resource != null) {
         return resource;
       }
     }
   }
   if (parent.getResource() instanceof IProject) {
     return parent.getScriptProject();
   }
   return parent;
 }
  @Override
  public String resolve(IScriptFolder container) {

    if (container == null) {
      Logger.log(Logger.WARNING, "Unable to resolve namespace, no container available");
      return null;
    }

    // Try composer first - Symfony 2.1
    try {
      IPath path = ModelAccess.getInstance().resolve(container.getResource());
      if (path != null) {
        return path.toString().replace("/", "\\");
      }
    } catch (Exception e) {
      Logger.logException(e);
    }

    // fallback to Symfony 2.0
    return SymfonyModelAccess.getDefault()
        .findNameSpace(container.getScriptProject(), container.getPath());
  }