public static void buildDeleteNotification(
     OJAnnotatedClass owner, OJAnnotatedOperation delete, PropertyWrapper propertyWrapper) {
   OJIfStatement ifChanged = new OJIfStatement();
   ifChanged.setCondition("true");
   PropertyWrapper otherEnd = PropertyWrapper.from(propertyWrapper.getOtherEnd());
   if (otherEnd.isMany()) {
     OJForStatement forStatement =
         new OJForStatement(
             otherEnd.getName(), otherEnd.javaBaseTypePath(), "this." + otherEnd.getter() + "()");
     forStatement
         .getBody()
         .addToStatements(constructNotifierForOtherEndMany(propertyWrapper, otherEnd));
     delete.getBody().addToStatements(0, forStatement);
   } else {
     ifChanged.addToThenPart(constructNotifier(propertyWrapper));
     delete.getBody().addToStatements(0, ifChanged);
   }
   owner.addToImports(
       UmlgClassOperations.getPathName(propertyWrapper.getOwningType())
           .append(UmlgClassOperations.propertyEnumName(propertyWrapper.getOwningType())));
   owner.addToImports(UmlgGenerationUtil.UmlgNotificationManager);
   owner.addToImports(UmlgGenerationUtil.ChangeHolder);
   owner.addToImports(UmlgGenerationUtil.ChangeHolder);
   owner.addToImports("java.util.Optional");
 }
 private static String constructNotifier(PropertyWrapper propertyWrapper) {
   return UmlgGenerationUtil.UmlgNotificationManager.getLast()
       + ".INSTANCE.notify(\n\t"
       + propertyWrapper.getTumlRuntimePropertyEnum()
       + ",\n\tChangeHolder.of(\n\t\tthis."
       + PropertyWrapper.from(propertyWrapper.getOtherEnd()).getter()
       + "()"
       + ",\n\t\t"
       + propertyWrapper.getTumlRuntimePropertyEnum()
       + ",\n\t\t"
       + "ChangeHolder.ChangeType.DELETE,\n\t\t"
       + "this.toJson()"
       + "\n\t)\n)";
 }