protected void createOperation(
     IClass clazz, Type type, MemberdefType memberdefType, IClass findClass)
     throws InvalidEditingException, ProjectNotFoundException {
   IOperation operation = null;
   if (LanguageManager.PRIMITIVE_TYPE.contains(type.getNamespaceClass().clazz)) {
     operation =
         this.basicModelEditor.createOperation(
             clazz, type.getName(), type.getNamespaceClass().clazz);
   } else {
     if (findClass == null) {
       if (clazz.getName().equals(type.getName())
           || format("~%s", clazz.getName()).equals(type.getName())) {
         operation = this.basicModelEditor.createOperation(clazz, type.getName(), "");
       } else if (type.getNamespaceClass() != null && !isEmpty(type.getNamespaceClass().clazz)) {
         operation =
             this.basicModelEditor.createOperation(
                 clazz, type.getName(), type.getNamespaceClass().clazz);
       }
     } else {
       operation =
           this.basicModelEditor.createOperation(clazz, type.getName(), (IClass) findClass);
     }
   }
   if (operation == null) {
     return;
   }
   // 操作のその他属性を作成
   this.setLanguage(CPLUS_OPERATION, operation);
   this.createParameter(operation, memberdefType.getParam());
   operation.setDefinition(this.parseDescription(memberdefType.getDetaileddescription()));
   operation.setVisibility(type.getVisiblity());
   if (type.isConst()) {
     this.createTaggedValue(operation, "jude.c_plus.const", "true");
   }
   if (type.getVirt().equals(DoxVirtualKind.VIRTUAL.value())
       || type.getVirt().equals(DoxVirtualKind.PURE_VIRTUAL.value())) {
     this.createTaggedValue(operation, "jude.c_plus.virtual", "true");
   }
   if (type.isExplicit()) {
     this.createTaggedValue(operation, "jude.c_plus.explicit", "true");
   }
   if (type.isInline()) {
     this.createTaggedValue(operation, "jude.c_plus.inline", "true");
   }
   if (type.isFriend()) {
     this.createTaggedValue(operation, "jude.c_plus.friend", "true");
   }
 }
 private IParameter createParameter(
     BasicModelEditor modelEditor, IOperation operation, String name, String typeExpression)
     throws InvalidEditingException {
   try {
     return modelEditor.createParameter(operation, name, typeExpression);
   } catch (InvalidEditingException e) {
     String br = System.getProperty("line.separator");
     StringBuffer message = new StringBuffer();
     message.append(e.getMessage());
     message.append(br);
     message.append("Operation : ");
     message.append(operation.getName());
     message.append(br);
     message.append("Name : ");
     message.append(name);
     message.append(br);
     message.append("TypeExpression : ");
     message.append(typeExpression);
     throw new InvalidEditingException(e.getKey(), message.toString());
   }
 }