void processIndirectChanges(GraphDiff allChanges) {
    // extract flattened and indirect changes and remove duplicate changes...
    allChanges.apply(this);

    if (!flattenedInserts.isEmpty()) {
      for (final FlattenedArcKey key : flattenedInserts) {
        DbEntity entity = key.getJoinEntity();
        parent.addFlattenedInsert(entity, key);
      }
    }

    if (!flattenedDeletes.isEmpty()) {
      for (final FlattenedArcKey key : flattenedDeletes) {
        DbEntity entity = key.getJoinEntity();
        parent.addFlattenedDelete(entity, key);
      }
    }
  }