// TODO add types from the loaded resources
 // traverse deep into the nested packages
 public IContentAssistProcessor getCompletionProcessor(IAdaptable subject) {
   CollaborationUse cu = doAdapt(subject);
   String name = cu.getName() == null ? "" : cu.getName(); // $NON-NLS-1$
   List<Type> types = getTypeProposals(cu);
   LinkedList<String> names = new LinkedList<String>();
   for (Type next : types) {
     names.add(COLLABORATION_USE_FORMAT.format(new Object[] {name, next.getName()}));
   }
   FixedSetCompletionProcessor cp = new FixedSetCompletionProcessor(names);
   cp.setContext(cu);
   return cp;
 }
 public ICommand getParseCommand(IAdaptable element, String newString, int flags) {
   CollaborationUse cu = doAdapt(element);
   if (cu == null) {
     return UnexecutableCommand.INSTANCE;
   }
   if (newString == null) {
     return UnexecutableCommand.INSTANCE;
   }
   Collaboration oldType = cu.getType();
   String oldName = cu.getName() == null ? "" : cu.getName(); // $NON-NLS-1$
   List<Type> types = getTypeProposals(cu);
   try {
     Object[] parsed = COLLABORATION_USE_FORMAT.parse(newString);
     String newName = (String) parsed[0];
     CompositeCommand cc =
         new CompositeCommand(
             CustomMessages.CollaborationUseParser_collaboration_use_name_parser_command);
     if (!oldName.equals(newName)) {
       cc.add(
           new SetValueCommand(
               new SetRequest(cu, UMLPackage.eINSTANCE.getNamedElement_Name(), newName)));
     }
     if (parsed.length < 2) {
       return cc;
     }
     String newType = (String) parsed[1];
     for (Type next : types) {
       if (newType.equals(next.getName()) && !newType.equals(oldType)) {
         cc.add(
             new SetValueCommand(
                 new SetRequest(cu, UMLPackage.eINSTANCE.getCollaborationUse_Type(), next)));
         break;
       }
     }
     return cc;
   } catch (ParseException e) {
   }
   return UnexecutableCommand.INSTANCE;
 }
 public String getEditString(IAdaptable element, int flags) {
   CollaborationUse cu = doAdapt(element);
   String name = cu.getName() == null ? "" : cu.getName(); // $NON-NLS-1$
   String type = cu.getType() == null ? "" : cu.getType().getName(); // $NON-NLS-1$
   return COLLABORATION_USE_FORMAT.format(new Object[] {name, type});
 }