ajax: function( url, options ) {
	/* 45 wierszy kodu */
	var /*...*/ jqXHR = {
		readyState: 0,

		// Tworzenie w razie potrzeby tablicy mieszającej nagłówków
		getResponseHeader: function( key ) {/* ... */},

		// Nieprzetworzony łańcuch
		getAllResponseHeaders: function() {/* ... */},

		// Buforowanie nagłówka
		setRequestHeader: function( name, value ) {/* ... */},

		// Przesłanianie nagłówka typu zawartości odpowiedzi
		overrideMimeType: function( type ) {/* ... */},

		// Wywołania zwrotne zależne od statusu
		statusCode: function( map ) {/* ... */},
		/* ... */
	};
	/* 84 wiersze kodu */
	if ( s.ifModified ) {
		if ( jQuery.lastModified[ cacheURL ] ) {
			jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
		}
		if ( jQuery.etag[ cacheURL ] ) {
			jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
		}
	}

	// Ustawienie poprawnego nagłówka w wypadku wysyłania danych
	if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
		jqXHR.setRequestHeader( "Content-Type", s.contentType );
	}

	// Ustawianie nagłówka Accept dla serwera (zależnie od typu danych)
	jqXHR.setRequestHeader("Accept",/* 3 lines of code */);

	// Sprawdzenie opcji headers
	for ( i in s.headers ) {
		jqXHR.setRequestHeader( i, s.headers[ i ] );
	}
	/* 16 wierszy kodu */
	transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );

	// W przypadku braku obiektu transportu ma miejsce automatyczne przerwanie
	if ( !transport ) {
		done( -1, "Brak obiektu transportu" );
	} else {
		jqXHR.readyState = 1;
		/* 12 wierszy kodu */
		try {
			state = 1;
			transport.send( requestHeaders, done );
		} catch ( e ) {
			/* 7 wierszy kodu */
		}
	}
	/* 115 wierszy kodu */
	return jqXHR;
}