diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock
new file mode 100644
index 0000000000000000000000000000000000000000..b46f83a01ab908bf6e3267e858d3035786495f80
Binary files /dev/null and b/.gradle/8.8/checksums/checksums.lock differ
diff --git a/.gradle/8.8/checksums/md5-checksums.bin b/.gradle/8.8/checksums/md5-checksums.bin
new file mode 100644
index 0000000000000000000000000000000000000000..635ccaeef63a065a0c4c74a249ab3129af03d716
Binary files /dev/null and b/.gradle/8.8/checksums/md5-checksums.bin differ
diff --git a/.gradle/8.8/checksums/sha1-checksums.bin b/.gradle/8.8/checksums/sha1-checksums.bin
new file mode 100644
index 0000000000000000000000000000000000000000..dd8d8203bf8471e8718758afb634924d1573be59
Binary files /dev/null and b/.gradle/8.8/checksums/sha1-checksums.bin differ
diff --git a/.gradle/8.8/dependencies-accessors/gc.properties b/.gradle/8.8/dependencies-accessors/gc.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin
new file mode 100644
index 0000000000000000000000000000000000000000..9b3bc4078d0c53cf8591fd95262199210d726f98
Binary files /dev/null and b/.gradle/8.8/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock
new file mode 100644
index 0000000000000000000000000000000000000000..1e10035efce32487e7d2224de91f27baf269a935
Binary files /dev/null and b/.gradle/8.8/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.8/fileChanges/last-build.bin b/.gradle/8.8/fileChanges/last-build.bin
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and b/.gradle/8.8/fileChanges/last-build.bin differ
diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin
new file mode 100644
index 0000000000000000000000000000000000000000..5e0a42aad52bf37257340b61cc8ca94ff5fd1d4e
Binary files /dev/null and b/.gradle/8.8/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock
new file mode 100644
index 0000000000000000000000000000000000000000..29a975946f2767eea26c71f25f4f9c9bdb3534af
Binary files /dev/null and b/.gradle/8.8/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0ee0cb6068e0293342427cf10a3592f9077117f0
Binary files /dev/null and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/8.8/gc.properties b/.gradle/8.8/gc.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000000000000000000000000000000000000..2cafc576bb23ac2fa2f6ca5f5d8ac990ce3dff22
Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000000000000000000000000000000000000..0284fcbd769ace8cdae3f571f52dd261ae8c67ba
--- /dev/null
+++ b/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Tue Nov 19 15:56:21 CET 2024
+gradle.version=8.8
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0da55b2484637cba2ea221aafd6fee75bd1e268e
Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
new file mode 100644
index 0000000000000000000000000000000000000000..eb9b498475051b36815142a749daa27cc7921234
Binary files /dev/null and b/.gradle/file-system.probe differ
diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000000000000000000000000000000000000..4b585cba8eacea7a3febcbca0182bf8702c21896
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+game-of-life
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6030a3defdda82edae730881df21bc0889d9c1eb
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <bytecodeTargetLevel target="22" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fdc392fe877c32ab51d532fa67f65ff2e75e9061
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="MavenRepo" />
+      <option name="name" value="MavenRepo" />
+      <option name="url" value="https://repo.maven.apache.org/maven2/" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0dcb80b40b6d1915a6dbbc60509d32007183bfe4
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_22" project-jdk-name="openjdk-22" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/build/classes/java/main/SimulatorApplication.class b/build/classes/java/main/SimulatorApplication.class
new file mode 100644
index 0000000000000000000000000000000000000000..be7654f5f6a9b8f8b75a2d9846a4ed53e1db8d31
Binary files /dev/null and b/build/classes/java/main/SimulatorApplication.class differ
diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
new file mode 100644
index 0000000000000000000000000000000000000000..67fb58075167a4f416dacac6d461436aaa8bcd26
Binary files /dev/null and b/build/classes/java/main/controller/Controller.class differ
diff --git a/build/classes/java/main/controller/PersistentToggleGroup.class b/build/classes/java/main/controller/PersistentToggleGroup.class
new file mode 100644
index 0000000000000000000000000000000000000000..314954a9fd4ab6d48da5fec7067063879e670d62
Binary files /dev/null and b/build/classes/java/main/controller/PersistentToggleGroup.class differ
diff --git a/build/classes/java/main/controller/Simulation.class b/build/classes/java/main/controller/Simulation.class
new file mode 100644
index 0000000000000000000000000000000000000000..510e310944f301590d5c090e5e810f1190f7e8bd
Binary files /dev/null and b/build/classes/java/main/controller/Simulation.class differ
diff --git a/build/classes/java/main/matrix/ConstantMatrixInitializer.class b/build/classes/java/main/matrix/ConstantMatrixInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..7b1bad962da3565ecdfdcdd189b3c736644d9140
Binary files /dev/null and b/build/classes/java/main/matrix/ConstantMatrixInitializer.class differ
diff --git a/build/classes/java/main/matrix/Coordinate.class b/build/classes/java/main/matrix/Coordinate.class
new file mode 100644
index 0000000000000000000000000000000000000000..5f0aa5703951c24f3681b9f4dbcb6871d397298a
Binary files /dev/null and b/build/classes/java/main/matrix/Coordinate.class differ
diff --git a/build/classes/java/main/matrix/CoordinateIterator.class b/build/classes/java/main/matrix/CoordinateIterator.class
new file mode 100644
index 0000000000000000000000000000000000000000..44aee510a8e26eadc72354a8f004144efbabe772
Binary files /dev/null and b/build/classes/java/main/matrix/CoordinateIterator.class differ
diff --git a/build/classes/java/main/matrix/ListMatrix.class b/build/classes/java/main/matrix/ListMatrix.class
new file mode 100644
index 0000000000000000000000000000000000000000..7ee826551990188fb0835ab104f5c6e6c65acbd8
Binary files /dev/null and b/build/classes/java/main/matrix/ListMatrix.class differ
diff --git a/build/classes/java/main/matrix/Matrix.class b/build/classes/java/main/matrix/Matrix.class
new file mode 100644
index 0000000000000000000000000000000000000000..1249a488ec4ddea73c71356721396fdefea35e64
Binary files /dev/null and b/build/classes/java/main/matrix/Matrix.class differ
diff --git a/build/classes/java/main/matrix/MatrixInitializer.class b/build/classes/java/main/matrix/MatrixInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..1e20e643887a91dd057a1bd204a890eee963163a
Binary files /dev/null and b/build/classes/java/main/matrix/MatrixInitializer.class differ
diff --git a/build/classes/java/main/matrix/MatrixIterator.class b/build/classes/java/main/matrix/MatrixIterator.class
new file mode 100644
index 0000000000000000000000000000000000000000..fc741ffe513b6994250709e570eeb08ef6480fa9
Binary files /dev/null and b/build/classes/java/main/matrix/MatrixIterator.class differ
diff --git a/build/classes/java/main/matrix/SubMatrixInitializer.class b/build/classes/java/main/matrix/SubMatrixInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..739789b735a2f022f921f3f54339c4643539084c
Binary files /dev/null and b/build/classes/java/main/matrix/SubMatrixInitializer.class differ
diff --git a/build/classes/java/main/model/Cell.class b/build/classes/java/main/model/Cell.class
new file mode 100644
index 0000000000000000000000000000000000000000..52248cc3dcef1b9d29537ccb6b4891d406b7c596
Binary files /dev/null and b/build/classes/java/main/model/Cell.class differ
diff --git a/build/classes/java/main/model/CellularAutomaton.class b/build/classes/java/main/model/CellularAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..41b2a3315b622eed2449bf630f044656ac4495f2
Binary files /dev/null and b/build/classes/java/main/model/CellularAutomaton.class differ
diff --git a/build/classes/java/main/model/CellularAutomatonSimulation.class b/build/classes/java/main/model/CellularAutomatonSimulation.class
new file mode 100644
index 0000000000000000000000000000000000000000..567d57479920f357e48fbf706baa0d786eb6d54c
Binary files /dev/null and b/build/classes/java/main/model/CellularAutomatonSimulation.class differ
diff --git a/build/classes/java/main/model/ConstantCellInitializer.class b/build/classes/java/main/model/ConstantCellInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..ec55742e946b16cf50ef5a11937f55755134e048
Binary files /dev/null and b/build/classes/java/main/model/ConstantCellInitializer.class differ
diff --git a/build/classes/java/main/model/Lens.class b/build/classes/java/main/model/Lens.class
new file mode 100644
index 0000000000000000000000000000000000000000..17951f65fef571050f5a1eb8e8195c2317a5af66
Binary files /dev/null and b/build/classes/java/main/model/Lens.class differ
diff --git a/build/classes/java/main/model/NextGenerationInitializer.class b/build/classes/java/main/model/NextGenerationInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..4f4fcea204b80f956aede3b129623b5a6247d9b8
Binary files /dev/null and b/build/classes/java/main/model/NextGenerationInitializer.class differ
diff --git a/build/classes/java/main/model/OnChangeListener.class b/build/classes/java/main/model/OnChangeListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..911bd1b42ef50503aa7575e78099d80a52850f4d
Binary files /dev/null and b/build/classes/java/main/model/OnChangeListener.class differ
diff --git a/build/classes/java/main/model/State.class b/build/classes/java/main/model/State.class
new file mode 100644
index 0000000000000000000000000000000000000000..622140212dccd9896917c67f45fc54d9c464c0f6
Binary files /dev/null and b/build/classes/java/main/model/State.class differ
diff --git a/build/classes/java/main/model/automata/BiColorGameOfLifeAutomaton.class b/build/classes/java/main/model/automata/BiColorGameOfLifeAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..b111f8eac55b36b4303368595be3529e4f1b14d3
Binary files /dev/null and b/build/classes/java/main/model/automata/BiColorGameOfLifeAutomaton.class differ
diff --git a/build/classes/java/main/model/automata/BiColorGameOfLifeState$StateType.class b/build/classes/java/main/model/automata/BiColorGameOfLifeState$StateType.class
new file mode 100644
index 0000000000000000000000000000000000000000..87168efad86a83316ce8aebefcf8d0e18d12b528
Binary files /dev/null and b/build/classes/java/main/model/automata/BiColorGameOfLifeState$StateType.class differ
diff --git a/build/classes/java/main/model/automata/BiColorGameOfLifeState.class b/build/classes/java/main/model/automata/BiColorGameOfLifeState.class
new file mode 100644
index 0000000000000000000000000000000000000000..deccad94be2f23feccacec31ef8be7d551c509fc
Binary files /dev/null and b/build/classes/java/main/model/automata/BiColorGameOfLifeState.class differ
diff --git a/build/classes/java/main/model/automata/BrianBrainAutomaton.class b/build/classes/java/main/model/automata/BrianBrainAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..0e49dc50401e419d81965006d5ae5af25e2c03ba
Binary files /dev/null and b/build/classes/java/main/model/automata/BrianBrainAutomaton.class differ
diff --git a/build/classes/java/main/model/automata/BrianBrainState$StateType.class b/build/classes/java/main/model/automata/BrianBrainState$StateType.class
new file mode 100644
index 0000000000000000000000000000000000000000..b90471f3c567d658029f3fc5244306434ccf252b
Binary files /dev/null and b/build/classes/java/main/model/automata/BrianBrainState$StateType.class differ
diff --git a/build/classes/java/main/model/automata/BrianBrainState.class b/build/classes/java/main/model/automata/BrianBrainState.class
new file mode 100644
index 0000000000000000000000000000000000000000..203c369cfd1ed4ef9f9ebb0011210e865d14c136
Binary files /dev/null and b/build/classes/java/main/model/automata/BrianBrainState.class differ
diff --git a/build/classes/java/main/model/automata/GameOfLifeAutomaton.class b/build/classes/java/main/model/automata/GameOfLifeAutomaton.class
new file mode 100644
index 0000000000000000000000000000000000000000..3c96b2f03c8035f191b87dc6b5a5e3606a912d7b
Binary files /dev/null and b/build/classes/java/main/model/automata/GameOfLifeAutomaton.class differ
diff --git a/build/classes/java/main/model/automata/GameOfLifeState.class b/build/classes/java/main/model/automata/GameOfLifeState.class
new file mode 100644
index 0000000000000000000000000000000000000000..5deca4a8a834ea425e2628858e28c681bdaff916
Binary files /dev/null and b/build/classes/java/main/model/automata/GameOfLifeState.class differ
diff --git a/build/classes/java/main/view/FillingMouseListener.class b/build/classes/java/main/view/FillingMouseListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..ffaeff3f2a438e650ba84b4f68dc00cca01175db
Binary files /dev/null and b/build/classes/java/main/view/FillingMouseListener.class differ
diff --git a/build/classes/java/main/view/MatrixPane.class b/build/classes/java/main/view/MatrixPane.class
new file mode 100644
index 0000000000000000000000000000000000000000..e71edf9e42a89e51d60f855bc014712a5d5c69c9
Binary files /dev/null and b/build/classes/java/main/view/MatrixPane.class differ
diff --git a/build/classes/java/main/view/MouseListener.class b/build/classes/java/main/view/MouseListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..7d2f406a89b8b83f99b4c05fd3ad312a15e4c244
Binary files /dev/null and b/build/classes/java/main/view/MouseListener.class differ
diff --git a/build/classes/java/main/view/WaitingMouseListener.class b/build/classes/java/main/view/WaitingMouseListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..64083a4e18615676f6bf8aa36330d3413b35f0f5
Binary files /dev/null and b/build/classes/java/main/view/WaitingMouseListener.class differ
diff --git a/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class b/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..68d6c495d3cca668e33baf2e77b714a356ce191d
Binary files /dev/null and b/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class differ
diff --git a/build/classes/java/test/matrix/CoordinateIteratorTest.class b/build/classes/java/test/matrix/CoordinateIteratorTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..726626cbd0c42359664ea1c0e92022b195dbd581
Binary files /dev/null and b/build/classes/java/test/matrix/CoordinateIteratorTest.class differ
diff --git a/build/classes/java/test/matrix/CoordinateTest.class b/build/classes/java/test/matrix/CoordinateTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..63b163c4471cd67bc637bc21add03bd20f45e960
Binary files /dev/null and b/build/classes/java/test/matrix/CoordinateTest.class differ
diff --git a/build/classes/java/test/matrix/ListMatrixTest.class b/build/classes/java/test/matrix/ListMatrixTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..e48a67570e2d180438a6eef961ae2d081b5b1af1
Binary files /dev/null and b/build/classes/java/test/matrix/ListMatrixTest.class differ
diff --git a/build/classes/java/test/model/CellTest$Change.class b/build/classes/java/test/model/CellTest$Change.class
new file mode 100644
index 0000000000000000000000000000000000000000..157a1cd689f6cfe25f2bf1c2c11a16661f88fb3c
Binary files /dev/null and b/build/classes/java/test/model/CellTest$Change.class differ
diff --git a/build/classes/java/test/model/CellTest$MockListener.class b/build/classes/java/test/model/CellTest$MockListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..f1ecf9743a46724e3c8ce3dcad35eb28d23f3ede
Binary files /dev/null and b/build/classes/java/test/model/CellTest$MockListener.class differ
diff --git a/build/classes/java/test/model/CellTest.class b/build/classes/java/test/model/CellTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..96ac0850eefc36f40672a3da70e0da97a743172a
Binary files /dev/null and b/build/classes/java/test/model/CellTest.class differ
diff --git a/build/classes/java/test/model/CellularAutomatonSimulationTest.class b/build/classes/java/test/model/CellularAutomatonSimulationTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..ecd256b8cae328dc724826983104dbdb5bd80c92
Binary files /dev/null and b/build/classes/java/test/model/CellularAutomatonSimulationTest.class differ
diff --git a/build/classes/java/test/model/NextGenerationInitializerTest.class b/build/classes/java/test/model/NextGenerationInitializerTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..0b3ac025d7de6c0ca6a9f5ed08d5da72bae96239
Binary files /dev/null and b/build/classes/java/test/model/NextGenerationInitializerTest.class differ
diff --git a/build/classes/java/test/model/StateTest.class b/build/classes/java/test/model/StateTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..9ab291094ca0655876b0068dc5173d6e71109730
Binary files /dev/null and b/build/classes/java/test/model/StateTest.class differ
diff --git a/build/classes/java/test/model/automata/GameOfLifeStateTest.class b/build/classes/java/test/model/automata/GameOfLifeStateTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..b6481aff89305022764787fb753baaebf5663fe9
Binary files /dev/null and b/build/classes/java/test/model/automata/GameOfLifeStateTest.class differ
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 0000000000000000000000000000000000000000..8977fcd01c32655259eda32721566b63035426db
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
@@ -0,0 +1,101 @@
+<!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">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.005s</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">testMatrixInitializationWithConstantValue()</td>
+<td class="success">0.005s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixInitializationWithConstantValue2()</td>
+<td class="success">0s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..22565e92ee2208cae9295ea379230ca1621eca9d
--- /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.006s</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.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testIteratorWithTwoDimensions()</td>
+<td class="success">0.005s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testIteratorWithZeroDimensions()</td>
+<td class="success">0s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..1dc511c910d551bd82e6fcb39c59ed16c5fad8f4
--- /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.004s</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">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testBelow()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCoordinateCreation()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testDiagonalNeighbours()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testLeft()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testOrthodiagonalNeighbours()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testOrthogonalNeighbours()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testRight()</td>
+<td class="success">0s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..27f94eb2eb39c162d78b34913ae4bc9c96ca94c2
--- /dev/null
+++ b/build/reports/tests/test/classes/matrix.ListMatrixTest.html
@@ -0,0 +1,126 @@
+<!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">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.001s</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">testMatrixCoordinates()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixCreationWithInitialValue()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixCreationWithInitializer()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixIterator()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixSetAndGet()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testMatrixWidthAndHeight()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testSubMatrix()</td>
+<td class="success">0s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..301fbcce3af58166c7d1ebd3c62be940b46cc0cc
--- /dev/null
+++ b/build/reports/tests/test/classes/model.CellTest.html
@@ -0,0 +1,101 @@
+<!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">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.001s</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">testCellValueChangeWithListener()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCellWithoutListener()</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..28fa398159d7c6b9682d6a99d8d770305c58cbac
--- /dev/null
+++ b/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
@@ -0,0 +1,146 @@
+<!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">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">testAt()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testClear()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testColor()</td>
+<td class="success">0.005s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCopy()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNext()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNumberOfColumns()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNumberOfRows()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testReset()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testSetChangeListener()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testSetGenerationNumberChangeListener()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testUpdateToNextGeneration()</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..fb7f13221e06b39300ebbca867e376a38d9cf9a6
--- /dev/null
+++ b/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
@@ -0,0 +1,116 @@
+<!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">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.001s</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">initialValueAt()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testModuloNegative()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testModuloPositive()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testWrapCoordinateInsideGrid()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testWrapCoordinateOutsideGrid()</td>
+<td class="success">0s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..9432f2c8dd2b026e06e1f947b4c3e5c1d8216192
--- /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">0s</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">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithInteger()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithNoMatchingElements()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testCountMethodWithString()</td>
+<td class="success">0s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..98d5cd95960cd6f541f7d012c8f7d9bdb73228b8
--- /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.001s</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">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testDeadUpdate()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testGetColor()</td>
+<td class="success">0s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testNext()</td>
+<td class="success">0s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..4afa73e3ddcf5e21bdd0a22ac575dc99b2e3d826
--- /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 0000000000000000000000000000000000000000..3dc4913e7a077a1f1f3810b1f20cc9275fb236bf
--- /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 0000000000000000000000000000000000000000..72a92befcce730a41ecad7946925e5d24d2fc859
--- /dev/null
+++ b/build/reports/tests/test/index.html
@@ -0,0 +1,233 @@
+<!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">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.028s</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">Packages</a>
+</li>
+<li>
+<a href="#tab1">Classes</a>
+</li>
+</ul>
+<div id="tab0" 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="success">
+<a href="packages/matrix.html">matrix</a>
+</td>
+<td>20</td>
+<td>0</td>
+<td>0</td>
+<td>0.016s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="packages/model.html">model</a>
+</td>
+<td>22</td>
+<td>0</td>
+<td>0</td>
+<td>0.011s</td>
+<td class="success">100%</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.001s</td>
+<td class="success">100%</td>
+</tr>
+</tbody>
+</table>
+</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>
+<tbody>
+<tr>
+<td class="success">
+<a href="classes/matrix.ConstantMatrixInitializerTest.html">matrix.ConstantMatrixInitializerTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.005s</td>
+<td class="success">100%</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.006s</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.004s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/matrix.ListMatrixTest.html">matrix.ListMatrixTest</a>
+</td>
+<td>7</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.CellTest.html">model.CellTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="classes/model.CellularAutomatonSimulationTest.html">model.CellularAutomatonSimulationTest</a>
+</td>
+<td>11</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.NextGenerationInitializerTest.html">model.NextGenerationInitializerTest</a>
+</td>
+<td>5</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</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>0s</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.001s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..83bab4a19f36a6f460c6747ad6b7252f63a1fad3
--- /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 0000000000000000000000000000000000000000..f85ff8a0f9366079c1afbfae7ca078194e6e0532
--- /dev/null
+++ b/build/reports/tests/test/packages/matrix.html
@@ -0,0 +1,133 @@
+<!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">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.016s</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/matrix.ConstantMatrixInitializerTest.html">ConstantMatrixInitializerTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.005s</td>
+<td class="success">100%</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.006s</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.004s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/matrix.ListMatrixTest.html">ListMatrixTest</a>
+</td>
+<td>7</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..5d6594cacc359b593144469f7557301967b29596
--- /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.001s</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.001s</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 Jan 26, 2025, 1:42:20 AM</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 0000000000000000000000000000000000000000..87748821c76f9aaedbf3b16c24ad73adb80de138
--- /dev/null
+++ b/build/reports/tests/test/packages/model.html
@@ -0,0 +1,133 @@
+<!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">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.CellTest.html">CellTest</a>
+</td>
+<td>2</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</td>
+</tr>
+<tr>
+<td class="success">
+<a href="../classes/model.CellularAutomatonSimulationTest.html">CellularAutomatonSimulationTest</a>
+</td>
+<td>11</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.NextGenerationInitializerTest.html">NextGenerationInitializerTest</a>
+</td>
+<td>5</td>
+<td>0</td>
+<td>0</td>
+<td>0.001s</td>
+<td class="success">100%</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>0s</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 Jan 26, 2025, 1:42:20 AM</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/resources/main/view/style.css b/build/resources/main/view/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..f518257cc5e91d51950b30257e7d3b56425d79c6
--- /dev/null
+++ b/build/resources/main/view/style.css
@@ -0,0 +1,37 @@
+.root {
+  -fx-focus-color: transparent;
+  -fx-font-size: 13px;
+}
+
+.background {
+  -fx-background-color: #1d1d1d;
+}
+
+.separator .line {
+  -fx-border-color: #fff;
+}
+
+.button {
+  -fx-background-color: derive(#1d1d1d, 20%);
+  -fx-text-fill: #fff;
+}
+
+.button:hover,
+.button:selected {
+  -fx-background-color: #fff;
+  -fx-background-insets: 0 0 -1px 0, 0, 1px, 2px;
+  -fx-background-radius: 5px, 5px, 4px, 3px;
+  -fx-text-fill: derive(#1d1d1d, 20%);
+}
+
+.label {
+  -fx-text-fill: #fff;
+}
+
+.cell-pane {
+  -fx-background-color: derive(#1d1d1d, 20%);
+}
+
+.alive {
+  -fx-background-color: #fff;
+}
diff --git a/build/resources/main/view/view.fxml b/build/resources/main/view/view.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..c1851501658a0db5baa2b79671c994e5ab501351
--- /dev/null
+++ b/build/resources/main/view/view.fxml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.layout.*?>
+<?import view.MatrixPane?>
+<AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
+            styleClass="background" stylesheets="@style.css"
+            xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1"
+            fx:controller="controller.Controller">
+  <padding>
+    <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
+  </padding>
+  <children>
+    <HBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0"
+          prefWidth="980.0" spacing="10.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
+          AnchorPane.topAnchor="0.0">
+      <children>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+        <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                      mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0"
+                      prefWidth="62.0" styleClass="button" text="Play"/>
+        <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                      mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0"
+                      prefWidth="71.0" styleClass="button" text="Pause"/>
+        <Button fx:id="resetButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                mnemonicParsing="false" onAction="#resetButtonAction" prefHeight="24.0" prefWidth="70.0"
+                text="Reset"/>
+        <Button fx:id="clearButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                mnemonicParsing="false" onAction="#clearButtonAction" prefHeight="24.0" prefWidth="70.0"
+                text="Clear"/>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+        <Label maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="103.0"
+               text="Generation"/>
+        <Label fx:id="generationNumberLabel" alignment="CENTER_RIGHT" contentDisplay="TEXT_ONLY"
+               maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="99.0"/>
+        <Separator maxHeight="-Infinity" maxWidth="-Infinity" orientation="VERTICAL"
+                   prefHeight="24.0" prefWidth="6.0"/>
+      </children>
+    </HBox>
+    <MatrixPane fx:id="matrixPane" alignment="CENTER" hgap="1.0"
+                maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="600.0" prefWidth="980.0" vgap="1.0"
+                AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
+                AnchorPane.topAnchor="35.0"/>
+  </children>
+</AnchorPane>
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 0000000000000000000000000000000000000000..7ad82e82c2e15ef93892c4ee6f5636566538ff0a
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.ConstantMatrixInitializerTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.006">
+  <properties/>
+  <testcase name="testMatrixInitializationWithConstantValue()" classname="matrix.ConstantMatrixInitializerTest" time="0.005"/>
+  <testcase name="testMatrixInitializationWithConstantValue2()" classname="matrix.ConstantMatrixInitializerTest" time="0.0"/>
+  <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 0000000000000000000000000000000000000000..9301f513c9638e71347a1745a6d0dcae6675f176
--- /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="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.007">
+  <properties/>
+  <testcase name="testIteratorWithZeroDimensions()" classname="matrix.CoordinateIteratorTest" time="0.0"/>
+  <testcase name="testIteratorWithTwoDimensions()" classname="matrix.CoordinateIteratorTest" time="0.005"/>
+  <testcase name="testIteratorWithOneDimension()" classname="matrix.CoordinateIteratorTest" time="0.001"/>
+  <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 0000000000000000000000000000000000000000..80cf2f5b794f7a9542c05b6dc13b38e3dc9c9ca5
--- /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="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
+  <properties/>
+  <testcase name="testAbove()" classname="matrix.CoordinateTest" time="0.0"/>
+  <testcase name="testBelow()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testRight()" classname="matrix.CoordinateTest" time="0.0"/>
+  <testcase name="testLeft()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testDiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testCoordinateCreation()" classname="matrix.CoordinateTest" time="0.0"/>
+  <testcase name="testOrthogonalNeighbours()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testOrthodiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.0"/>
+  <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 0000000000000000000000000000000000000000..f7c7b31a12cfb2987bf7cbbf16feeaf9658ca473
--- /dev/null
+++ b/build/test-results/test/TEST-matrix.ListMatrixTest.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="matrix.ListMatrixTest" tests="7" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
+  <properties/>
+  <testcase name="testMatrixWidthAndHeight()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixCoordinates()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixCreationWithInitialValue()" classname="matrix.ListMatrixTest" time="0.001"/>
+  <testcase name="testSubMatrix()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixIterator()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixCreationWithInitializer()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixSetAndGet()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <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 0000000000000000000000000000000000000000..85fc2231ae4123ad45a09a34781943570229c89d
--- /dev/null
+++ b/build/test-results/test/TEST-model.CellTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.CellTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+  <properties/>
+  <testcase name="testCellValueChangeWithListener()" classname="model.CellTest" time="0.0"/>
+  <testcase name="testCellWithoutListener()" classname="model.CellTest" time="0.001"/>
+  <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 0000000000000000000000000000000000000000..e00b5d7eabb979532f98ec3f6a9ca249ac9cdc8f
--- /dev/null
+++ b/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.CellularAutomatonSimulationTest" tests="11" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.012">
+  <properties/>
+  <testcase name="testNumberOfColumns()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testSetGenerationNumberChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
+  <testcase name="testClear()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testColor()" classname="model.CellularAutomatonSimulationTest" time="0.005"/>
+  <testcase name="testReset()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testCopy()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testNext()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testAt()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
+  <testcase name="testUpdateToNextGeneration()" classname="model.CellularAutomatonSimulationTest" time="0.002"/>
+  <testcase name="testSetChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testNumberOfRows()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <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 0000000000000000000000000000000000000000..94877102ba449b537279ed71f9ced62b3bd91836
--- /dev/null
+++ b/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.NextGenerationInitializerTest" tests="5" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.003">
+  <properties/>
+  <testcase name="testWrapCoordinateInsideGrid()" classname="model.NextGenerationInitializerTest" time="0.001"/>
+  <testcase name="testModuloPositive()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="testModuloNegative()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="testWrapCoordinateOutsideGrid()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="initialValueAt()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <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 0000000000000000000000000000000000000000..3a6a86f896888a0e722cf5f194e4854fb506c303
--- /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="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+  <properties/>
+  <testcase name="testCountMethodWithNoMatchingElements()" classname="model.StateTest" time="0.0"/>
+  <testcase name="testCountMethodWithInteger()" classname="model.StateTest" time="0.0"/>
+  <testcase name="testCountMethodWithEmptyList()" classname="model.StateTest" time="0.0"/>
+  <testcase name="testCountMethodWithString()" classname="model.StateTest" time="0.0"/>
+  <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 0000000000000000000000000000000000000000..28c0739a55d928a3fa291792e0f0071ca29abf96
--- /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="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+  <properties/>
+  <testcase name="testGetColor()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <testcase name="testNext()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <testcase name="testDeadUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.001"/>
+  <testcase name="testAliveUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
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
Binary files /dev/null and b/build/test-results/test/binary/output.bin.idx differ
diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
new file mode 100644
index 0000000000000000000000000000000000000000..fe8b6eee535fa6ba4678a7abf52b47de3b7fc8f7
Binary files /dev/null and b/build/test-results/test/binary/results.bin differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeAutomaton.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeAutomaton.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..b111f8eac55b36b4303368595be3529e4f1b14d3
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeAutomaton.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState$StateType.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState$StateType.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..53652e4207c5208cd52e04aca03ddfebf04234b1
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState$StateType.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState.class.uniqueId4
new file mode 100644
index 0000000000000000000000000000000000000000..fd91ad4a3b76f11a047659c5dbd5191f88d6e9fc
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/BiColorGameOfLifeState.class.uniqueId4 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainAutomaton.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainAutomaton.class.uniqueId3
new file mode 100644
index 0000000000000000000000000000000000000000..0e49dc50401e419d81965006d5ae5af25e2c03ba
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainAutomaton.class.uniqueId3 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState$StateType.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState$StateType.class.uniqueId5
new file mode 100644
index 0000000000000000000000000000000000000000..b4059f309db9a356bc2dc1a20bf3b4d9b0945a04
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState$StateType.class.uniqueId5 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState.class.uniqueId2
new file mode 100644
index 0000000000000000000000000000000000000000..358bff43508be0bc50e358ccca2074bd70ec97ac
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/BrianBrainState.class.uniqueId2 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
new file mode 100644
index 0000000000000000000000000000000000000000..835183c5140de13671a735e0b641eaa2cb4b83c4
Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
new file mode 100644
index 0000000000000000000000000000000000000000..16fbb7fb04fac14befb7a15c27e64a92a763ad04
Binary files /dev/null and b/build/tmp/compileTestJava/previous-compilation-data.bin differ