public ContentRange( String bytesUnit,
			 long firstBytePos,
			 long lastBytePos,
			 long instanceLen ) 
	throws NullPointerException,
	       IllegalArgumentException {

	super();

	if( bytesUnit == null )
	    throw new NullPointerException( "Cannot create Content-Range wrappers with null-bytesUnit." );
	if( !bytesUnit.equalsIgnoreCase(ContentRange.NAME_BYTESUNIT_BYTES) )
	    throw new IllegalArgumentException( "Unknown/unsupported value for bytesUnit: " + bytesUnit + "." );
	if( firstBytePos < 0 )
	    throw new IllegalArgumentException( "firstBytePosition must not be less than zero (" + firstBytePos + ")." );
	if( instanceLen >= 0 ) {

	    if( firstBytePos >= instanceLen )
		throw new IllegalArgumentException( "firstBytePosition cannot be larger than instanceLength (" + firstBytePos + " >= " + instanceLen + ")." );

	    if( lastBytePos >= instanceLen )
		throw new IllegalArgumentException( "lastBytePosition cannot be larger than instanceLength (" + lastBytePos + " >= " + instanceLen + ")." );

	}
	if( firstBytePos > lastBytePos )
	    throw new IllegalArgumentException( "firstBytePosition must not be larger than lastBytePosition (" + firstBytePos + " > " + lastBytePos + ")." );


	this.bytesUnit         = bytesUnit;
	this.firstBytePosition = firstBytePos;
	this.lastBytePosition  = lastBytePos;
	this.instanceLength    = instanceLen;

    }