class MessageFormatter {

    static final void deeplyAppendParameter(final StringBuilder sbuild, final Object o,
        final Map<Object[], Void> seenMap) {
        if (o == null) {
            sbuild.append("null");
            return;
        }
        if (!o.getClass().isArray()) {
            safeObjectAppend(sbuild, o);
        } else {
            // check for primitive array types because they
            // unfortunately cannot be cast to Object[]
            if (o instanceof boolean[]) {
                booleanArrayAppend(sbuild, (boolean[]) o);
            } else if (o instanceof byte[]) {
                byteArrayAppend(sbuild, (byte[]) o);
            } else if (o instanceof char[]) {
                charArrayAppend(sbuild, (char[]) o);
            } else if (o instanceof short[]) {
                shortArrayAppend(sbuild, (short[]) o);
            } else if (o instanceof int[]) {
                intArrayAppend(sbuild, (int[]) o);
            } else if (o instanceof long[]) {
                longArrayAppend(sbuild, (long[]) o);
            } else if (o instanceof float[]) {
                floatArrayAppend(sbuild, (float[]) o);
            } else if (o instanceof double[]) {
                doubleArrayAppend(sbuild, (double[]) o);
            } else {
                objectArrayAppend(sbuild, (Object[]) o, seenMap);
            }
        }
    }

    private  MessageFormatter();

}