@@ -0,0 +1,1838 @@
+package net.sf.kerner.utils.collections;%0A%0Aimport java.util.ArrayList;%0Aimport java.util.Collection;%0Aimport java.util.List;%0A%0Aimport net.sf.kerner.utils.UtilString;%0Aimport net.sf.kerner.utils.collections.list.impl.UtilList;%0Aimport net.sf.kerner.utils.transformer.Transformer;%0A%0Apublic abstract class ToStringStrategyAbstract%3CT%3E implements Transformer%3CT, String%3E %7B%0A%0A    public final static String DEFAULT_DELIMITER = %22%5Ct%22;%0A%0A    public final static String DEFAULT_SEPARATOR = UtilString.NEW_LINE_STRING;%0A%0A    protected String separator = DEFAULT_SEPARATOR;%0A%0A    protected String delimiter = DEFAULT_DELIMITER;%0A%0A    protected List%3C?%3E prefix = UtilList.newList();%0A%0A    protected List%3C?%3E postfix = UtilList.newList();%0A%0A    /**%0A     * e.g. %7B@code %5Ct%7D%0A     *%0A     */%0A    public synchronized String getDelimiter() %7B%0A        return delimiter;%0A    %7D%0A%0A    public abstract String getEmptyRow();%0A%0A    public synchronized List%3C?%3E getPostfix() %7B%0A        return postfix;%0A    %7D%0A%0A    public synchronized List%3C?%3E getPrefix() %7B%0A        return prefix;%0A    %7D%0A%0A    /**%0A     * e.g. %7B@code %5Cn%7D%0A     *%0A     */%0A    public synchronized String getSeparator() %7B%0A        return separator;%0A    %7D%0A%0A    public synchronized void setDelimiter(final String delimiter) %7B%0A        this.delimiter = delimiter;%0A    %7D%0A%0A    public synchronized void setPostfix(final List%3C?%3E postfix) %7B%0A        this.postfix = postfix;%0A    %7D%0A%0A    public synchronized void setPrefix(final List%3C?%3E prefix) %7B%0A        this.prefix = prefix;%0A    %7D%0A%0A    public synchronized void setSeparator(final String separator) %7B%0A        this.separator = separator;%0A    %7D%0A%0A    public String toString(final Collection%3C? extends T%3E elements) %7B%0A        return UtilCollection.toString(new ArrayList%3CT%3E(elements), this, separator);%0A    %7D%0A%0A    public String toString(final T element) %7B%0A        return transform(element);%0A    %7D%0A%0A%7D%0A

Introduce ToStringStrategyAbstract.