private boolean readArray()
	throws IOException,
	       JSONSyntaxException {

	// Mind the case of an empty array: []
	/*if( this.currentChar == ']' ) {
	    this.fireArrayEnd();
	    return true;
	    }*/

	// while( this.readJSON(false,true) && this.currentChar != ']' ) {
	boolean stop = false;
	do {
	    
	    boolean jsonValueRead = this.readJSON(false,true);
	    stop = (!jsonValueRead || this.currentChar == ']');
	    if( jsonValueRead )
		fireArrayElementEnd();
	    
	    if( !stop ) {
		// array elements are separated by ','
		if( this.currentChar != ',' )
		    this.skipWhitespace();
		if( this.currentChar == ']' ) {
		    this.fireArrayEnd();
		    this.readChar();
		    return true;
		}
		if( this.currentChar != ',' )
		    throwJSONException( "Unexpected token: " + this.describeCurrentToken() + ". Failed to read array's value or end of array (expected ',')." );
	    }
	} while( !stop );

	if( this.currentChar == ']' ) {
	    this.fireArrayEnd();
	    this.readChar();
	}

	return (this.currentValue != -1);
    }