private void ObsluzKolizje(bool kolidujacaJestDluzsza, IRzeka kolizyjnaRzeka, IPunkt punktKolizji)
 {
     if (kolidujacaJestDluzsza)
      {
     PogrubRzekeOdPunktu(kolizyjnaRzeka, punktKolizji, _aktualnaGrubosc);
      }
      else
      {
     float gruboscDoDodania = kolizyjnaRzeka.Odcinki.First(o => o.PunktA == punktKolizji).Grubosc;
     _aktualnaGrubosc += gruboscDoDodania;
     IList<IOdcinekRzeki> wycinek = WytnijCzescRzekiOdPunktu(kolizyjnaRzeka, punktKolizji);
     _odcinki = _odcinki.Concat(wycinek).ToList();
      }
 }
 private void PogrubRzekeOdPunktu(IRzeka rzeka, IPunkt punkt, float aktualnaGrubosc)
 {
     int indeksPunktu = rzeka.DlugoscDoPunktu(punkt);
      foreach (var odcinekRzeki in rzeka.Odcinki.Skip(indeksPunktu))
      {
     odcinekRzeki.Grubosc += aktualnaGrubosc;
      }
 }
 private IList<IOdcinekRzeki> WytnijCzescRzekiOdPunktu(IRzeka rzeka, IPunkt punkt)
 {
     int indeks = rzeka.DlugoscDoPunktu(punkt);
      var wycinek = rzeka.Odcinki.Skip(indeks).ToList();
      rzeka.Odcinki = rzeka.Odcinki.Take(indeks).ToList();
      return wycinek;
 }