src/main/java/walkingkooka/datetime/DateTimeFormatterPatternVisitor.java
/**
     * <pre>
     * O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;
     * </pre>
     * <pre>
     * Offset O: This formats the localized offset based on the number of pattern letters.
     * One letter outputs the short form of the localized offset, which is localized offset text, such as 'GMT',
     * with hour without leading zero, optional 2-digit minute and second if non-zero, and colon, for example 'GMT+8'.
     * Four letters outputs the full form, which is localized offset text, such as 'GMT, with 2-digit hour and minute field,
     * optional second field if non-zero, and colon, for example 'GMT+08:00'. Any other count of letters throws IllegalArgumentException.
     * </pre>
     */

O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;


Offset O: This formats the localized offset based on the number of pattern letters.
One letter outputs the short form of the localized offset, which is localized offset text, such as 'GMT',
with hour without leading zero, optional 2-digit minute and second if non-zero, and colon, for example 'GMT+8'.
Four letters outputs the full form, which is localized offset text, such as 'GMT, with 2-digit hour and minute field,
optional second field if non-zero, and colon, for example 'GMT+08:00'. Any other count of letters throws IllegalArgumentException.
O localized zone - offset offset - O GMT + 8 ; GMT + 08 : 00 ; UTC - 08 : 00 ; Offset O : This formats the localized offset based on the number of pattern letters . One letter outputs the short form of the localized offset which is localized offset text such as ' GMT ' with hour without leading zero optional 2 - digit minute and second if non - zero and colon for example ' GMT + 8 ' . Four letters outputs the full form which is localized offset text such as ' GMT with 2 - digit hour and minute field optional second field if non - zero and colon for example ' GMT + 08 : 00 ' . Any other count of letters throws IllegalArgumentException .
final void traverseLocalizedZoneOffset(final int width,
                                           final DateTimeFormatterPatternComponentKind kind) {
        switch (width) {
            case 1:
            case 4:
                this.visitLocalizedZoneOffset(width, kind);
                break;
            default:
                this.visitIllegal(DateTimeFormatterPatternVisitor.LOCALIZED_ZONE_OFFSET, width);
        }
    }
final void traverseLocalizedZoneOffset ( final int width , final DateTimeFormatterPatternComponentKind kind ) { switch ( width ) { case 1 : case 4 : this . visitLocalizedZoneOffset ( width , kind ) ; break ; default : this . visitIllegal ( DateTimeFormatterPatternVisitor . LOCALIZED_ZONE_OFFSET , width ) ; } }
<pre>
 O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;
 </pre>
 <pre>
 Offset O: This formats the localized offset based on the number of pattern letters.
<pre > O localized zone - offset offset - O GMT + 8 ; GMT + 08 : 00 ; UTC - 08 : 00 ; < / pre > <pre > Offset O : This formats the localized offset based on the number of pattern letters .