// Path: sorter/src/main/java/sortpom/wrapper/content/Wrapper.java
// public interface Wrapper<T extends Content> {
// 
//     /**
//      * Gets the wrapped content.
//      *
//      * @return the content
//      */
//     T getContent();
// 
//     /**
//      * Checks if wrapper should be placed before another wrapper.
//      *
//      * @param wrapper the wrapper
//      * @return true, if is before
//      */
//     boolean isBefore(Wrapper<? extends Content> wrapper);
// 
//     /**
//      * Checks if is content is of type Element. Default behaviour is that it contains an element.
//      *
//      * @return true, if is content element
//      */
//     default boolean isContentElement() {
//         return true;
//     }
// 
//     /**
//      * Checks if wrapper should be sorted. Default behaviour is that it that the Wrapper is sortable.
//      *
//      * @return true, if is sortable
//      */
//     default boolean isSortable() {
//         return true;
//     }
// 
//     /**
//      * Output debug-friendly string
//      *
//      * @param indent The indentation indicates nested elements
//      * @return The debug string
//      */
//     default String toString(String indent) {
//         return indent + toString();
//     }
// 
// }


import org.jdom.Attribute;
import org.jdom.Element;
import sortpom.wrapper.content.Wrapper;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
package sortpom.wrapper.operation;



/**
 * Xml hierarchy operation that sort all attributes of xml elements. Used by
 * Used in HierarchyWrapper.processOperation(HierarchyWrapperOperation operation)
 * @author bjorn
 * @since 2013-11-01
 */
class SortAttributesOperation implements HierarchyWrapperOperation {
    private static final Comparator<Attribute> ATTRIBUTE_COMPARATOR = Comparator.comparing(Attribute::getName);

    /** Sort attributes of each element */
    @Override
// Path: sorter/src/main/java/sortpom/wrapper/content/Wrapper.java
// public interface Wrapper<T extends Content> {
// 
//     /**
//      * Gets the wrapped content.
//      *
//      * @return the content
//      */
//     T getContent();
// 
//     /**
//      * Checks if wrapper should be placed before another wrapper.
//      *
//      * @param wrapper the wrapper
//      * @return true, if is before
//      */
//     boolean isBefore(Wrapper<? extends Content> wrapper);
// 
//     /**
//      * Checks if is content is of type Element. Default behaviour is that it contains an element.
//      *
//      * @return true, if is content element
//      */
//     default boolean isContentElement() {
//         return true;
//     }
// 
//     /**
//      * Checks if wrapper should be sorted. Default behaviour is that it that the Wrapper is sortable.
//      *
//      * @return true, if is sortable
//      */
//     default boolean isSortable() {
//         return true;
//     }
// 
//     /**
//      * Output debug-friendly string
//      *
//      * @param indent The indentation indicates nested elements
//      * @return The debug string
//      */
//     default String toString(String indent) {
//         return indent + toString();
//     }
// 
// }


// Path: sorter/src/main/java/sortpom/wrapper/operation/SortAttributesOperation.java
import org.jdom.Attribute;
import org.jdom.Element;
import sortpom.wrapper.content.Wrapper;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

package sortpom.wrapper.operation;



/**
 * Xml hierarchy operation that sort all attributes of xml elements. Used by
 * Used in HierarchyWrapper.processOperation(HierarchyWrapperOperation operation)
 * @author bjorn
 * @since 2013-11-01
 */
class SortAttributesOperation implements HierarchyWrapperOperation {
    private static final Comparator<Attribute> ATTRIBUTE_COMPARATOR = Comparator.comparing(Attribute::getName);

    /** Sort attributes of each element */
    @Override
    public void processElement(Wrapper<Element> elementWrapper) {