public InputStream getInputStream()
	throws IOException {

	if( !this.isOpen() )
	    throw new IOException( "Cannot retrieve resource's input stream. Resouce was not yet opened." );

	if( this.readLimitInputStream == null ) {

	    if( this.contentRange.getLastBytePosition() >= this.getCoreResource().getLength() )
		throw new IOException( "Failed to initialize the RangedResource's input stream; the passed Content-Range " + this.contentRange.toString() + " is out of bounds!" );

	    // Init the stream(s)!
	    InputStream tmpIn = this.getCoreResource().getInputStream();
	    if( this.contentRange.getFirstBytePosition() > 0 ) {
		
		// Skip n bytes at the beginning
		tmpIn.skip( this.contentRange.getFirstBytePosition() );

	    }

	    this.readLimitInputStream = new ReadLimitInputStream( tmpIn,
								  this.contentRange.calculateLength()
								  );

	}



	return this.readLimitInputStream;
    }