private int arrayState( char next ) {

        if ( next == ',' ) {

            buffer.pop();
            next = nextValue();
        }

        switch (next) {

            case END_ARRAY: {

                popState();
                return returnValue( END_ARRAY, state );
            }

            case '"': {

                parseAndSetString();
                return returnValue( STRING, state );
            }

            case START_OBJECT: {

                pushAndSetState( STATE_OBJECT );
                return returnValue( START_OBJECT, state );
            }

            case START_ARRAY: {

                pushAndSetState( STATE_ARRAY );
                return returnValue( START_ARRAY, state );
            }

            default: {

                return defaultArrayState( next );
            }
        }
    }