From 680b34819d71fb35ff4cd3c66015046e8b3ff268 Mon Sep 17 00:00:00 2001
From: hiba1907 <166406894+hiba1907@users.noreply.github.com>
Date: Fri, 22 Nov 2024 16:10:13 +0100
Subject: [PATCH] realisation des taches jusqu'a la tache 4 du tp7

---
 .../8.8/executionHistory/executionHistory.bin |  Bin 40649 -> 57891 bytes
 .../executionHistory/executionHistory.lock    |  Bin 17 -> 17 bytes
 .gradle/8.8/fileHashes/fileHashes.bin         |  Bin 22397 -> 23797 bytes
 .gradle/8.8/fileHashes/fileHashes.lock        |  Bin 17 -> 17 bytes
 .../8.8/fileHashes/resourceHashesCache.bin    |  Bin 21965 -> 22645 bytes
 .../buildOutputCleanup.lock                   |  Bin 17 -> 17 bytes
 .gradle/buildOutputCleanup/outputFiles.bin    |  Bin 18965 -> 19073 bytes
 .gradle/file-system.probe                     |  Bin 8 -> 8 bytes
 .../matrix/ConstantMatrixInitializer.class    |  Bin 843 -> 881 bytes
 .../java/main/matrix/CoordinateIterator.class |  Bin 1119 -> 1102 bytes
 .../classes/java/main/matrix/ListMatrix.class |  Bin 3372 -> 3029 bytes
 .../main/model/automata/GameOfLifeState.class |  Bin 1995 -> 3124 bytes
 .../matrix.ConstantMatrixInitializerTest.html |  305 +++++
 .../matrix.CoordinateIteratorTest.html        |  106 ++
 .../test/classes/matrix.CoordinateTest.html   |  131 +++
 .../test/classes/matrix.ListMatrixTest.html   |  324 ++++++
 .../tests/test/classes/model.CellTest.html    |  305 +++++
 ...model.CellularAutomatonSimulationTest.html | 1020 +++++++++++++++++
 .../model.NextGenerationInitializerTest.html  |  419 +++++++
 .../tests/test/classes/model.StateTest.html   |  111 ++
 .../model.automata.GameOfLifeStateTest.html   |  111 ++
 build/reports/tests/test/css/base-style.css   |  179 +++
 build/reports/tests/test/css/style.css        |   84 ++
 build/reports/tests/test/index.html           |  313 +++++
 build/reports/tests/test/js/report.js         |  194 ++++
 build/reports/tests/test/packages/matrix.html |  157 +++
 .../tests/test/packages/model.automata.html   |  103 ++
 build/reports/tests/test/packages/model.html  |  197 ++++
 ...T-matrix.ConstantMatrixInitializerTest.xml |  196 ++++
 .../TEST-matrix.CoordinateIteratorTest.xml    |    9 +
 .../test/TEST-matrix.CoordinateTest.xml       |   14 +
 .../test/TEST-matrix.ListMatrixTest.xml       |  195 ++++
 .../test-results/test/TEST-model.CellTest.xml |  196 ++++
 ...-model.CellularAutomatonSimulationTest.xml |  840 ++++++++++++++
 ...ST-model.NextGenerationInitializerTest.xml |  293 +++++
 .../test/TEST-model.StateTest.xml             |   10 +
 ...EST-model.automata.GameOfLifeStateTest.xml |   10 +
 build/test-results/test/binary/output.bin     |    0
 build/test-results/test/binary/output.bin.idx |  Bin 0 -> 1 bytes
 build/test-results/test/binary/results.bin    |  Bin 0 -> 181324 bytes
 .../CellularAutomaton.class.uniqueId6         |  Bin 389 -> 0 bytes
 ...ellularAutomatonSimulation.class.uniqueId1 |  Bin 4336 -> 0 bytes
 .../ConstantMatrixInitializer.class.uniqueId0 |  Bin 0 -> 843 bytes
 .../GameOfLifeAutomaton.class.uniqueId4       |  Bin 1141 -> 0 bytes
 .../stash-dir/GameOfLifeState.class.uniqueId2 |  Bin 1995 -> 0 bytes
 .../stash-dir/ListMatrix.class.uniqueId1      |  Bin 0 -> 3029 bytes
 .../NextGenerationInitializer.class.uniqueId0 |  Bin 1408 -> 0 bytes
 .../SimulatorApplication.class.uniqueId3      |  Bin 3200 -> 0 bytes
 .../stash-dir/State.class.uniqueId5           |  Bin 723 -> 0 bytes
 .../compileJava/previous-compilation-data.bin |  Bin 21437 -> 21443 bytes
 ...larAutomatonSimulationTest.class.uniqueId2 |  Bin 0 -> 7578 bytes
 ...stantMatrixInitializerTest.class.uniqueId0 |  Bin 1489 -> 0 bytes
 .../GameOfLifeStateTest.class.uniqueId1       |  Bin 0 -> 2205 bytes
 .../stash-dir/ListMatrixTest.class.uniqueId1  |  Bin 4407 -> 0 bytes
 ...tGenerationInitializerTest.class.uniqueId0 |  Bin 0 -> 2997 bytes
 .../previous-compilation-data.bin             |  Bin 4499 -> 4499 bytes
 .../matrix/ConstantMatrixInitializer.java     |    8 +-
 src/main/java/matrix/CoordinateIterator.java  |    8 +-
 src/main/java/matrix/ListMatrix.java          |   48 +-
 .../model/automata/GameOfLifeAutomaton.java   |   18 +-
 .../java/model/automata/GameOfLifeState.java  |   18 +-
 61 files changed, 5877 insertions(+), 45 deletions(-)
 create mode 100644 build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
 create mode 100644 build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
 create mode 100644 build/reports/tests/test/classes/matrix.CoordinateTest.html
 create mode 100644 build/reports/tests/test/classes/matrix.ListMatrixTest.html
 create mode 100644 build/reports/tests/test/classes/model.CellTest.html
 create mode 100644 build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
 create mode 100644 build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
 create mode 100644 build/reports/tests/test/classes/model.StateTest.html
 create mode 100644 build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
 create mode 100644 build/reports/tests/test/css/base-style.css
 create mode 100644 build/reports/tests/test/css/style.css
 create mode 100644 build/reports/tests/test/index.html
 create mode 100644 build/reports/tests/test/js/report.js
 create mode 100644 build/reports/tests/test/packages/matrix.html
 create mode 100644 build/reports/tests/test/packages/model.automata.html
 create mode 100644 build/reports/tests/test/packages/model.html
 create mode 100644 build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
 create mode 100644 build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
 create mode 100644 build/test-results/test/TEST-matrix.CoordinateTest.xml
 create mode 100644 build/test-results/test/TEST-matrix.ListMatrixTest.xml
 create mode 100644 build/test-results/test/TEST-model.CellTest.xml
 create mode 100644 build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
 create mode 100644 build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
 create mode 100644 build/test-results/test/TEST-model.StateTest.xml
 create mode 100644 build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
 create mode 100644 build/test-results/test/binary/output.bin
 create mode 100644 build/test-results/test/binary/output.bin.idx
 create mode 100644 build/test-results/test/binary/results.bin
 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomaton.class.uniqueId6
 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId1
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId0
 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeAutomaton.class.uniqueId4
 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeState.class.uniqueId2
 create mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId1
 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId0
 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3
 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/State.class.uniqueId5
 create mode 100644 build/tmp/compileTestJava/compileTransaction/stash-dir/CellularAutomatonSimulationTest.class.uniqueId2
 delete mode 100644 build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0
 create mode 100644 build/tmp/compileTestJava/compileTransaction/stash-dir/GameOfLifeStateTest.class.uniqueId1
 delete mode 100644 build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1
 create mode 100644 build/tmp/compileTestJava/compileTransaction/stash-dir/NextGenerationInitializerTest.class.uniqueId0

diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin
index 7db84cf512cfbd6344621c3243526dc4cc2dc375..002104d3253eeb3a4915674ded851812064f1733 100644
GIT binary patch
delta 8376
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
W`E*CqyM1wT)faBFFfcGUhXDXiEQkgG

delta 1068
zcmZ2{g!$xNrVS<%jLefwB|LckLjeN=L*z!qAL1Jg4v700GcYKZGB7CTg7EC@l*%-d
zq$DG=q$J~%v`Ta1yy7aef|7!?RDpM^?IXnfoij3~#(I1_zTnFh77U@yy&koKLRHdD
zVGC#M=kKst^n626rY7UE$q8!|Cfh_E7EqX)ze0s=j^!@#Z|#`}+Ez{Gk4_ijo+$Zj
z!kjmA4K{v`+}PEd#yEX)T(sEcdC?9`LRTaYo6li($-8l9&7V6*J6|v^nS8KDelvfZ
zC7ZyhpwGGoKFYODWoM7{)ROu-S$bCVWQF}KleecBu&iFQeE#IuDaI_%RxO`DSt(V6
zrD4VL`IG%poy5N!@bZzhi#>kldAQiOX=;TB*Ds&H)#&u(<*BMH&p?VUq$;?W=J#<k
z=vdvg&Ww0@X?LpMO|YW-9E=lvGK))m6HAIREA*0c5{ru&1b99@OFbI4NOtS9nmmVm
z*|zNqE-lz<v_@*ONty!JvvnZT7YH-Xn5?i@d~#`;5X;B4%jZw-PScS-2{yEgi<v<n
zxc<#I&d46VjJit&*Qz&1PR^MvJNbQ@BG=jP?-y(}`pUsLZSsX0QC$WB&i2O)v5%Y<
zJXhQC@Mu!-&%0m+r}>!~1iB0-Z+yPV&r-X0?u%(Vf=^A3Nta{!53;Q;U7zK`_xB4X
zZ%nsjnfv4Yg30gFO<CT8q|`H%Sk{6Vz8U6RYkz=jYv5*_J~{A^*yJS{LM*R9L9#1D
zS@tp5qIM2u27ylblKIZw`;MfYI#8*yVA&nU*^})LOHCHZ6k<6EvPCP?f@Smi<?|<}
zWooc20vSFjQ=4Tah;cB}NN+dT-_t=R#hsAomAO^Pd-0?5{)U)8KbRQ=M3x3$6)s`)
zN!y|@JL>7`bDI^j>KVm<$X)fGux`sW?mb@uXGcoOulWgb>E6xTv&C8LjB<-g(o&Oh
zjM7pHiqbQZGINWQ%qxv@a!dqtIL^P@#&XNCaOW0}4F@0Hy26Yhw7J)Vjcv0~*-vJH
z?gO^dgAb^^jMuBxT{r3E>dn$sQ<wxQ6V7X}B(FWY?tWLKn~-h%=KVE!`~s0yySkfB
zEmHWmB)aTI=1t+r0{JGJ=Uhl-*?eunV@{UOi!Uvhymyuf%htoo=TH7RONXoJASfvu
z6J?w_dEyq4$@a5_Se`Dqv|w`R>`<1YyO+<Oyl%Dw*XjcxMUVLy=S;TTCOuhrju6ZG
z1Iy=6)|{ipwG}M4iHC97<cW6_CRff8=en>Dq<oe&<C4i26C@|sZ{(W1ca9LthW*Ru
zPrf`you%o(^7)(p%~{JRXK?A_Jw<b!?T0NtH$U-<pFeRaD3wlDW?^Jt&}Rhz*uCy)

diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock
index 8dd60600587a381839406e5a67c47d9ee2a0037b..680bb90eea9d459f0c26444877748f3a6d3dd03a 100644
GIT binary patch
literal 17
TcmZP$3QmdP%AV%R00FH4B18i|

literal 17
TcmZP$3QmdP%AV%R00Hg*A_fBh

diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin
index 9b87dbd18e4735170e1a9941f3730342b9f27460..74ccaa4de4100e0b144bc437ce03e04536454070 100644
GIT binary patch
delta 2773
zcmeynj`8bG#tkMCnpsUE95uIe=S^k+g8=9MP|$qR$Kgy3{{*lwL-_j1t`Y$PQwyzD
z7-y%2LIk7EPwtgy<gb<3YR-363nCU#KABZgL12+z|AFU~c0Lfn=;@PXB{Kw8>|cB)
zVeXAbP(kC#wUP=B>uk1f=T`3Lg$RZ}gj)Z9-ARei!tPB|A>vWlF!4>d{GE$`s!xH4
zN2gAnD)~U;+)KR-h2Zu3A%YRYFvaJ;b-HTV^Y%c*qu3|sO3mb-8SpXWxZg*JSj@!9
zf2DqCe7Dd&zOF3x8ALE*CCq^TEn64bOk5xV5s$Q={8m~)fc5v4SF?q;X+s2~Pfli)
zvC!ZsGSRa?mHPl97+woAfn%=Ze6<7Xq2U;#JK0o5L4f=IW4)(eR~&^Xj<THWD>Fkt
zy75}<_q1QE5W&dBlkdt{XqaqxaLZ$(@lJ?f#BG?druIu@Pw4YrfQUz4oy;q%pkbP!
z6co>ObOl5(CLXT%#7@J0wl@zU;t{TsRb>?f9B1!6`pGK(J47&&ce1Ulf`AM2IkWEd
zRyh#Cn8TApWi13e&;H!GD)F8sL@=^&a;vN*zg6wW*@3s&AY#$KCvTNKA&~ywA;oTS
z*j1<?<K$Ag27%(+D%Rgm?R^XpjG8<7t=u9eF2;?DKg2g0NbqfT^q9w}u=C6I%jPTf
z&pq4d#u^u4w2Xm)adL=<U;{)GbLQs%o>@#m@~LM<Y^?Q}D(eNmT#4KG46Mr8gBzlX
zJ)ePrLC=_hfdS-FMFs{2MFEYr(D;rQY#hp0rk^?>)Mo<L5pa4FL<ghc<lR0i6aw-O
z&0IY3v6*2;Q1IS2uLZ!0OnPQQ6tNze-0Z8y65`D-GI_199*EI5`96dZK3ULDpV?c$
zWU{lLo?VEyfI37E%N<OoFx+?{n`-df>4w#l*zI#tAYSwq5QgaBF`2yHPo3GD|MTRV
zejrN(q$hLxgBbjJlWqM$mWWTz2hsfBCNG3YyqkO(Bp?tunKb~c^66xAFhd}Aa<#A2
z<mLbokZYe$o(&OAntV1upV^zAZ}NYLfZSxmK&hZIlaF&b9<p0CI##ra&hjb*dq3d9
z0*J$y3o*U&J@5MWvYhoNQWLhQIB(DR3)bN+08+`oz`)`+d2S#$z;q@b4+J?(AZzkZ
z2qSp1c92vM-&bz?j!Pa9Yk0T1RI~hn=nuFs7h)qfDE*+t<6#cQpzgGT&xO|uwwe3Y
z3W045xNse!Blz&--$Ck|_XTw_v4nVwv`+R81z9V;W^yfr@ptliFhe3~@<Rw?!DQhu
zkQ#{<lU*T<d6Ub-^qIY-JSVRN3rJc_z6}zPES$_64pJ(4d9r=DRDFZ;X8Zqc6%A*$
z79J?8uM7b@#an7U#3_QHf)vg1XIMFW?yzPD=$8Gv$95|35m<-URZt3LU|>1|DkRZ#
ztbT0WUwA2^yK+f)`6TzhO;8=83=9nQAbS`w<K%1MWb2(C;nni<4a$D^A3p}sa#|Op
z9E#B_nf?5#kY3RH-gHBs%v7bE&k!9~p@ot>sI)-SAwKbeVEz2^7s|1#YBG%CSQDUH
zenTwa0@Vv>TCOE+OY1(}es>S^^301|yxdS7e;_(ouw>cg^7&2MOj|yQX8zSJvMcR{
z>VVc79QB|w8qJc*4zv0DA{=KnaqX|)8LS1#z+PA1fh}Q74ZsYom0pbtw?>zIZ?oGZ
zv@*{hQZ9I1y#&_55OxGp$8Fw6U(FRC%h$hdS)npF?8R@WyI=)=Bc_&VZ)aUJW>r={
zazH7UE#la5sE)%BOSraR>d;-E$YQkQ_C(_|tf|l4jcuViPC;};fHFuun%`@Sl|SSM
zRI3_3_3+s$xFHv+<po4bqbH^%=j3N7<|e<k<=V_wYPn_t7gWaqhz^c<m^%KOO<A88
zrnp|a>a$6`R^_>Ts1|7U<M@fGrGN9r)v7j2`#M{hjAZA}afa&n1+he=1yhIOCN(W~
zp|$mg{;#k|Gv||s>HsA}1_lQ9dr%$qNTs{T>bRu>FB`uV{B*v+pYdiIRLdcVC4Br)
zEl4`z-xzL^J(T*Ho9U+4oo9CzLUo*g=n#{{)X}tJV&Vm9^R?Q?Gnej}=KP}`ss)@6
z85o#0VrpSc+ae!1la+tw!nVuXHlJXG>Hztffq{Xk8&gNHyR!M*6Kf~V^={(XVd3!t
zssmR2A%|~01E}0k6p&$gKF6*)`|Q&5E%O_MT6RFS)Ixj`#Efalmu0^_7bd^C9=0ke
z==U=DA5a}IkDSHSAyORl_tAzo!H;f!m=<=l^(jaPPl(r5s3n1_lNp1A>tp=p&Nn|U
zc~Smj$<@I5yFrRVyskog%b0+rbklQTIB!(L+HwELY^U59E_<ksI*8N#LD?29k(Zqh
f&U(J5IQ;#&7g`ZjYNk*f?I0Z-3=CE0KyC*BaHJbX

delta 843
zcmeymlkx95#tkMCf__aR95uIe=S^k+g8=8ru@V83k4jWd4wDq0+$xzc`LCqJ<XEX2
zlT)Q9PUe$&KUr5+Vsfmk!Q{QN5|iJ`PMADZ&S3IaIf==(@)DDC<s~N1l{c9DRNip1
zp2Gggtcn$rrz*~3Vo%(t_(Oc7!484Vjvn(E6$JAp?=)J|oZg$wvg^f1?`;eWjFY*K
z?7R+k0|Qgf=Kr2qOhG5TM6OEOPkLK<D|T|^i@6pcRUsl>b0MnOjxsPX=ovFGFlaI`
zFerksK=hY_{xlAct&dVxO#W8F77o(EePri(hz>^m$-8}4C>)$&xo?jA$NL+<{yY1^
zR{sM?5s&A)Fo+`78<U%T)mVaGUSXKL)>n@u_~kY2$@jsGt7(%3{q&io|Hw{u_S3Tq
zetGRbL=VdyOs8<RKW2!1<h0<q+Kz`ulY)POYzdM6eHWsG{q*GZe(KE9zt2v-=?Avt
z?PP9$5aUYLWLtlIX6fILC+CCd3zHXuC9bWVd>JJ0M|U!707&JvMU&0JjO&{xXM!2m
zR!*J`W?bJr`D_5lkdu@Dg9WaAoNO2<74+qRmyfJn?D0F#!^OT$Q!4~HD){B~gAhkC
zdt-XTG{29VLC5N@b!NoNOS@D3pgL|sbg;xvo*M`bthC9;13`|uesc0p2qSH>c92vM
z&!=apN5dA$Zhcmh=a4Vk2GSoQGQk|8pH~Od#vgK5y(g^Oa*cb>m%!PPQu1IO(tp-K
zbOi66{5wc}^S+=?CYIorcaKi?4h30zKVWh#gt1}rdNAVw)8vN`hW=#XFp!!DrjuPE
z4DHF~VfxG>lTs(Iga|ZEz6}zX_<1sKI7sQkt&{D;rBn<qUA(7guCx8H<>%%ne)03c
QP7#?j5#kg<P@d5P07b$vsQ>@~

diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock
index a2eea0623d496bfb6ed80c4b729a96fc4c16ab15..1dcfed109c5cd476a1e8df1e2f49e961ada4390f 100644
GIT binary patch
literal 17
VcmZR!ZGIcS=i#)o3}C=i3jjTr1&;s#

literal 17
VcmZR!ZGIcS=i#)o3}C=G0RTOy1)%@{

diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin
index 4a8cdfd724f87fdc16c3db8b31cb5c5b4cfb54b8..17c8071eb2b6f554b230306a74ab8898e86fe330 100644
GIT binary patch
delta 879
zcmX@Rn(^xf#tkMCj8&UWB{CQV)*m??Ua+&foB<3%&rY5ysUWbi=(Fa=o>fP{Vhmw-
zC$E*X(Adeh``^;eTYeD1@YDaH;GlnC{a1DKV5qp_<hzmq0!Q^dy0%=1-T)B{eLq=M
z%0lDhoGVX#q?zm>f)R#L1OA_~F*|>IWfaupFu}>8QX2&Bth!d*eOF8es+fQBUnvWL
zXC6&Gx26A1f(VAUPu7**An<i_*XtYYrN$7!h~UXrr2{nnhjn=O&JD7G2!@5i>|%_#
z)B2$2xClf%{Ox2}nE(OKV|O-vtJc~I5ezHeoGR17D4=zG{^=8UCN@Gv|4)7@8z5l8
zUs}HApSmeTFx+{vu3UhCb-mQwJ9*8X5Wz6x&82cX7zNVUR@>Z9XMYV54Nu*ys!+h_
zP^r!-_0H~#C{%PM%wd%~?ZPhgErc2zHWMaZbG)wGVCp4Hi2AVIlY14Nn7A7^D*h1P
zXfT6kv!h23Z#~HGk_-$Cf*>p~;h@gqc`24#BRJ=76+UL3!N9;EhpOVIn%lqU`FCOy
ze(c<}p0|_(Q^kFuoUOrgY!oHhD=S;Oib3IsW`_B({Heyw45z*wd&25b9rV3u^7}xO
z$!CL<jMhl4QY!2|Y(2}|NI_~vV<M*MFGGypR9u?y&V;4(;p<4%Z!oR(wM)%6e3xCp
zy5(fZ!x{Oui!ik=3~X__abtR1?JkM^#i5$sm?{i{)^sbcb}o7FHh#kgx$W_oDmsP!
z2z@olz4MjT(MI)xb_-m^<Pu+Pqo@Us-bMMX_}uL=k?HB~LQu$~dEIhq?px0NY2oI+
lcg`2xxbSMSyT6Hm!tDMZ+McRD26LAm>)u}MIC*uT8URLcE585$

delta 95
zcmeymf${8W#tkMCjA@%qB{CQ%Z<Umo{8Z9lva6KG<fT#ulUb!#Og<`YFqv0o#pJUx
z9+O>VJvJ|uZD5>iEAKIRuDr+Qzw#RxHy>5ZV4Pg4Y{kU6aHHZ6@r?!*e48CTdUyfE
CJR`XP

diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 7006a23b212cd5dd50e65ec374cff0e9fee33061..b1e3b2f18fbc71219f21b34829cbf4e67a12739b 100644
GIT binary patch
literal 17
VcmZR+liqg2=jjb+1~6cp1^_=J1&9Cu

literal 17
UcmZR+liqg2=jjb+1_-zh06%I4&;S4c

diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
index 32d3bf0759da14eae3aeae7fa54a4950e47b01ab..6ceb9706079342326a9b878fdb9917e41465a85d 100644
GIT binary patch
delta 176
zcmbO_g|Tre;|3E6Nrj$HvsF4QU9JpZ;3fJW3MQLMBnWKWd5AS$GW#o7j={@va<4>#
zz|HW<%3rrOPJs%lPiB>D5YXJAE!pV#;Wbn+e{!v4hJf!A=YsX`erQ1jy(iz5R1gS>
z-s+pK&{GT*jGg>dau*Y`;6}wC;u{S(L^nHnTw$EN--CCupNG(7KM$43ejb_t{*yYA

delta 51
zcmZpi$~bij;|3E6MybiZ5($%!N>oe^m8_WjR5D?5tdzv$Ua3t?OpO~Ae~521m?65^
I(c=mu0OdFn761SM

diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index a3e12595537c4c25dbeda35b32cd55e1914cc4df..6fc0f9cf615ff6bfa463a53f7fd8a7b9078f546e 100644
GIT binary patch
literal 8
PcmZQzV4NJ{wSFZ42O<KC

literal 8
PcmZQzV4NKM^0W&82+jiF

diff --git a/build/classes/java/main/matrix/ConstantMatrixInitializer.class b/build/classes/java/main/matrix/ConstantMatrixInitializer.class
index 2f16ea4c75ab73551466ffcc6ea2bc92abdcd589..51348c6e9e0dcdba09358bfd0f8cee84d7b4360a 100644
GIT binary patch
delta 363
zcmX@j_K}V2)W2Q(7#J8F8I&e+>GN_ja4>MPGjQ=Ra5L~sv{9b;UcrE!fsc_vA~&(5
zD6>M}7fgBPWtL<n=44i-7BMn#24|+{C6<&Hr7|)whlE&9tSy-=$ml#djq!Iq2LlrW
zBLgo3BZCmgL<U9%eg*~xCI$hpI4gr70~3P~0|P@60}}%i0|Nt>)^-L)E$yug>>C*v
z7?>G^85kJ&7?>Ft7}ywC7}yy=?h|2PU=V|-W)Ni%V*mjzsOjP;auW3*IR=oV0NiRx
z21W)c25G3p-VBUjqgb`JFtBfc+sVej$iTqB!+@}h6>b+RgA9W#10w^-E*`Ktkembq
T1JrMF3`|g#JO_gU*t?1VLwqJ>

delta 303
zcmey!cAAar)W2Q(7#J8F85AaR>9esja4<3`Oy*)#U}k6Fn%E;dad*+gY`MwWjIILA
zAtBa`44lE4>3NAIrA4We^BDiuvokO;Ffwp5Fo0=R25tr>1|9|mhDZiR1||ju23D=@
z42&BY7#Nrtco`TNxWIz!3@i+s415d>3}RqDD+51+00RiHG6*sVF)%U+qsWPXq!>VQ
zq6~}-VqnX}85kKP7_udy_IW_<V`AI@w~UQ}k%57M56L1XxJ671QVh~ii+I55Kyo09
SAjZouFhMPnWsn0~C=US7q#8j0

diff --git a/build/classes/java/main/matrix/CoordinateIterator.class b/build/classes/java/main/matrix/CoordinateIterator.class
index b78510c25a69a61a846d813c6674ded77e52f0a7..7f1c348add347decdac9d5be0d42869818fb39a0 100644
GIT binary patch
delta 135
zcmcc5agJldL?*dx1||k(1_lO6t?dkqTGCq?*tKM~GVp3KZ)FhBVxGK}NzqxDL5e|w
zL7G8}fq_8*qL@LOL5BeZBpJ9Fco-N#1~Bk5@GvkjFfvFmNHQ=oXfQA^xPkc$41$wY
Xm~{jMp}KS#7#LU?nD{3rF#iVt>A4Rt

delta 152
zcmX@dai3$uL?)F&1||k(1_lOst?dkqTGCq?*tKM~GVp3?ZDA1D${+xug(t6PQuGsJ
zkYbQykY><gU|>*yXkpN1&|v@pc?NC<9tK8`F%0|+JPb?>j0_SCk_?Ot8Vn2!fnYuZ
kgAB+_tt|}fix`9^3p48o$UqIyWnf@nWnhw;?9cok0ML^Y%K!iX

diff --git a/build/classes/java/main/matrix/ListMatrix.class b/build/classes/java/main/matrix/ListMatrix.class
index de7394d23c81a6d916b2aaea41ba2448529805bb..a26cc8107669325fa8ce6a64eefdc4b6cb4bf6da 100644
GIT binary patch
delta 1620
zcmZ1@byb|})W2Q(7#J8F8OkSe?U(0b;9!vAVUT8!VPxRT%*!mvOw7rwN)68}$zWuV
z)tG#TQO1OwL5`6@Avdw4D6>M}IX|zsBr&hV7tHm9>nP%4kY!NdVPIuYWMmN4m|Vyr
z!UZy186>1K`5L2=89Rd-BZDB^ocyAc%)G>sR4xWp1`UuZO-2S*4Np(aFm48I1|4<=
zT^<HK2K|ZuBe)G2jMy2Bc^FI>OeZHX>NB%5m`^Tc(r{&9u;gK|Vz6dp5YJ7_PIb=D
zOHM2SxgF-pVnzlrkdZ!FiDilUIf;4c`oSednR)5fTnuImwjf*WCO>47;NoU5WN_eN
zaAa_rEXAZCWXRyc!{Ex`#>l{2oLa)jpsq2wfJJ0-0+R@%$K*duWs@726DR*<wq;bA
ze3MaTvK|ZD<V+TS9>xkr2Iivtaz+Nm%E|Ycr6!xP2rwyuLQxW|W($kO<WSap0}h5P
zMg~dGyt2fc%oK&>d{|IeDQGb2FlzF%G30PD<TB*3GvtH(S1?(M{W4?m<ag{^ETxPL
za+5!@%T2c85UO`)U}g|v5ND8JU}W%QU|?Wk@L~{R;AY@qU|<kp;0M#}42%q{3@Qvv
z4BiY33^N#57+4q>7!<U&GcamNZ)ITDlG)0@tF@a!AW~*KgV0t6Q7zqV43Zle7#Nrt
zd>9xQq!`%1BnyKy11EzF10RDdgA{`tgFJ(LJ%cX;1A`XCKn6bse+Cdx06TyYWC_>_
zOkh?3Lm&e)Ll6T4gBSxu#E&5uq?|#4A%G!-ff?$7P_T2upw2C4U;~@ZuO%(Bn?W{G
zcRPdpb_OM=>*^U87`VWusW9*{s3N(BAMP4{xNG>~uHk10XNW*?4M;u2H6Xc2xND*q
z7(sah>Y9HHYz(Xn3=DzHwlZ2<7<lU!F?fOkPHPJT`*sE)KV~x)Q5Fzq5rcxR_HG8%
zNKqD<?F{NW8MK%fb}|?+F@(3UFfRXpS8EG{s4i51iE;V=tsoDvfP-6!frEj8L4$#d
zL6bp@L5o3&L7TynL5snjL6^acL4zTH!2s+}69!g>dPxQ~hG+&J1{MY}1`~!D1_=gc
z1||kShFAt3aIgfzgCURs6akFj2vA^PhN_QaU<P@I0TvY?RUr(F4Dk#M48ja7e;Ak;
z|1yZNGZ-@dVo?3bAOMY{1O`S1ZiYk#W=00@$%$NImY{UP#sG?PW3c0Rz-(5i?Vw0U
zh=78bk%6BfkpZN81DBX9Lbo}Qx*ZvkpiwfHfd%Xb>&d!2;`Kti8O$Q3Wp*)GFfeRq
zu-Oj^XPKQ0_Dl>17!0Msj13G743LoK18cNlkYKQ7P-n0QTMY^t1_o=W!$B-i@Pa&M
z4GmO;XF#ezo&g0G3j>n`AA>9;4<<7(GPp9plJItDj<Y4gg}OT#oS7NI5vf54ocdiE
zBpBQn)EPV&Y#2Pj?u6tyTev%I!N~yRPFtuu85nFCQqWSlEkhtIra_XRWR7q=#O+ZG
qEYL_!Wk>^;DCrCt3=9k$42%rf42%q!429rK$H-8`P{L5gAPE4Z-tFc9

delta 1846
zcmcaAzDA1c)W2Q(7#J8F8JZ???Kfj*kYZ#I%uOsQ%B;|L&d)DO$;?YEN#$aYWRT%u
zU}cbHWMI|s^wbRFW{_u4U}sR|VNhaFp1h7Rf?JhAjh#WAhe3lubFv_lzLF3F1A{h5
zT8EKAPs1lGu`E$PCowNw-#;lUHMzuE(`WKVMhPKnE(Q(;J&@V@j12M`o}OS~18dDN
zkc1%*gAvG5?&OTr<ZP$>(!7*nZU$8b6CMUr1~Wzm=JeDOMg~z0&&eMdMLAR%EO;0!
z8LTG%Vlra1ne5D@;ljvZ$HQRH;K0Zro|~AR>YSgKoLCZ`S(4$LpI2Oxm{(E^)~<=<
zzTlFg%)E4KE(U7`Cy=|GCvRYqU}k4<ovh1T#=}_2$iQ5bU(U$DSTT7abMoYaEE1Dh
zSZpWXWD%I`$Wk<!kJUt(CnqsCDJ4-QFST67fRVuxi}xqrV^ou4WMEAO1u`Rpun$I{
zTTgaiEvy${Q08Z2$OZ*Q4i7^jLlOr=9wURaXI@HXa&l_1LVjt9LVlV;5;$nAH5hd?
z`Pmo>xEKl<ir5*7c^FC<N*NiH5TT!$SC*fhs_z4Kpl@nPVp?KyNq$i!BLjCXGVct;
z&65S$VkV2T@lK9q6PPT{Cd_C(nTJinD5SC=)fzd_pvF2U=HvutmZVzqvoVx&F;p;A
zvNKeHBA|NmL)ObIb&L$ElX=-xnb{c{CO=>^u6JQzW)NZ!XOLiEWN>3(U|?c!XAolG
zX5e99U=U*92h$u3j0~&{`V34A9t;eOt_*Ap><kPH8Cu&J7`3FgGO%mOY-Qlp+RY#k
zDZQORXe)y#vl)vhi}WG}caWIOb_O9UR%SCcQ8t-H3`&x$y1N-9BSl$6*|sxC*Y9MI
zV`A9Jpu)ru-onPX{Qo_zEexWPtWXga#^wKaZe(C!U}5lNU|=u;J4cFvg+ZEulR<`o
zk3p6}ib0-1nL&X;mqC%ij6sRPpFxo!ltG0dkwKmzok5Mki-Cc`gMppFfI*ePn}LUc
zjX{^egu#bF0+g8;>b)3z8F(02K>lIyWAJAHfef(!8Np(p5MTnc0vG}rm>Gf?7#I{7
zn4yLQGq8f?{1`$&8W}Pe0vJLWm>I$t7#QRkSpGA}GO)5Ua4<5mGsrVCF#Kf@VrNig
z{KcU1lR*$1-1STh;o#7XfP^kXDFX}GHN0BVGP=7Mv=|t+Gw6asfEgSDTnr$`Xfp6H
zXn}pE1yKxlIxpPmyx_<Kspe&fWQc+~T@0+BmjUKrNsweT12fn$Objs$j11fiu?&n1
z9+M|>idljJos9t$61rgPc))B{sCA&QK!|`sfRTY8s`~+_SUp0wA(6UG8RDSfkjKEx
zz|6qFAf+WOvyH(3lqzI)G8i*49AHqD1~WD=FfbqoiWvhNgE`n9Q2a13NYz7~$-p25
zj%1KGq`+x_2^@_Or%OS@0+RUS85kKX8DNpo!N3d-Um0wU(A~*k&dd;wh#NkzgKZhu
z80;9N8SEJ{K}io1K{9Zs$iST<19b`mgA79gS_FaAgTfOcha5jlpyC)5KMV{EozO5+
zpZtzXyk2lOgLS0zE(Tjrl5yM*au+1mK-}fTAi?0wpvK^e6h!K9XQ{)Tr4Dr#B62~h
zK#l<=Y8D1230?s%P%#K~gc$=PI89|TX@O#d37kwJX+{%l6(q?qffFGplQ1zPGo&yu
zGO$3?Tq;8vxZFu+$N-l)Obq!9%nX?fSqzyBWekiAxePT73=CWhj1095^$d*+k^p6R
B9321v

diff --git a/build/classes/java/main/model/automata/GameOfLifeState.class b/build/classes/java/main/model/automata/GameOfLifeState.class
index 496f137cfbed7d0264a6ca2f99b74a1b97c92542..a8cbc2252fccf81f5622535591deeaf80f6f3b84 100644
GIT binary patch
literal 3124
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

delta 737
zcmdlYahjj&)W2Q(7#J8F8N4@gwJ>tBI{7#{dowafP0nJG;^JapWKiK@P-Re?e2d9R
zSc8W_lR=A-fh8}sqJ)t_Nkh|TqJZ3FUuFR|eI5n_2E)n8%tnmHlczC%m^_U|Ve)B~
zGn22gPULbhWME_vVPIr1nyk$s&CSKY$zZ|&5;L6~$RRCi#=yY9#=ywHz`)JG$so>P
z&cMWAI=PWU+6Y<3f`Ng72ds*V!IHs>fq}uAfq{XQk%6Isfq{uZnn8wvnZb1OISz?>
z?Aq8FY#7*}+BlgQ7z7x=*p>mL-Hw5g!Jff^fsw(Kfq_Affe~yI%O(cd4PbeMkwOdz
zm#{#MWCVo^RId(0Jw!7TBf3@zB&|$vt*Q)aAP+MzFnBO9GBAOx1M6gFKv*gV)+q*&
zh3W)3+mXSEfsw%(9yCl0jtnmK42%pAU%3i6GN>}RL5(+HU;-P!rlq}&K^fg~++Zsp
zA<PD~0v5so3<8b}nhZivFX}^shgEAEgF2=;(ue?Jg%~8j1xg(t-IF`Gl`;_i;%4Ar
zaAyDoJ}B628CV!VKyfz%W2BHa^L7TE%?!+7jxGzB!@h$-Z!-heMg|53MsV<Ofqlfo
TAjQDVzy$TR2ZJXl5E;Ax&(TH!

diff --git a/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html b/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
new file mode 100644
index 0000000..87993e3
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - ConstantMatrixInitializerTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>ConstantMatrixInitializerTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; ConstantMatrixInitializerTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">2</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">2</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.037s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">0%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<div class="test">
+<a name="testMatrixInitializationWithConstantValue()"></a>
+<h3 class="failures">testMatrixInitializationWithConstantValue()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;X&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//matrix.ConstantMatrixInitializerTest.testMatrixInitializationWithConstantValue(ConstantMatrixInitializerTest.java:15)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testMatrixInitializationWithConstantValue2()"></a>
+<h3 class="failures">testMatrixInitializationWithConstantValue2()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;12&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:534)
+	at app//matrix.ConstantMatrixInitializerTest.testMatrixInitializationWithConstantValue2(ConstantMatrixInitializerTest.java:27)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+</div>
+<div id="tab1" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="failures">testMatrixInitializationWithConstantValue()</td>
+<td class="failures">0.034s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testMatrixInitializationWithConstantValue2()</td>
+<td class="failures">0.003s</td>
+<td class="failures">failed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html b/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
new file mode 100644
index 0000000..2546d2e
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CoordinateIteratorTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CoordinateIteratorTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; CoordinateIteratorTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">3</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.064s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testIteratorWithOneDimension()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testIteratorWithTwoDimensions()</td>
+<td class="success">0.058s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testIteratorWithZeroDimensions()</td>
+<td class="success">0.004s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/matrix.CoordinateTest.html b/build/reports/tests/test/classes/matrix.CoordinateTest.html
new file mode 100644
index 0000000..101074c
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.CoordinateTest.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CoordinateTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CoordinateTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; CoordinateTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">8</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.018s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testAbove()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testBelow()</td>
+<td class="success">0.003s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCoordinateCreation()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testDiagonalNeighbours()</td>
+<td class="success">0.003s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testLeft()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testOrthodiagonalNeighbours()</td>
+<td class="success">0.004s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testOrthogonalNeighbours()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testRight()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/matrix.ListMatrixTest.html b/build/reports/tests/test/classes/matrix.ListMatrixTest.html
new file mode 100644
index 0000000..d543d18
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.ListMatrixTest.html
@@ -0,0 +1,324 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - ListMatrixTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>ListMatrixTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/matrix.html">matrix</a> &gt; ListMatrixTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">7</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">2</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.029s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">71%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<div class="test">
+<a name="testMatrixCreationWithInitialValue()"></a>
+<h3 class="failures">testMatrixCreationWithInitialValue()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;Foo&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//matrix.ListMatrixTest.testMatrixCreationWithInitialValue(ListMatrixTest.java:30)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testSubMatrix()"></a>
+<h3 class="failures">testSubMatrix()</h3>
+<span class="code">
+<pre>java.lang.NullPointerException: Cannot invoke &quot;matrix.Matrix.width()&quot; because &quot;sub&quot; is null
+	at matrix.ListMatrixTest.testSubMatrix(ListMatrixTest.java:90)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+</div>
+<div id="tab1" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testMatrixCoordinates()</td>
+<td class="success">0.003s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="failures">testMatrixCreationWithInitialValue()</td>
+<td class="failures">0.007s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="success">testMatrixCreationWithInitializer()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixIterator()</td>
+<td class="success">0.011s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixSetAndGet()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixWidthAndHeight()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="failures">testSubMatrix()</td>
+<td class="failures">0.003s</td>
+<td class="failures">failed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.CellTest.html b/build/reports/tests/test/classes/model.CellTest.html
new file mode 100644
index 0000000..64691dc
--- /dev/null
+++ b/build/reports/tests/test/classes/model.CellTest.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CellTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CellTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; CellTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">2</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">2</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.005s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">0%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<div class="test">
+<a name="testCellValueChangeWithListener()"></a>
+<h3 class="failures">testCellValueChangeWithListener()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;true&gt; but was: &lt;false&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
+	at app//org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
+	at app//org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:31)
+	at app//org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:179)
+	at app//model.CellTest.testCellValueChangeWithListener(CellTest.java:30)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testCellWithoutListener()"></a>
+<h3 class="failures">testCellWithoutListener()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;Bar&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.CellTest.testCellWithoutListener(CellTest.java:38)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+</div>
+<div id="tab1" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="failures">testCellValueChangeWithListener()</td>
+<td class="failures">0.003s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testCellWithoutListener()</td>
+<td class="failures">0.002s</td>
+<td class="failures">failed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html b/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
new file mode 100644
index 0000000..c8acda8
--- /dev/null
+++ b/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
@@ -0,0 +1,1020 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - CellularAutomatonSimulationTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>CellularAutomatonSimulationTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; CellularAutomatonSimulationTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">11</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">9</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.093s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">18%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<div class="test">
+<a name="testAt()"></a>
+<h3 class="failures">testAt()</h3>
+<span class="code">
+<pre>java.lang.NullPointerException: Cannot invoke &quot;model.Cell.get()&quot; because &quot;cell&quot; is null
+	at model.CellularAutomatonSimulationTest.testAt(CellularAutomatonSimulationTest.java:48)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testColor()"></a>
+<h3 class="failures">testColor()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;0xffffffff&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.CellularAutomatonSimulationTest.testColor(CellularAutomatonSimulationTest.java:100)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testCopy()"></a>
+<h3 class="failures">testCopy()</h3>
+<span class="code">
+<pre>java.lang.NullPointerException: Cannot invoke &quot;model.Cell.set(Object)&quot; because the return value of &quot;model.CellularAutomatonSimulation.at(matrix.Coordinate)&quot; is null
+	at model.CellularAutomatonSimulationTest.testCopy(CellularAutomatonSimulationTest.java:89)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testNext()"></a>
+<h3 class="failures">testNext()</h3>
+<span class="code">
+<pre>java.lang.NullPointerException: Cannot invoke &quot;model.Cell.get()&quot; because &quot;cell&quot; is null
+	at model.CellularAutomatonSimulationTest.testNext(CellularAutomatonSimulationTest.java:80)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testNumberOfColumns()"></a>
+<h3 class="failures">testNumberOfColumns()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;4&gt; but was: &lt;0&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:527)
+	at app//model.CellularAutomatonSimulationTest.testNumberOfColumns(CellularAutomatonSimulationTest.java:36)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testNumberOfRows()"></a>
+<h3 class="failures">testNumberOfRows()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;3&gt; but was: &lt;0&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:527)
+	at app//model.CellularAutomatonSimulationTest.testNumberOfRows(CellularAutomatonSimulationTest.java:41)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testReset()"></a>
+<h3 class="failures">testReset()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;7&gt; but was: &lt;0&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:527)
+	at app//model.CellularAutomatonSimulationTest.testReset(CellularAutomatonSimulationTest.java:160)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testSetChangeListener()"></a>
+<h3 class="failures">testSetChangeListener()</h3>
+<span class="code">
+<pre>java.lang.NullPointerException: Cannot invoke &quot;model.Cell.addOnChangeListener(model.OnChangeListener)&quot; because the return value of &quot;model.CellularAutomatonSimulation.at(matrix.Coordinate)&quot; is null
+	at model.CellularAutomatonSimulation.setChangeListener(CellularAutomatonSimulation.java:98)
+	at model.CellularAutomatonSimulationTest.testSetChangeListener(CellularAutomatonSimulationTest.java:112)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testSetGenerationNumberChangeListener()"></a>
+<h3 class="failures">testSetGenerationNumberChangeListener()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;[0]&gt; but was: &lt;[]&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.CellularAutomatonSimulationTest.testSetGenerationNumberChangeListener(CellularAutomatonSimulationTest.java:131)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+</div>
+<div id="tab1" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="failures">testAt()</td>
+<td class="failures">0.003s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="success">testClear()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="failures">testColor()</td>
+<td class="failures">0.031s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testCopy()</td>
+<td class="failures">0.006s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testNext()</td>
+<td class="failures">0.006s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testNumberOfColumns()</td>
+<td class="failures">0.011s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testNumberOfRows()</td>
+<td class="failures">0.003s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testReset()</td>
+<td class="failures">0.009s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testSetChangeListener()</td>
+<td class="failures">0.009s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testSetGenerationNumberChangeListener()</td>
+<td class="failures">0.007s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="success">testUpdateToNextGeneration()</td>
+<td class="success">0.007s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html b/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
new file mode 100644
index 0000000..e572400
--- /dev/null
+++ b/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
@@ -0,0 +1,419 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - NextGenerationInitializerTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>NextGenerationInitializerTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; NextGenerationInitializerTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">5</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">3</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.030s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">40%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<div class="test">
+<a name="initialValueAt()"></a>
+<h3 class="failures">initialValueAt()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;DEAD&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.NextGenerationInitializerTest.initialValueAt(NextGenerationInitializerTest.java:39)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testWrapCoordinateInsideGrid()"></a>
+<h3 class="failures">testWrapCoordinateInsideGrid()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;(1,1)&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.NextGenerationInitializerTest.testWrapCoordinateInsideGrid(NextGenerationInitializerTest.java:50)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+<div class="test">
+<a name="testWrapCoordinateOutsideGrid()"></a>
+<h3 class="failures">testWrapCoordinateOutsideGrid()</h3>
+<span class="code">
+<pre>org.opentest4j.AssertionFailedError: expected: &lt;(0,1)&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.NextGenerationInitializerTest.testWrapCoordinateOutsideGrid(NextGenerationInitializerTest.java:55)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</pre>
+</span>
+</div>
+</div>
+<div id="tab1" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="failures">initialValueAt()</td>
+<td class="failures">0.003s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="success">testModuloNegative()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testModuloPositive()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="failures">testWrapCoordinateInsideGrid()</td>
+<td class="failures">0.017s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="failures">testWrapCoordinateOutsideGrid()</td>
+<td class="failures">0.008s</td>
+<td class="failures">failed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.StateTest.html b/build/reports/tests/test/classes/model.StateTest.html
new file mode 100644
index 0000000..0df88e2
--- /dev/null
+++ b/build/reports/tests/test/classes/model.StateTest.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - StateTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>StateTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; StateTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.009s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testCountMethodWithEmptyList()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithInteger()</td>
+<td class="success">0.004s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithNoMatchingElements()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithString()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html b/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
new file mode 100644
index 0000000..2cd5702
--- /dev/null
+++ b/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - GameOfLifeStateTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>GameOfLifeStateTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.automata.html">model.automata</a> &gt; GameOfLifeStateTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.011s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testAliveUpdate()</td>
+<td class="success">0.002s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testDeadUpdate()</td>
+<td class="success">0.003s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testGetColor()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNext()</td>
+<td class="success">0.005s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/css/base-style.css b/build/reports/tests/test/css/base-style.css
new file mode 100644
index 0000000..4afa73e
--- /dev/null
+++ b/build/reports/tests/test/css/base-style.css
@@ -0,0 +1,179 @@
+
+body {
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    font-size: 12pt;
+}
+
+body, a, a:visited {
+    color: #303030;
+}
+
+#content {
+    padding-left: 50px;
+    padding-right: 50px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+}
+
+#content h1 {
+    font-size: 160%;
+    margin-bottom: 10px;
+}
+
+#footer {
+    margin-top: 100px;
+    font-size: 80%;
+    white-space: nowrap;
+}
+
+#footer, #footer a {
+    color: #a0a0a0;
+}
+
+#line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+#label-for-line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+ul {
+    margin-left: 0;
+}
+
+h1, h2, h3 {
+    white-space: nowrap;
+}
+
+h2 {
+    font-size: 120%;
+}
+
+ul.tabLinks {
+    padding-left: 0;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    overflow: auto;
+    min-width: 800px;
+    width: auto !important;
+    width: 800px;
+}
+
+ul.tabLinks li {
+    float: left;
+    height: 100%;
+    list-style: none;
+    padding-left: 10px;
+    padding-right: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    margin-bottom: 0;
+    -moz-border-radius: 7px;
+    border-radius: 7px;
+    margin-right: 25px;
+    border: solid 1px #d4d4d4;
+    background-color: #f0f0f0;
+}
+
+ul.tabLinks li:hover {
+    background-color: #fafafa;
+}
+
+ul.tabLinks li.selected {
+    background-color: #c5f0f5;
+    border-color: #c5f0f5;
+}
+
+ul.tabLinks a {
+    font-size: 120%;
+    display: block;
+    outline: none;
+    text-decoration: none;
+    margin: 0;
+    padding: 0;
+}
+
+ul.tabLinks li h2 {
+    margin: 0;
+    padding: 0;
+}
+
+div.tab {
+}
+
+div.selected {
+    display: block;
+}
+
+div.deselected {
+    display: none;
+}
+
+div.tab table {
+    min-width: 350px;
+    width: auto !important;
+    width: 350px;
+    border-collapse: collapse;
+}
+
+div.tab th, div.tab table {
+    border-bottom: solid #d0d0d0 1px;
+}
+
+div.tab th {
+    text-align: left;
+    white-space: nowrap;
+    padding-left: 6em;
+}
+
+div.tab th:first-child {
+    padding-left: 0;
+}
+
+div.tab td {
+    white-space: nowrap;
+    padding-left: 6em;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+div.tab td:first-child {
+    padding-left: 0;
+}
+
+div.tab td.numeric, div.tab th.numeric {
+    text-align: right;
+}
+
+span.code {
+    display: inline-block;
+    margin-top: 0em;
+    margin-bottom: 1em;
+}
+
+span.code pre {
+    font-size: 11pt;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    background-color: #f7f7f7;
+    border: solid 1px #d0d0d0;
+    min-width: 700px;
+    width: auto !important;
+    width: 700px;
+}
+
+span.wrapped pre {
+    word-wrap: break-word;
+    white-space: pre-wrap;
+    word-break: break-all;
+}
+
+label.hidden {
+    display: none;
+}
\ No newline at end of file
diff --git a/build/reports/tests/test/css/style.css b/build/reports/tests/test/css/style.css
new file mode 100644
index 0000000..3dc4913
--- /dev/null
+++ b/build/reports/tests/test/css/style.css
@@ -0,0 +1,84 @@
+
+#summary {
+    margin-top: 30px;
+    margin-bottom: 40px;
+}
+
+#summary table {
+    border-collapse: collapse;
+}
+
+#summary td {
+    vertical-align: top;
+}
+
+.breadcrumbs, .breadcrumbs a {
+    color: #606060;
+}
+
+.infoBox {
+    width: 110px;
+    padding-top: 15px;
+    padding-bottom: 15px;
+    text-align: center;
+}
+
+.infoBox p {
+    margin: 0;
+}
+
+.counter, .percent {
+    font-size: 120%;
+    font-weight: bold;
+    margin-bottom: 8px;
+}
+
+#duration {
+    width: 125px;
+}
+
+#successRate, .summaryGroup {
+    border: solid 2px #d0d0d0;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+}
+
+#successRate {
+    width: 140px;
+    margin-left: 35px;
+}
+
+#successRate .percent {
+    font-size: 180%;
+}
+
+.success, .success a {
+    color: #008000;
+}
+
+div.success, #successRate.success {
+    background-color: #bbd9bb;
+    border-color: #008000;
+}
+
+.failures, .failures a {
+    color: #b60808;
+}
+
+.skipped, .skipped a {
+    color: #c09853;
+}
+
+div.failures, #successRate.failures {
+    background-color: #ecdada;
+    border-color: #b60808;
+}
+
+ul.linkList {
+    padding-left: 0;
+}
+
+ul.linkList li {
+    list-style: none;
+    margin-bottom: 5px;
+}
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
new file mode 100644
index 0000000..8725a1a
--- /dev/null
+++ b/build/reports/tests/test/index.html
@@ -0,0 +1,313 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Test Summary</title>
+<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="css/style.css" rel="stylesheet" type="text/css"/>
+<script src="js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Test Summary</h1>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">46</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">18</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.296s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">60%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Packages</a>
+</li>
+<li>
+<a href="#tab2">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<ul class="linkList">
+<li>
+<a href="classes/matrix.ConstantMatrixInitializerTest.html">ConstantMatrixInitializerTest</a>.
+<a href="classes/matrix.ConstantMatrixInitializerTest.html#testMatrixInitializationWithConstantValue()">testMatrixInitializationWithConstantValue()</a>
+</li>
+<li>
+<a href="classes/matrix.ConstantMatrixInitializerTest.html">ConstantMatrixInitializerTest</a>.
+<a href="classes/matrix.ConstantMatrixInitializerTest.html#testMatrixInitializationWithConstantValue2()">testMatrixInitializationWithConstantValue2()</a>
+</li>
+<li>
+<a href="classes/matrix.ListMatrixTest.html">ListMatrixTest</a>.
+<a href="classes/matrix.ListMatrixTest.html#testMatrixCreationWithInitialValue()">testMatrixCreationWithInitialValue()</a>
+</li>
+<li>
+<a href="classes/matrix.ListMatrixTest.html">ListMatrixTest</a>.
+<a href="classes/matrix.ListMatrixTest.html#testSubMatrix()">testSubMatrix()</a>
+</li>
+<li>
+<a href="classes/model.CellTest.html">CellTest</a>.
+<a href="classes/model.CellTest.html#testCellValueChangeWithListener()">testCellValueChangeWithListener()</a>
+</li>
+<li>
+<a href="classes/model.CellTest.html">CellTest</a>.
+<a href="classes/model.CellTest.html#testCellWithoutListener()">testCellWithoutListener()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testAt()">testAt()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testColor()">testColor()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testCopy()">testCopy()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testNext()">testNext()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testNumberOfColumns()">testNumberOfColumns()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testNumberOfRows()">testNumberOfRows()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testReset()">testReset()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testSetChangeListener()">testSetChangeListener()</a>
+</li>
+<li>
+<a href="classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="classes/model.CellularAutomatonSimulationTest.html#testSetGenerationNumberChangeListener()">testSetGenerationNumberChangeListener()</a>
+</li>
+<li>
+<a href="classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>.
+<a href="classes/model.NextGenerationInitializerTest.html#initialValueAt()">initialValueAt()</a>
+</li>
+<li>
+<a href="classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>.
+<a href="classes/model.NextGenerationInitializerTest.html#testWrapCoordinateInsideGrid()">testWrapCoordinateInsideGrid()</a>
+</li>
+<li>
+<a href="classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>.
+<a href="classes/model.NextGenerationInitializerTest.html#testWrapCoordinateOutsideGrid()">testWrapCoordinateOutsideGrid()</a>
+</li>
+</ul>
+</div>
+<div id="tab1" class="tab">
+<h2>Packages</h2>
+<table>
+<thead>
+<tr>
+<th>Package</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="failures">
+<a href="packages/matrix.html">matrix</a>
+</td>
+<td>20</td>
+<td>4</td>
+<td>0</td>
+<td>0.148s</td>
+<td class="failures">80%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="packages/model.html">model</a>
+</td>
+<td>22</td>
+<td>14</td>
+<td>0</td>
+<td>0.137s</td>
+<td class="failures">36%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="packages/model.automata.html">model.automata</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.011s</td>
+<td class="success">100%</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="tab2" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="failures">
+<a href="classes/matrix.ConstantMatrixInitializerTest.html">matrix.ConstantMatrixInitializerTest</a>
+</td>
+<td>2</td>
+<td>2</td>
+<td>0</td>
+<td>0.037s</td>
+<td class="failures">0%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/matrix.CoordinateIteratorTest.html">matrix.CoordinateIteratorTest</a>
+</td>
+<td>3</td>
+<td>0</td>
+<td>0</td>
+<td>0.064s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/matrix.CoordinateTest.html">matrix.CoordinateTest</a>
+</td>
+<td>8</td>
+<td>0</td>
+<td>0</td>
+<td>0.018s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="classes/matrix.ListMatrixTest.html">matrix.ListMatrixTest</a>
+</td>
+<td>7</td>
+<td>2</td>
+<td>0</td>
+<td>0.029s</td>
+<td class="failures">71%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="classes/model.CellTest.html">model.CellTest</a>
+</td>
+<td>2</td>
+<td>2</td>
+<td>0</td>
+<td>0.005s</td>
+<td class="failures">0%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="classes/model.CellularAutomatonSimulationTest.html">model.CellularAutomatonSimulationTest</a>
+</td>
+<td>11</td>
+<td>9</td>
+<td>0</td>
+<td>0.093s</td>
+<td class="failures">18%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="classes/model.NextGenerationInitializerTest.html">model.NextGenerationInitializerTest</a>
+</td>
+<td>5</td>
+<td>3</td>
+<td>0</td>
+<td>0.030s</td>
+<td class="failures">40%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.StateTest.html">model.StateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.009s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.automata.GameOfLifeStateTest.html">model.automata.GameOfLifeStateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.011s</td>
+<td class="success">100%</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/js/report.js b/build/reports/tests/test/js/report.js
new file mode 100644
index 0000000..83bab4a
--- /dev/null
+++ b/build/reports/tests/test/js/report.js
@@ -0,0 +1,194 @@
+(function (window, document) {
+    "use strict";
+
+    var tabs = {};
+
+    function changeElementClass(element, classValue) {
+        if (element.getAttribute("className")) {
+            element.setAttribute("className", classValue);
+        } else {
+            element.setAttribute("class", classValue);
+        }
+    }
+
+    function getClassAttribute(element) {
+        if (element.getAttribute("className")) {
+            return element.getAttribute("className");
+        } else {
+            return element.getAttribute("class");
+        }
+    }
+
+    function addClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element) + " " + classValue);
+    }
+
+    function removeClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
+    }
+
+    function initTabs() {
+        var container = document.getElementById("tabs");
+
+        tabs.tabs = findTabs(container);
+        tabs.titles = findTitles(tabs.tabs);
+        tabs.headers = findHeaders(container);
+        tabs.select = select;
+        tabs.deselectAll = deselectAll;
+        tabs.select(0);
+
+        return true;
+    }
+
+    function getCheckBox() {
+        return document.getElementById("line-wrapping-toggle");
+    }
+
+    function getLabelForCheckBox() {
+        return document.getElementById("label-for-line-wrapping-toggle");
+    }
+
+    function findCodeBlocks() {
+        var spans = document.getElementById("tabs").getElementsByTagName("span");
+        var codeBlocks = [];
+        for (var i = 0; i < spans.length; ++i) {
+            if (spans[i].className.indexOf("code") >= 0) {
+                codeBlocks.push(spans[i]);
+            }
+        }
+        return codeBlocks;
+    }
+
+    function forAllCodeBlocks(operation) {
+        var codeBlocks = findCodeBlocks();
+
+        for (var i = 0; i < codeBlocks.length; ++i) {
+            operation(codeBlocks[i], "wrapped");
+        }
+    }
+
+    function toggleLineWrapping() {
+        var checkBox = getCheckBox();
+
+        if (checkBox.checked) {
+            forAllCodeBlocks(addClass);
+        } else {
+            forAllCodeBlocks(removeClass);
+        }
+    }
+
+    function initControls() {
+        if (findCodeBlocks().length > 0) {
+            var checkBox = getCheckBox();
+            var label = getLabelForCheckBox();
+
+            checkBox.onclick = toggleLineWrapping;
+            checkBox.checked = false;
+
+            removeClass(label, "hidden");
+         }
+    }
+
+    function switchTab() {
+        var id = this.id.substr(1);
+
+        for (var i = 0; i < tabs.tabs.length; i++) {
+            if (tabs.tabs[i].id === id) {
+                tabs.select(i);
+                break;
+            }
+        }
+
+        return false;
+    }
+
+    function select(i) {
+        this.deselectAll();
+
+        changeElementClass(this.tabs[i], "tab selected");
+        changeElementClass(this.headers[i], "selected");
+
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+
+        var h2 = document.createElement("H2");
+
+        h2.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(h2);
+    }
+
+    function deselectAll() {
+        for (var i = 0; i < this.tabs.length; i++) {
+            changeElementClass(this.tabs[i], "tab deselected");
+            changeElementClass(this.headers[i], "deselected");
+
+            while (this.headers[i].firstChild) {
+                this.headers[i].removeChild(this.headers[i].firstChild);
+            }
+
+            var a = document.createElement("A");
+
+            a.setAttribute("id", "ltab" + i);
+            a.setAttribute("href", "#tab" + i);
+            a.onclick = switchTab;
+            a.appendChild(document.createTextNode(this.titles[i]));
+
+            this.headers[i].appendChild(a);
+        }
+    }
+
+    function findTabs(container) {
+        return findChildElements(container, "DIV", "tab");
+    }
+
+    function findHeaders(container) {
+        var owner = findChildElements(container, "UL", "tabLinks");
+        return findChildElements(owner[0], "LI", null);
+    }
+
+    function findTitles(tabs) {
+        var titles = [];
+
+        for (var i = 0; i < tabs.length; i++) {
+            var tab = tabs[i];
+            var header = findChildElements(tab, "H2", null)[0];
+
+            header.parentNode.removeChild(header);
+
+            if (header.innerText) {
+                titles.push(header.innerText);
+            } else {
+                titles.push(header.textContent);
+            }
+        }
+
+        return titles;
+    }
+
+    function findChildElements(container, name, targetClass) {
+        var elements = [];
+        var children = container.childNodes;
+
+        for (var i = 0; i < children.length; i++) {
+            var child = children.item(i);
+
+            if (child.nodeType === 1 && child.nodeName === name) {
+                if (targetClass && child.className.indexOf(targetClass) < 0) {
+                    continue;
+                }
+
+                elements.push(child);
+            }
+        }
+
+        return elements;
+    }
+
+    // Entry point.
+
+    window.onload = function() {
+        initTabs();
+        initControls();
+    };
+} (window, window.document));
\ No newline at end of file
diff --git a/build/reports/tests/test/packages/matrix.html b/build/reports/tests/test/packages/matrix.html
new file mode 100644
index 0000000..5093665
--- /dev/null
+++ b/build/reports/tests/test/packages/matrix.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package matrix</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package matrix</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; matrix</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">20</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">4</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.148s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">80%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<ul class="linkList">
+<li>
+<a href="../classes/matrix.ConstantMatrixInitializerTest.html">ConstantMatrixInitializerTest</a>.
+<a href="../classes/matrix.ConstantMatrixInitializerTest.html#testMatrixInitializationWithConstantValue()">testMatrixInitializationWithConstantValue()</a>
+</li>
+<li>
+<a href="../classes/matrix.ConstantMatrixInitializerTest.html">ConstantMatrixInitializerTest</a>.
+<a href="../classes/matrix.ConstantMatrixInitializerTest.html#testMatrixInitializationWithConstantValue2()">testMatrixInitializationWithConstantValue2()</a>
+</li>
+<li>
+<a href="../classes/matrix.ListMatrixTest.html">ListMatrixTest</a>.
+<a href="../classes/matrix.ListMatrixTest.html#testMatrixCreationWithInitialValue()">testMatrixCreationWithInitialValue()</a>
+</li>
+<li>
+<a href="../classes/matrix.ListMatrixTest.html">ListMatrixTest</a>.
+<a href="../classes/matrix.ListMatrixTest.html#testSubMatrix()">testSubMatrix()</a>
+</li>
+</ul>
+</div>
+<div id="tab1" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tr>
+<td class="failures">
+<a href="../classes/matrix.ConstantMatrixInitializerTest.html">ConstantMatrixInitializerTest</a>
+</td>
+<td>2</td>
+<td>2</td>
+<td>0</td>
+<td>0.037s</td>
+<td class="failures">0%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/matrix.CoordinateIteratorTest.html">CoordinateIteratorTest</a>
+</td>
+<td>3</td>
+<td>0</td>
+<td>0</td>
+<td>0.064s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/matrix.CoordinateTest.html">CoordinateTest</a>
+</td>
+<td>8</td>
+<td>0</td>
+<td>0</td>
+<td>0.018s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="../classes/matrix.ListMatrixTest.html">ListMatrixTest</a>
+</td>
+<td>7</td>
+<td>2</td>
+<td>0</td>
+<td>0.029s</td>
+<td class="failures">71%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/packages/model.automata.html b/build/reports/tests/test/packages/model.automata.html
new file mode 100644
index 0000000..5c6ba52
--- /dev/null
+++ b/build/reports/tests/test/packages/model.automata.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package model.automata</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package model.automata</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; model.automata</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.011s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tr>
+<td class="success">
+<a href="../classes/model.automata.GameOfLifeStateTest.html">GameOfLifeStateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.011s</td>
+<td class="success">100%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/packages/model.html b/build/reports/tests/test/packages/model.html
new file mode 100644
index 0000000..a6a7125
--- /dev/null
+++ b/build/reports/tests/test/packages/model.html
@@ -0,0 +1,197 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package model</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package model</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; model</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">22</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">14</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.137s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">36%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<ul class="linkList">
+<li>
+<a href="../classes/model.CellTest.html">CellTest</a>.
+<a href="../classes/model.CellTest.html#testCellValueChangeWithListener()">testCellValueChangeWithListener()</a>
+</li>
+<li>
+<a href="../classes/model.CellTest.html">CellTest</a>.
+<a href="../classes/model.CellTest.html#testCellWithoutListener()">testCellWithoutListener()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testAt()">testAt()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testColor()">testColor()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testCopy()">testCopy()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testNext()">testNext()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testNumberOfColumns()">testNumberOfColumns()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testNumberOfRows()">testNumberOfRows()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testReset()">testReset()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testSetChangeListener()">testSetChangeListener()</a>
+</li>
+<li>
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>.
+<a href="../classes/model.CellularAutomatonSimulationTest.html#testSetGenerationNumberChangeListener()">testSetGenerationNumberChangeListener()</a>
+</li>
+<li>
+<a href="../classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>.
+<a href="../classes/model.NextGenerationInitializerTest.html#initialValueAt()">initialValueAt()</a>
+</li>
+<li>
+<a href="../classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>.
+<a href="../classes/model.NextGenerationInitializerTest.html#testWrapCoordinateInsideGrid()">testWrapCoordinateInsideGrid()</a>
+</li>
+<li>
+<a href="../classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>.
+<a href="../classes/model.NextGenerationInitializerTest.html#testWrapCoordinateOutsideGrid()">testWrapCoordinateOutsideGrid()</a>
+</li>
+</ul>
+</div>
+<div id="tab1" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tr>
+<td class="failures">
+<a href="../classes/model.CellTest.html">CellTest</a>
+</td>
+<td>2</td>
+<td>2</td>
+<td>0</td>
+<td>0.005s</td>
+<td class="failures">0%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>
+</td>
+<td>11</td>
+<td>9</td>
+<td>0</td>
+<td>0.093s</td>
+<td class="failures">18%</td>
+</tr>
+<tr>
+<td class="failures">
+<a href="../classes/model.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>
+</td>
+<td>5</td>
+<td>3</td>
+<td>0</td>
+<td>0.030s</td>
+<td class="failures">40%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/model.StateTest.html">StateTest</a>
+</td>
+<td>4</td>
+<td>0</td>
+<td>0</td>
+<td>0.009s</td>
+<td class="success">100%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.8</a> at 22 nov. 2024, 15:33:30</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml b/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
new file mode 100644
index 0000000..1644dee
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.ConstantMatrixInitializerTest" tests="2" skipped="0" failures="2" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.039">
+  <properties/>
+  <testcase name="testMatrixInitializationWithConstantValue()" classname="matrix.ConstantMatrixInitializerTest" time="0.034">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;X&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;X&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//matrix.ConstantMatrixInitializerTest.testMatrixInitializationWithConstantValue(ConstantMatrixInitializerTest.java:15)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testMatrixInitializationWithConstantValue2()" classname="matrix.ConstantMatrixInitializerTest" time="0.003">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;12&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;12&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:534)
+	at app//matrix.ConstantMatrixInitializerTest.testMatrixInitializationWithConstantValue2(ConstantMatrixInitializerTest.java:27)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml b/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
new file mode 100644
index 0000000..ebbbfba
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.CoordinateIteratorTest" tests="3" skipped="0" failures="0" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.069">
+  <properties/>
+  <testcase name="testIteratorWithZeroDimensions()" classname="matrix.CoordinateIteratorTest" time="0.004"/>
+  <testcase name="testIteratorWithTwoDimensions()" classname="matrix.CoordinateIteratorTest" time="0.058"/>
+  <testcase name="testIteratorWithOneDimension()" classname="matrix.CoordinateIteratorTest" time="0.002"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-matrix.CoordinateTest.xml b/build/test-results/test/TEST-matrix.CoordinateTest.xml
new file mode 100644
index 0000000..1db5b9c
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.CoordinateTest.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.CoordinateTest" tests="8" skipped="0" failures="0" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.036">
+  <properties/>
+  <testcase name="testAbove()" classname="matrix.CoordinateTest" time="0.002"/>
+  <testcase name="testBelow()" classname="matrix.CoordinateTest" time="0.003"/>
+  <testcase name="testRight()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testLeft()" classname="matrix.CoordinateTest" time="0.002"/>
+  <testcase name="testDiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.003"/>
+  <testcase name="testCoordinateCreation()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testOrthogonalNeighbours()" classname="matrix.CoordinateTest" time="0.002"/>
+  <testcase name="testOrthodiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.004"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-matrix.ListMatrixTest.xml b/build/test-results/test/TEST-matrix.ListMatrixTest.xml
new file mode 100644
index 0000000..b5ebc82
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.ListMatrixTest.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.ListMatrixTest" tests="7" skipped="0" failures="2" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.042">
+  <properties/>
+  <testcase name="testMatrixWidthAndHeight()" classname="matrix.ListMatrixTest" time="0.002"/>
+  <testcase name="testMatrixCoordinates()" classname="matrix.ListMatrixTest" time="0.003"/>
+  <testcase name="testMatrixCreationWithInitialValue()" classname="matrix.ListMatrixTest" time="0.007">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;Foo&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;Foo&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//matrix.ListMatrixTest.testMatrixCreationWithInitialValue(ListMatrixTest.java:30)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testSubMatrix()" classname="matrix.ListMatrixTest" time="0.003">
+    <failure message="java.lang.NullPointerException: Cannot invoke &quot;matrix.Matrix.width()&quot; because &quot;sub&quot; is null" type="java.lang.NullPointerException">java.lang.NullPointerException: Cannot invoke &quot;matrix.Matrix.width()&quot; because &quot;sub&quot; is null
+	at matrix.ListMatrixTest.testSubMatrix(ListMatrixTest.java:90)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testMatrixIterator()" classname="matrix.ListMatrixTest" time="0.011"/>
+  <testcase name="testMatrixCreationWithInitializer()" classname="matrix.ListMatrixTest" time="0.001"/>
+  <testcase name="testMatrixSetAndGet()" classname="matrix.ListMatrixTest" time="0.002"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.CellTest.xml b/build/test-results/test/TEST-model.CellTest.xml
new file mode 100644
index 0000000..406ae5b
--- /dev/null
+++ b/build/test-results/test/TEST-model.CellTest.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.CellTest" tests="2" skipped="0" failures="2" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.006">
+  <properties/>
+  <testcase name="testCellValueChangeWithListener()" classname="model.CellTest" time="0.003">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;true&gt; but was: &lt;false&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;true&gt; but was: &lt;false&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
+	at app//org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
+	at app//org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:31)
+	at app//org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:179)
+	at app//model.CellTest.testCellValueChangeWithListener(CellTest.java:30)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testCellWithoutListener()" classname="model.CellTest" time="0.002">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;Bar&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;Bar&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.CellTest.testCellWithoutListener(CellTest.java:38)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml b/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
new file mode 100644
index 0000000..ed5f6ca
--- /dev/null
+++ b/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
@@ -0,0 +1,840 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.CellularAutomatonSimulationTest" tests="11" skipped="0" failures="9" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.129">
+  <properties/>
+  <testcase name="testNumberOfColumns()" classname="model.CellularAutomatonSimulationTest" time="0.011">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;4&gt; but was: &lt;0&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;4&gt; but was: &lt;0&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:527)
+	at app//model.CellularAutomatonSimulationTest.testNumberOfColumns(CellularAutomatonSimulationTest.java:36)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testSetGenerationNumberChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.007">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;[0]&gt; but was: &lt;[]&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;[0]&gt; but was: &lt;[]&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.CellularAutomatonSimulationTest.testSetGenerationNumberChangeListener(CellularAutomatonSimulationTest.java:131)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testClear()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
+  <testcase name="testColor()" classname="model.CellularAutomatonSimulationTest" time="0.031">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;0xffffffff&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;0xffffffff&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.CellularAutomatonSimulationTest.testColor(CellularAutomatonSimulationTest.java:100)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testReset()" classname="model.CellularAutomatonSimulationTest" time="0.009">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;7&gt; but was: &lt;0&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;7&gt; but was: &lt;0&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:527)
+	at app//model.CellularAutomatonSimulationTest.testReset(CellularAutomatonSimulationTest.java:160)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testCopy()" classname="model.CellularAutomatonSimulationTest" time="0.006">
+    <failure message="java.lang.NullPointerException: Cannot invoke &quot;model.Cell.set(Object)&quot; because the return value of &quot;model.CellularAutomatonSimulation.at(matrix.Coordinate)&quot; is null" type="java.lang.NullPointerException">java.lang.NullPointerException: Cannot invoke &quot;model.Cell.set(Object)&quot; because the return value of &quot;model.CellularAutomatonSimulation.at(matrix.Coordinate)&quot; is null
+	at model.CellularAutomatonSimulationTest.testCopy(CellularAutomatonSimulationTest.java:89)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testNext()" classname="model.CellularAutomatonSimulationTest" time="0.006">
+    <failure message="java.lang.NullPointerException: Cannot invoke &quot;model.Cell.get()&quot; because &quot;cell&quot; is null" type="java.lang.NullPointerException">java.lang.NullPointerException: Cannot invoke &quot;model.Cell.get()&quot; because &quot;cell&quot; is null
+	at model.CellularAutomatonSimulationTest.testNext(CellularAutomatonSimulationTest.java:80)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testAt()" classname="model.CellularAutomatonSimulationTest" time="0.003">
+    <failure message="java.lang.NullPointerException: Cannot invoke &quot;model.Cell.get()&quot; because &quot;cell&quot; is null" type="java.lang.NullPointerException">java.lang.NullPointerException: Cannot invoke &quot;model.Cell.get()&quot; because &quot;cell&quot; is null
+	at model.CellularAutomatonSimulationTest.testAt(CellularAutomatonSimulationTest.java:48)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testUpdateToNextGeneration()" classname="model.CellularAutomatonSimulationTest" time="0.007"/>
+  <testcase name="testSetChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.009">
+    <failure message="java.lang.NullPointerException: Cannot invoke &quot;model.Cell.addOnChangeListener(model.OnChangeListener)&quot; because the return value of &quot;model.CellularAutomatonSimulation.at(matrix.Coordinate)&quot; is null" type="java.lang.NullPointerException">java.lang.NullPointerException: Cannot invoke &quot;model.Cell.addOnChangeListener(model.OnChangeListener)&quot; because the return value of &quot;model.CellularAutomatonSimulation.at(matrix.Coordinate)&quot; is null
+	at model.CellularAutomatonSimulation.setChangeListener(CellularAutomatonSimulation.java:98)
+	at model.CellularAutomatonSimulationTest.testSetChangeListener(CellularAutomatonSimulationTest.java:112)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base/java.util.ArrayList.forEach(Unknown Source)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testNumberOfRows()" classname="model.CellularAutomatonSimulationTest" time="0.003">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;3&gt; but was: &lt;0&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;3&gt; but was: &lt;0&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:527)
+	at app//model.CellularAutomatonSimulationTest.testNumberOfRows(CellularAutomatonSimulationTest.java:41)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml b/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
new file mode 100644
index 0000000..761ca17
--- /dev/null
+++ b/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.NextGenerationInitializerTest" tests="5" skipped="0" failures="3" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.036">
+  <properties/>
+  <testcase name="testWrapCoordinateInsideGrid()" classname="model.NextGenerationInitializerTest" time="0.017">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;(1,1)&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;(1,1)&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.NextGenerationInitializerTest.testWrapCoordinateInsideGrid(NextGenerationInitializerTest.java:50)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="testModuloPositive()" classname="model.NextGenerationInitializerTest" time="0.001"/>
+  <testcase name="testModuloNegative()" classname="model.NextGenerationInitializerTest" time="0.001"/>
+  <testcase name="testWrapCoordinateOutsideGrid()" classname="model.NextGenerationInitializerTest" time="0.008">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;(0,1)&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;(0,1)&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.NextGenerationInitializerTest.testWrapCoordinateOutsideGrid(NextGenerationInitializerTest.java:55)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <testcase name="initialValueAt()" classname="model.NextGenerationInitializerTest" time="0.003">
+    <failure message="org.opentest4j.AssertionFailedError: expected: &lt;DEAD&gt; but was: &lt;null&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;DEAD&gt; but was: &lt;null&gt;
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
+	at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
+	at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
+	at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
+	at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
+	at app//model.NextGenerationInitializerTest.initialValueAt(NextGenerationInitializerTest.java:39)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728)
+	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
+	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:218)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:214)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:139)
+	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at java.base@17.0.13/java.util.ArrayList.forEach(Unknown Source)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+	at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+	at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+	at java.base@17.0.13/java.lang.reflect.Method.invoke(Unknown Source)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+</failure>
+  </testcase>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.StateTest.xml b/build/test-results/test/TEST-model.StateTest.xml
new file mode 100644
index 0000000..23ee942
--- /dev/null
+++ b/build/test-results/test/TEST-model.StateTest.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.StateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.014">
+  <properties/>
+  <testcase name="testCountMethodWithNoMatchingElements()" classname="model.StateTest" time="0.002"/>
+  <testcase name="testCountMethodWithInteger()" classname="model.StateTest" time="0.004"/>
+  <testcase name="testCountMethodWithEmptyList()" classname="model.StateTest" time="0.001"/>
+  <testcase name="testCountMethodWithString()" classname="model.StateTest" time="0.002"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml b/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
new file mode 100644
index 0000000..cb27ceb
--- /dev/null
+++ b/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.automata.GameOfLifeStateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2024-11-22T14:33:30" hostname="eduroam-1-74-95.univ-amu.fr" time="0.016">
+  <properties/>
+  <testcase name="testGetColor()" classname="model.automata.GameOfLifeStateTest" time="0.001"/>
+  <testcase name="testNext()" classname="model.automata.GameOfLifeStateTest" time="0.005"/>
+  <testcase name="testDeadUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.003"/>
+  <testcase name="testAliveUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.002"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin
new file mode 100644
index 0000000..e69de29
diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
literal 1
IcmZPo000310RR91

literal 0
HcmV?d00001

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
new file mode 100644
index 0000000000000000000000000000000000000000..e1865a52d9fc241ee89886c2db1205b24e33340b
GIT binary patch
literal 181324
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

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomaton.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomaton.class.uniqueId6
deleted file mode 100644
index 1a0ed666b87c50677a7f121d1a97229e1e05925c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 389
zcmX^0Z`VEs1_nn4A$A5PMh5ZR{FKxjedpAioYI`cBFEB_{M^Kn{5*CB7Dfhvti-ZJ
z{hY+SbbbG%tkmQZMh5=8(%hufBL6h!{G8I<ykbTMW(`eGMg|_3cu;<MF(U&{N@`kS
zX--LSNn%MVBLlyNrVqp-uz)oq17~n%dR}5lX;CU81FME+NU${{19wqkUP^v0SP3J8
zqJ|IH`qGlj9Q`1$j5WF`;@H%H&C;|9wz5LD(<UU?+RoYzVkVN8tQi@&g7Zs@l2hF>
zb5a=@#4v(F59ACsMg~R(W(E*oVPRxoWng0fg%CTG=3wAtU}WH8U|?Wk;AUZD;9=l}
Q^Z6K<pfdan0$>$_0CiVk-~a#s

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId1
deleted file mode 100644
index 666eee34be1ba6a3882b4a01d6f8c4b665a305ca..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4336
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

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..2f16ea4c75ab73551466ffcc6ea2bc92abdcd589
GIT binary patch
literal 843
zcmX^0Z`VEs1_nn41uh0A24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc28G<jlA_ECedqkV;*!L?5??UaGcU6wGchN#Dz%86fs2tr0;&o_
zmXSeJ!w20SYt1l51{UZ1lvG9rexJ;|RKL>Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYY
zQj(Eb%*deR1GNaJbF3K|IFg}m1(}6mHzR`>ss)t=sZdMQ37T#b5@Ky<&B(wU5@OBB
zz!{vGo|jlsT9nGjz@`xr0`?alC<HS>9>^(8bu3|IP}e{hn_rZYnU`3SYORSGD2xnT
z$@wq^j10n9bTKkWU^NWv8h4uzD@;@EFoj?SV?-9rcU-~wrA5i9ZkeFyki!|&dZ4gn
zP-I|dU}9io;ACI`)2s~K3``6>3=9mB42%p+3=9mcTH6^IH!?6VFf;HnFff2pAp-+D
z0}BHu10MqegBU~+13!ZR0|>A(2r>vUFfs_E$cccY7(jBO42%q7V9UfA7#SoOB%#)M
zK&@k9+yJ+Wje(JYfq@Un9wxXwObk*C(olPN!0JG9AbTLD%P=rO?U7}W1KTGL0Q7Om
AwEzGB

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeAutomaton.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeAutomaton.class.uniqueId4
deleted file mode 100644
index 6bd36f42deaaa9459be2cbcbd62ab2e47a4d957e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1141
zcmX^0Z`VEs1_nn4H7*7w24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SE(Q(;PId+^9tLg(9!3VG-29Z(9R0-7lKkAnl0<#?#N1T>G@s10R7Z$V
zejXzOcTr+qN`7u|Nn%MVBZG;C57>^<lFS_aAh3+JrVmbYz`CqK*7ET%@G}T7GVr9N
zrX`l<lz?Rz8I&{#>SkvUVq_49SmB(SlT(_LScK$0Rt-;2%`ip=7U%qwR7M7VpUk{e
zztY^K)S{5Yq?}Yn1|gsP<iwn?#G*_PA1cUFl95@=$e@DT>2NEo85#KVzy|uKIp^n;
z=H?YMGBA2FGVs7egYwIZ!2#^a$iSJNnwMIXSdw1^vKb?+7#S4tgdjLjtQi>ud{av@
z@>2p5ixP8FOHzx985#KD0R>aU8JwA(msnC-l*-893yBq^n74-d3?syBpb}VO9b&Sb
zH6sI8aDHh~a;jS<C;%m}qzgTe&lnULI2f217#Rc^7#P?Y7#Ua@gc%qaL>L$t+!+`d
zm>C!tShcn@Fm7aEU|?bpWnf?crB?<9P6ieRZU!+11_lL)A_j2=2?h{gWsqc$VqgSm
zWRPZ%0vj&LAOkg2hk+3+$Hcq_ZXz34L;!3W517paHI0!$nh2d@SatF<2%y`^xB<;h
z8LT?F89=T81%Vj@BLfpi4~9-9uud_EEY!825Rzq(V_+0;WZ-6yXJ7&cqX7dGSQVR=
z_BIA~bQiFL%>miRz`zDIM*$Rej0_9{3<8b}{0xdvZ|FmVj#X<L11~;vSfS=HF(`rD
L&Y;Yo0;W{~_LAAv

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeState.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeState.class.uniqueId2
deleted file mode 100644
index 496f137cfbed7d0264a6ca2f99b74a1b97c92542..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1995
zcmX^0Z`VEs1_nn4Z*~SIMh3au{FKxj{lwCe{M^KnM1A+f+*JQGpUkw>;F83WR89s)
z1{NL$Rt7dk23AKO&oEa;1_dAddaOa3ICvO1L7G@xTpe9N0^B?dJPf>y4D2dljy|ET
z!Hf)w(S!`*V&G>GU}xavVGv{xVq{=V&dJY9Wn>W1(DcblEKAhSNz6;v_fN`7O)jzK
zVh~{vWoHoMVGw7KU}WG!C~(ay&1Ga@FH6iRP4!P>WH8l0((Rm+SX^w4BoJIul$n=q
zjcfzR0I>N|JPgtdGK>stHko;uC3cJqV#r28b$V)saWcp;$g?vj@GvMcC^0fffZUQ+
zp<kSwnwP3ykeHcQqVJralV8Nh!0P1V=<LnNAO&^-HZ|5<42%paJPfJ~YK#nQr3ER8
zC8>-IMo^1OOEPoxeKLzntThP-CL@Ce4}&Iy79#^oUTQ@NBZHC#L0udStRM$SaWHU#
zXnh_A0|rA-EP{ixn2|wQLz7@UvNISnGH^pu4LDgbGO)q)vpDCcq%tz_`();&`jzG;
zr51%GCgr3uGMGTU2##cE*b;OuBZH7nesW??SYlBo$QY<uEP08!sUSH}OhA$i)I>%G
z0pHY;jQo^<#G=I9)RNSqVnzm*l8nq^Mh4E{%=Em(lG377Mh0dL%`ip=j`Y+LXw1n#
z6Cu_(V`SjUOU+ErNXjn-nI`~_U42AkF*1muI<vAM73x$YG_^K_;?>TYks$;cR&X1L
z&_zU8s-PQ-k}aSakCB1HCOHS1Arc|32geyG+YsRnsQ<v}f(Ye|3|ztarA5i9ZkeD|
zB7#<6>49R{!H|KGL4<*k!H9v`K@wDYF)%ntf(j%C1_3EhImE!gz{SAHV8Q@WY0ALB
zpv1t)00LZ_7`V1E@Eu^_-@w4Yz{p_6z`(!;mg8pNWDsXCXJBFgsW)L@0*i79F>38#
z5I(@b2vX04qTYgmfq@62ioue>ih+T_nt_3Vm63s=fq{VuRFp6<gAFreU}j)uU|?X^
z(w5oIAi0qNB#mq{!X$PE8wNJ0Nt{d!3<3;bYzx+6$H2&7&)~qo2sTxZfe~yu%O(a{
zbjJxXAdF;z8p#MM8=!i1pn91wyd{C8lL@X<l|c;}Fdhty3``)`fORq>1&AD2rx-*Q
zsuSc<M+PSbMh0hiU@<W`GPp1>GC=&~D&WYV%HRey-GG4!te;IwdmDo?y05swHb8=$
z4Qc}{$ORY#92qnjgrFYOhkB4zYa4?)K66+h<_K_s3O=Z2O$HWFT44}m-OIoj$-Iey
zIXIGK69aoN$RN}-!@=Or0E!k+nz4myQ{2tK7%8O9yq!U3GXpc2qss#3u<u~d+swcP
cN&paJxWK;UVUS|rW?+JbhzElwD0~^b00LX4{r~^~

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..a26cc8107669325fa8ce6a64eefdc4b6cb4bf6da
GIT binary patch
literal 3029
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

literal 0
HcmV?d00001

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId0
deleted file mode 100644
index 80c0fcd224a6291ccca3999b938dd923af0c1789..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1408
zcmX^0Z`VEs1_nn4T`mSD24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SE(Q(;PId+^9tLg(9!3WF-29Z(9DTpkiW2wKywsw^lFa-(&%Df%%*33`
zs?;Jz20oDH%*33q#GKMp#}Y;cB@Lh4#FC=S3VrAN{Gyc1yu^}JYfT@BLBS;;9y<dc
zBZCA~l`mK^ikWH}Q0304IXR^{iA9d3CHc9DCHZ;5nYpDoU`JSMhA}d*IOnINGBWV{
zWag#%mF6a;7KJ1x<)kt)2>IkEgWOb<3F1QqSxPc8iy0Xdp@!r1lr<v*S25foMh0c5
z27InzWDrBOva%o*YONYnJ5Kv-LV~UBtQi@I@HI>+XK-eEUSdgUQ7R*YHqrV(LB^E~
zj}=A+VJuO_$RL3=21A0a85vm0ixLYM88on}z-ky<ZhlH>PCg?8tA?kirY9o<V;&;|
zBZy96WMC^wEiTO|VPxP9E=f$z_Dw8+hM78c3(ym<H6w$7Z)!<Keo8=MQDSatNor9s
zBZG%cu$2`w(7_1~5^8on7}{Yj#z=z@9gGZI!TF^{$*FFcphP8yGY0iQCNn59a4;}2
zFf#BmFfgz(Ffy<*@G~$m2rw`(L^3ckFo8t1wlgqpWME)mW)NgxU;yP!1_p5k76wTM
zAqEBpF^D1tVFnQf5MX5xWe{UvWDrM@lK@FEfaD|@7#XA(7#Nrsq!}1N85U}t2h=(y
z#tm@0*cccY7#QS`>|ui2!^9xNAPcpJ2doYx2eJoZx*P)ogFJ%*10&coxJ}n3(R2<5
zMFu6PsR^KRih+SaKuWs6R%#9dr;K#Mat0QeHE<t5Ld%?ig~0-Bj{*ZTNIioxg9<oA
z1Q=8qR2Uc;SQvO1)EHD4m>AR<7(h|-hk=jLfl<Jbftx`C8bVGCOyIC))6(9?z>XeD
ld|>k-A;AU>B~Tn7L_lGq35rlg22hwVL8C#7K^q($IsklUGui+E

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3
deleted file mode 100644
index d3e7e6501fdcde716363cd6017444d3fbf0f8365..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3200
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

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/State.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/State.class.uniqueId5
deleted file mode 100644
index 677d2231efee89f0afb0f0481ed6ebed3e15b342..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 723
zcmX^0Z`VEs1_nn4Id%pnMh5QO{FKxj{os<sl2mpE7Dfhvti-ZJ{hY+SbbbG%tkmQZ
zMh1@b)Dq|Xoctn21{n=aACQ8y3jN~b)Vx&vg2c?c5`D0&H6sH{UTQ@NBZCN36|ynb
zj0~K?ndy0nC8b5Fj0~(Anjyi~j0|k01u2Oosf-LN8eoI<OG`3y^nEgmOROO_p_w6t
zuFNJR*xJq-Vi;?3era9_BZDeb5t1*gF--SlWMFa5Pf2BD;P=VQOZ6+wO-d~aNleN~
zWn>WY$xlwq2}>->1o5GQti_-}0!e~G0L@)od8wJ{8A<u2Ma7H^0_c`8GKis?SXqz?
zHI+Fe#F~*o6itUsNQkwaH6w$eO^6jl3fV7q8X+O*9)jr5^kihvunESd2h$iv2Cm@z
z(xT*4w@i?yxxk4)59B#EMg~R(W(E*oVPRxoWng0fr44ol4hBXBP6h@BCI&7RMh0#M
z9yp(ufs=ucfuDhiL4bjQA&7yIfeECJc?|;t12cml0|Nsa10w?ig8_pO0|SE?M3zCA
mK?Gz80~3QNgBSxNgE)$u1YAxMZjTfL6VwIL3^E`a7-Ru&U97?Y

diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index f076e28112b339596eb66b4b6b5e899995e7d843..2fb9efa91e5ea4a6b34bd01510136cf77bfe6520 100644
GIT binary patch
delta 107
zcmdnHobm8-#tBLSd|$ckJ1%)dtl{12QqA(`??j_j0t`1^$fg=Rce-KqBzF6plw}j&
zRPmRYe4NYiklm`$v7$|Mme=G`Mq7dJdDp*}<*YxEny^L1d3(m+&4(B_F)|u&E@ghr
P$fC)}$gnw%HQo;ZHHj`U

delta 102
zcmX@SoN@1R#tBLSJfEJW9t~S0yY*R3o<qKD+eD*P0-WuS8DbwfEqJcB<KfYy;GYxU
zRPlc~;N>H07km89^Kh|m)6^!HGTI85=J#<k=vdvg&Ww0@X?LpM=0l8|7#WQ=momR*
K+?>W5>jwap6fK_s

diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/CellularAutomatonSimulationTest.class.uniqueId2 b/build/tmp/compileTestJava/compileTransaction/stash-dir/CellularAutomatonSimulationTest.class.uniqueId2
new file mode 100644
index 0000000000000000000000000000000000000000..3dc3e8333d0ef9449ab895c39eb6aa4b39acc3c9
GIT binary patch
literal 7578
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
bU=|l6HzOaTECT}r7Xu@s9HRoG5`!cFKY`|j

literal 0
HcmV?d00001

diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0
deleted file mode 100644
index cde4b6594d2a1ff59ef83f819d769bcea647ca47..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1489
zcmX^0Z`VEs1_nn48!iSW24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc2Ep9KlA_ECeV@$Y5??Troq>yyK>;f4oS#=*l9&gT^32OD$xO`2
ztV%87VBle7V2t2m;AG$f*~ibwAgbYmZlkqk7#9OOgCIzS5F>-UhNq_w)MSWdNG3wn
zitsRqGKeuUFsG-MFfxc~czSAL8q38X!63=bAjQKV%^<_bppajbuAfz!msz5pRa%f)
zl3JvnSdgjjSX`W1RFavWSIo%3lL+Rx7M3RF6f-iYV{t2{H6Yi^G03wsDDW^SGAJ=J
z2qHY_nOBmUo?67nz+RS^Q=00Z26im6TcIkfL5@`cxm1;rL0rQV$r_jnP+X`pGN?d<
z24|p$q!yPjGO#%3r=&76@cU%urTUfTCZ!gIBqrsgGBODH<R>TQge4Ybg7{EDmXeIj
zVnzlvSh(Xg+?tU=vm_Ok65x@O2nxjT%#sY4<}i?#85tNW85tNo85tNW7#Y|gj%Q>L
zhS`KjQr3(NVyJGbEJ%gAPaRXa4N?#VmlS2@rCZxsGcxc7mn0@<`z97ZbxH=6=9OgT
zriNt}XC~#OI_Bl&mw;Vb%*Y_)gFQ)rLeQF#L5pZl8Zk0x;CCS`5<yPn3eGPrN=|jl
z1Vx7uEVM9^I>;4zprpj0z@Wy!!~g=!3=E)b%fQH>!N9<v&%nsQ2ollS&cL{lfq{XE
zL6d=jfekFk&Y;D>z`z4$vodHi=rAxaFf!;eurV-!H6LMMXJBDqV6fcHz#hrQwwr-7
zQiyvy1MhYQ0Uu^t8MZ|Xip+MhY>OB~gt)b3WVbO0?_dybVP;(Z|7{Bs<MRIxKo+uq
zEtF$mXJBC9Vi0EFWsqXvV^Cz^XV78bV=!XiWw2ln0y{*DfrUYaL5x9<L7#z{L6kw6
z!GJ*@>?=#C<AfR17z`PV7#JChp$><Lm@qIhm@+Uh2s5z!We{a&U}yZpz{dECLG%{`
zD}x!-zvf`yS-^dF3hFz1u<tlPz7yct!61v`K^0~@S&l^v;sQJn4<2BU+rgj=_TwwC
zAMc|3QH(*1L6Sk1L5e|zL7KscL5jhGL6X6aK@RRmc?L<SA0-&n;C{4+`caHQ6U~nh
U5ldu0N+A3wf$2vpa6DTB0IV)zi2wiq

diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/GameOfLifeStateTest.class.uniqueId1 b/build/tmp/compileTestJava/compileTransaction/stash-dir/GameOfLifeStateTest.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..e06eff8f2660041a36cf720e528bcbabe7ee5edb
GIT binary patch
literal 2205
zcmX^0Z`VEs1_nn4FD?cq24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3TUkn*$&{o>@*yj1;y#LT=Bedqj~{31pM)^HEc
z5LZS9DIZ*FtT`F@82H&41b7$(8H5-a<Z|;<QgieZOH1-|6H5~H-4k<D{nLCh(^7*=
z5=&AU8CYCg9bFh16nyY2wB};qV-VqC5M>Z!WZ+0oErGg7Mne;~Teuh`7$n&lq<9#l
z8Dtn46!MGG^|MOzGE4NcN((YeQj7Ex3o`W`i;Gi>N;32FiWwPr62TnT!qUW?Vnzma
z4Y1+JVP}mg0trDm9tL?(@G%Fux_|;fk%vJE6auV{KAvH&Am^*_FsL%9F*2~^rB;+M
zGAL<i67n=Rg9d{pJA)PvgEoT>BLg2O)b&eCGIR8OGK)(X8JP0Z7#VViawMj+i4lPW
zF2YK1H0bd#=rb5FGO(2vq=4hl2<ig3%dCm=nGwia#*7S6Q0+)56iX<R<y>|KQ$_|Q
z{7EY$6%>>#&iN^+j12rfnR%&xrMXF|MInhvIjM{cLO%J)i8*13MVTNzRFI`4BeR&1
zL4`mBf{eCiWZ)@DEiQ3~r&-CM(!7$)+|;nl;>@I+RL8u${E|dy0+jK=o=Bl4aez$n
z11BGT5YsUyvn(|f8V!7jAf8`pW_m_aeo-+ag8(GV5YfWOAXrkK57vaFOeihCv<O46
zDzykhr5I{hR2HN{!@~&8CL00)V{K>6$iN5kflF#)3d{ps!TF^{$*FFcpm3K!D=I)C
zpa;qT3<?Y;3``6lz{<b?D&iOz8O#_M81xw!85lt#TH6^IH!?6VFfo`jFfg!z1$h`O
z7#J9Mz-(3qO9m?j1_nk3YX&w3Ca`921}3na<R%98O$@x-7=(8)h;L$$-Nc{(VIvIW
zV_;@rVBlxqVGv-DU=TzySQ2Wm4b)m&uqAfbEK%6TpuCBJ7i<YHn60pbK^)x@Q3f6c
zF$M_+ae|iE!z^JmVqj$e1x&*x28B%wyl`>{gSroxqoBQwK^JT>vOMn&26bPEybh8)
zT#3RC26aD(dAcxpUN9d-?qD#qVgd6MBv~NRAipq!W5A4omw|ynhJl|!mO+?7jzNJz
zkwKq9iNTmbnZbcUjlrKmogtV(gCT)In<0lmhoO)`m!Y0P5A0_Xh+m)qE6k9~;K1O>
zz{p_C;LG5|;K;zl5X_*<;LPC2z|2s{z|Y{q;K;zj;L5<jpvAz#08#G-SMLT_?*>=z
z#=ydW8e#6lhb1q*umlARfw1Jo8<xDd!qS+5pTUGdn8B1mfx&`7pTUyBn8Av{fx(u+
ipTUkHn8BVQfx(F(hryYlkimtap22m%!qNkr4?O|qIsT~t

literal 0
HcmV?d00001

diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1 b/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1
deleted file mode 100644
index 40a8c0c74fdc4d7c6ae6a9740afabb180109cbc4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4407
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

diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/NextGenerationInitializerTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/NextGenerationInitializerTest.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..2e7d38fee51e70409a33d1548ec57fd3a51570dc
GIT binary patch
literal 2997
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
KtY`q|@kRhz%-y5_

literal 0
HcmV?d00001

diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
index b847dc1883fd5ce455c9a72ff49f46a7bcf1bafb..f0ffb969ed6cb6f01762c672e07b5f69250f8a1b 100644
GIT binary patch
delta 92
zcmbQNJXv{zIEMh=S8n@`OCAwxc(=M#v;6rxS)F5o0K<(JvZ)5ooo-k?iQPUYW!dE8
z9QOsj=Ux9^mb3muYQh#3=j|DPCvW3470^5t5iM;XbIJFTVzbjFZST#$IcKl~0A6b;
ATmS$7

delta 92
zcmbQNJXv{zIEMhwr)Q~0!xqVIeO8m_kT2UdS)F5o0B8GShS*0=3!ba(cz84^_~+!~
z9QOrG^ZU3Nbgb@LXGXldv^&*r@-|LW0lkX#jOR0xRbNm4nX+hZ{FlwYIcKl~08C#g
AzW@LL

diff --git a/src/main/java/matrix/ConstantMatrixInitializer.java b/src/main/java/matrix/ConstantMatrixInitializer.java
index 88d798b..6e4cdd6 100644
--- a/src/main/java/matrix/ConstantMatrixInitializer.java
+++ b/src/main/java/matrix/ConstantMatrixInitializer.java
@@ -1,16 +1,14 @@
 package matrix;
 
 public class ConstantMatrixInitializer<T> implements MatrixInitializer<T> {
-
-  // TODO: add instance variables
+  private final T constant ;
 
   public ConstantMatrixInitializer(T constant) {
-    // TODO
+    this.constant = constant;
   }
 
     @Override
     public T initialValueAt(Coordinate coordinate) {
-      // TODO
-      return null;
+      return constant;
     }
 }
diff --git a/src/main/java/matrix/CoordinateIterator.java b/src/main/java/matrix/CoordinateIterator.java
index 726315c..8fa551e 100644
--- a/src/main/java/matrix/CoordinateIterator.java
+++ b/src/main/java/matrix/CoordinateIterator.java
@@ -22,8 +22,8 @@ class CoordinateIterator implements Iterator<Coordinate> {
     public CoordinateIterator(int width, int height) {
         this.width=width;
         this.height=height;
-        this.x=x;
-        this.y=y;
+        this.x=0;
+        this.y=0;
     }
 
     /**
@@ -33,7 +33,7 @@ class CoordinateIterator implements Iterator<Coordinate> {
      */
     @Override
     public boolean hasNext() {
-        return x<width && y<height ;
+        return  y<height ;
     }
 
     /**
@@ -46,7 +46,7 @@ class CoordinateIterator implements Iterator<Coordinate> {
     public Coordinate next() {
         if (!hasNext()) throw new NoSuchElementException();
 
-        Coordinate Actual = new Coordinate(this.x, this.y);
+        Coordinate Actual = new Coordinate(x, y);
         x++;
         if (x>=width){
             x=0;
diff --git a/src/main/java/matrix/ListMatrix.java b/src/main/java/matrix/ListMatrix.java
index 1d29478..98538f5 100644
--- a/src/main/java/matrix/ListMatrix.java
+++ b/src/main/java/matrix/ListMatrix.java
@@ -26,19 +26,25 @@ public class ListMatrix<T> implements Matrix<T> {
   public ListMatrix(int width, int height, MatrixInitializer<T> initializer) {
     this.width = width;
     this.height = height;
-    this.matrix = new ArrayList<>(width);
-   // fills the matrix using initializer
-   for(int x =0;x<width;x++){
-    List<T> row = new ArrayList<>(height);
-    for(int y = 0;y<height;y++){
-      row.add(initializer.initialValueAt(new Coordinate(x,y)));
-    }
-    matrix.add(row);
-   }
+    this.matrix = new ArrayList<>(height);
+    this.initializeWith(initializer);  
   }
 
+
+
   public ListMatrix(int width, int height, T constant) {
-    this(width, height, coord->constant);
+    this(width, height, new ConstantMatrixInitializer<>(constant));
+  }
+
+  public  void initializeWith(MatrixInitializer<T> initializer) {
+    for (int y =0; y<height ;y++){
+      List<T> row =new ArrayList<>(width);
+      for(int x=0; x<width; x++){
+        row.add(initializer.initialValueAt((new Coordinate(x, y))));
+      }
+      matrix.add(row);
+    }
+    
   }
 
   public int width() {
@@ -51,20 +57,24 @@ public class ListMatrix<T> implements Matrix<T> {
 
   @Override
   public T get(int x, int y) {
-    checkBounds(x,y);
+    if(x<0 || x>= width || y<0 ||y>=height ){
+      throw new IndexOutOfBoundsException("Invalid coordinate: ("+ x+","+y+")");
+    }
     return matrix.get(y).get(x);
   }
 
 
   @Override
   public void set(int x, int y, T newValue) {
-    checkBounds(x,y);
-    matrix.get(y).set(x,newValue);
+    if (x<0 || x>= width ||y<0 || y>= height){
+      throw new IndexOutOfBoundsException("Invalid coordinate: ("+ x + ","+y+")");
     }
-
-    private void checkBounds(int x, int y){
-      if(x<0|| x>=width ||y<0||y>= height){
-        throw new IndexOutOfBoundsException("Indicces out of bounds;("+x+","+")");
+    matrix.get(y).set(x, newValue);
       }
-    }
-}
+
+
+    
+  }
+
+   
+
diff --git a/src/main/java/model/automata/GameOfLifeAutomaton.java b/src/main/java/model/automata/GameOfLifeAutomaton.java
index 7159813..a608e0c 100644
--- a/src/main/java/model/automata/GameOfLifeAutomaton.java
+++ b/src/main/java/model/automata/GameOfLifeAutomaton.java
@@ -5,32 +5,30 @@ import model.CellularAutomaton;
 import java.util.Random;
 
 public class GameOfLifeAutomaton implements CellularAutomaton<GameOfLifeState> {
-
+    public int columns;
+    public int rows;
     public GameOfLifeAutomaton(int numberOfColumns, int numberOfRows) {
-        //TODO: à compléter
+        this.columns=numberOfColumns;
+        this.rows= numberOfRows;
     }
 
     @Override
     public int numberOfColumns() {
-        //TODO: à compléter
-        return 0;
+        return columns;
     }
 
     @Override
     public int numberOfRows() {
-        //TODO: à compléter
-        return 0;
+        return rows;
     }
 
     @Override
     public GameOfLifeState defaultState() {
-        //TODO: à compléter
-        return null;
+        return GameOfLifeState.DEAD;
     }
 
     @Override
     public GameOfLifeState randomState(Random generator) {
-        //TODO: à compléter
-        return null;
+        return generator.nextBoolean()?GameOfLifeState.ALIVE: GameOfLifeState.DEAD;
     }
 }
diff --git a/src/main/java/model/automata/GameOfLifeState.java b/src/main/java/model/automata/GameOfLifeState.java
index 12ee370..4c4f772 100644
--- a/src/main/java/model/automata/GameOfLifeState.java
+++ b/src/main/java/model/automata/GameOfLifeState.java
@@ -14,20 +14,24 @@ public enum GameOfLifeState implements State<GameOfLifeState> {
 
     @Override
     public Color getColor() {
-        //TODO: à compléter
-        return Color.BLACK;
+       return this == ALIVE?
+        Color.RED:Color.WHITE;
     }
 
     @Override
     public GameOfLifeState next() {
-        //TODO: à compléter
-        return null;
+        return this==ALIVE?
+        DEAD:ALIVE;
     }
 
     @Override
     public GameOfLifeState update(List<GameOfLifeState> neighbours) {
-        //TODO: à compléter
-        return null;
-    }
+        long aliveNeighbors =neighbours.stream().filter(state -> state ==ALIVE).count();
+        if (this ==ALIVE){
+            return (aliveNeighbors ==2 || aliveNeighbors ==3)? ALIVE :DEAD;
+        }else{
+            return (aliveNeighbors==3)? ALIVE:DEAD;
+        }
+        }
 
 }
-- 
GitLab