code: private <E, F> List<UnifiedDiffElement<E, F>> getModifiedElements(Delta<E> delta,
          UnifiedDiffConfiguration<E, F> config)
      {
          List<UnifiedDiffElement<E, F>> elements = new ArrayList<UnifiedDiffElement<E, F>>();
          elements.addAll(this.<E, F>getElements(delta.getPrevious(), Type.DELETED));
          elements.addAll(this.<E, F>getElements(delta.getNext(), Type.ADDED));
  
          // Compute the in-line diff if the number of removed elements equals the number of added elements.
          if (config.getSplitter() != null && delta.getPrevious().size() == delta.getNext().size()) {
              int changeSize = delta.getPrevious().size();
              for (int i = 0; i < changeSize; i++) {
                  displayInlineDiff(elements.get(i), elements.get(changeSize + i), config);
              }
          }
  
          return elements;
      }
docs: Processes a change. In a unified diff the modified elements are either added or removed so we model a change by
  listing the removed elements (from the previous version) followed by the added elements (from the next version).
  If a splitter is provided through the given configuration object then we use it to split the changed elements (if
  the number of removed elements equals the number of added elements) in sub-elements and produce an in-line diff
  for the changes inside the modified elements.
  
  @param delta the change
  @param config the configuration used to access the splitter
  @param <E> the type of composite elements that are compared to produce the first level diff
  @param <F> the type of sub-elements that are compared to produce the second-level diff when a composite element
  is modified
  @return the list of unified diff elements corresponding to the elements modified in the given delta