// Path: src/main/java/pl/wavesoftware/eid/api/Configuration.java
// public interface Configuration {
//     /**
//      * Gets a Eid formatter
//      *
//      * @return a formatter of Eid
//      */
//     Formatter getFormatter();
// 
//     /**
//      * Gets a Eid unique ID generator
//      *
//      * @return unique ID generator
//      */
//     UniqueIdGenerator getIdGenerator();
// 
//     /**
//      * Gets a Eid validator if set. Returns null if validator wasn't configured.
//      *
//      * @return an Eid validator, or null
//      */
//     @Nullable
//     Validator getValidator();
// 
//     /**
//      * Gets a locale to be used when formatting texts. Returns null if locale
//      * isn't set.
//      *
//      * @return a locale to be used when formatting texts, or null
//      */
//     @Nullable
//     Locale getLocale();
// 
//     /**
//      * Gets a time zone to be used when formatting texts. Returns null if time
//      * zone isn't set.
//      *
//      * @return a time zone to be used when formatting texts, or null
//      */
//     @Nullable
//     TimeZone getTimeZone();
// }
// 
// Path: src/main/java/pl/wavesoftware/eid/api/Eid.java
// public interface Eid extends Serializable {
//     /**
//      * Getter for constant Exception ID
//      *
//      * @return ID of exception
//      */
//     String getId();
// 
//     /**
//      * Get an external reference passed to Exception ID
//      *
//      * @return an external reference, or null if not set
//      */
//     @Nullable
//     String getRef();
// 
//     /**
//      * Do this Exception ID has an external reference number?
//      *
//      * @return true, if has an external reference
//      */
//     boolean hasRef();
// 
//     /**
//      * Gets unique generated string for this instance of Eid
//      *
//      * @return a unique string
//      */
//     String getUnique();
// 
//     /**
//      * Creates a message object from this Eid, with given message template and
//      * template arguments. Message template and arguments will be interpolated
//      * using {@link java.text.MessageFormat#format(String, Object...)} method.
//      *
//      * @param messageTemplate   a message format
//      * @param templateArguments a message format arguments that will be
//      *                          interpolated to format string
//      * @return a message object
//      */
//     EidMessage message(
//         CharSequence messageTemplate,
//         Object... templateArguments
//     );
// }
// 
// Path: src/main/java/pl/wavesoftware/eid/api/Formatter.java
// public interface Formatter {
//     /**
//      * Formats an Eid number to string
//      *
//      * @param eid an eid number
//      * @return a string with formatted Eid number
//      */
//     String format(Eid eid);
// 
//     /**
//      * Formats an Eid paired with a message.
//      *
//      * @param eid     an eid number to format
//      * @param message a message to be pair to eid
//      * @return a string with formatted eid and message
//      */
//     String format(Eid eid, String message);
// }


import pl.wavesoftware.eid.api.Configuration;
import pl.wavesoftware.eid.api.Eid;
import pl.wavesoftware.eid.api.Formatter;
import javax.annotation.Nullable;
import java.util.Locale;
                eid.getId(),
                eid.getUnique()
            };
        } else {
            fmt = REF_FORMAT;
            params = new Object[]{
                eid.getId(),
                eid.getRef(),
                eid.getUnique()
            };
        }
        java.util.Formatter formatter = getStringFormatter()
            .format(fmt, params);
        return formatter.toString();
    }

    @Override
    public String format(Eid eid, String message) {
        return getStringFormatter()
            .format(
                MSG_FORMAT,
                format(eid),
                message
            ).toString();
    }

    private java.util.Formatter getStringFormatter() {
        @Nullable
        Locale locale = configuration.getLocale();
        if (locale != null) {
// Path: src/main/java/pl/wavesoftware/eid/api/Configuration.java
// public interface Configuration {
//     /**
//      * Gets a Eid formatter
//      *
//      * @return a formatter of Eid
//      */
//     Formatter getFormatter();
// 
//     /**
//      * Gets a Eid unique ID generator
//      *
//      * @return unique ID generator
//      */
//     UniqueIdGenerator getIdGenerator();
// 
//     /**
//      * Gets a Eid validator if set. Returns null if validator wasn't configured.
//      *
//      * @return an Eid validator, or null
//      */
//     @Nullable
//     Validator getValidator();
// 
//     /**
//      * Gets a locale to be used when formatting texts. Returns null if locale
//      * isn't set.
//      *
//      * @return a locale to be used when formatting texts, or null
//      */
//     @Nullable
//     Locale getLocale();
// 
//     /**
//      * Gets a time zone to be used when formatting texts. Returns null if time
//      * zone isn't set.
//      *
//      * @return a time zone to be used when formatting texts, or null
//      */
//     @Nullable
//     TimeZone getTimeZone();
// }
// 
// Path: src/main/java/pl/wavesoftware/eid/api/Eid.java
// public interface Eid extends Serializable {
//     /**
//      * Getter for constant Exception ID
//      *
//      * @return ID of exception
//      */
//     String getId();
// 
//     /**
//      * Get an external reference passed to Exception ID
//      *
//      * @return an external reference, or null if not set
//      */
//     @Nullable
//     String getRef();
// 
//     /**
//      * Do this Exception ID has an external reference number?
//      *
//      * @return true, if has an external reference
//      */
//     boolean hasRef();
// 
//     /**
//      * Gets unique generated string for this instance of Eid
//      *
//      * @return a unique string
//      */
//     String getUnique();
// 
//     /**
//      * Creates a message object from this Eid, with given message template and
//      * template arguments. Message template and arguments will be interpolated
//      * using {@link java.text.MessageFormat#format(String, Object...)} method.
//      *
//      * @param messageTemplate   a message format
//      * @param templateArguments a message format arguments that will be
//      *                          interpolated to format string
//      * @return a message object
//      */
//     EidMessage message(
//         CharSequence messageTemplate,
//         Object... templateArguments
//     );
// }
// 
// Path: src/main/java/pl/wavesoftware/eid/api/Formatter.java
// public interface Formatter {
//     /**
//      * Formats an Eid number to string
//      *
//      * @param eid an eid number
//      * @return a string with formatted Eid number
//      */
//     String format(Eid eid);
// 
//     /**
//      * Formats an Eid paired with a message.
//      *
//      * @param eid     an eid number to format
//      * @param message a message to be pair to eid
//      * @return a string with formatted eid and message
//      */
//     String format(Eid eid, String message);
// }


// Path: src/main/java/pl/wavesoftware/eid/impl/DefaultFormatter.java
import pl.wavesoftware.eid.api.Configuration;
import pl.wavesoftware.eid.api.Eid;
import pl.wavesoftware.eid.api.Formatter;
import javax.annotation.Nullable;
import java.util.Locale;

                eid.getId(),
                eid.getUnique()
            };
        } else {
            fmt = REF_FORMAT;
            params = new Object[]{
                eid.getId(),
                eid.getRef(),
                eid.getUnique()
            };
        }
        java.util.Formatter formatter = getStringFormatter()
            .format(fmt, params);
        return formatter.toString();
    }

    @Override
    public String format(Eid eid, String message) {
        return getStringFormatter()
            .format(
                MSG_FORMAT,
                format(eid),
                message
            ).toString();
    }

    private java.util.Formatter getStringFormatter() {
        @Nullable
        Locale locale = configuration.getLocale();
        if (locale != null) {
            return new java.util.Formatter(locale);