diff --git a/kotlin-libraries/pom.xml b/kotlin-libraries/pom.xml
index 507e5820d4..e3f69b4ea9 100644
--- a/kotlin-libraries/pom.xml
+++ b/kotlin-libraries/pom.xml
@@ -19,6 +19,14 @@
exposed
https://dl.bintray.com/kotlin/exposed
+
+
+ false
+
+ kotlinx
+ bintray
+ https://dl.bintray.com/kotlin/kotlinx
+
@@ -112,9 +120,30 @@
3.3.0
pom
+
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+
+ com.google.guava
+ guava
+ 27.1-jre
+
+
+
+ org.jetbrains.kotlinx
+ kotlinx-collections-immutable
+ 0.1
+
+ 4.12
1.5.0
4.1.0
3.0.4
diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt
new file mode 100644
index 0000000000..971f2de4c2
--- /dev/null
+++ b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt
@@ -0,0 +1,27 @@
+package com.baeldung.kotlin.immutable
+
+import junit.framework.Assert.assertEquals
+import kotlinx.collections.immutable.ImmutableList
+import kotlinx.collections.immutable.immutableListOf
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.ExpectedException
+
+class KotlinxImmutablesUnitTest{
+
+
+ @Rule
+ @JvmField
+ var ee : ExpectedException = ExpectedException.none()
+
+ @Test
+ fun givenKICLList_whenAddTried_checkExceptionThrown(){
+
+ val list: ImmutableList = immutableListOf("I", "am", "immutable")
+
+ list.add("My new item")
+
+ assertEquals(listOf("I", "am", "immutable"), list)
+
+ }
+}
\ No newline at end of file
diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt
new file mode 100644
index 0000000000..62c4a4eb88
--- /dev/null
+++ b/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt
@@ -0,0 +1,73 @@
+package com.baeldung.kotlin.immutable
+
+import com.google.common.collect.ImmutableList
+import com.google.common.collect.ImmutableSet
+import junit.framework.Assert.assertEquals
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.ExpectedException
+
+class ReadOnlyUnitTest{
+
+ @Test
+ fun givenReadOnlyList_whenCastToMutableList_checkNewElementsAdded(){
+
+ val list: List = listOf("This", "Is", "Totally", "Immutable")
+
+ (list as MutableList)[2] = "Not"
+
+ assertEquals(listOf("This", "Is", "Not", "Immutable"), list)
+
+ }
+
+ @Rule
+ @JvmField
+ var ee : ExpectedException = ExpectedException.none()
+
+ @Test
+ fun givenImmutableList_whenAddTried_checkExceptionThrown(){
+
+ val list: List = ImmutableList.of("I", "am", "actually", "immutable")
+
+ ee.expect(UnsupportedOperationException::class.java)
+
+ (list as MutableList).add("Oops")
+
+ }
+
+ @Test
+ fun givenMutableList_whenCopiedAndAddTried_checkExceptionThrown(){
+
+ val mutableList : List = listOf("I", "Am", "Definitely", "Immutable")
+
+ (mutableList as MutableList)[2] = "100% Not"
+
+ assertEquals(listOf("I", "Am", "100% Not", "Immutable"), mutableList)
+
+ val list: List = ImmutableList.copyOf(mutableList)
+
+ ee.expect(UnsupportedOperationException::class.java)
+
+ (list as MutableList)[2] = "Really?"
+
+ }
+
+ @Test
+ fun givenImmutableSetBuilder_whenAddTried_checkExceptionThrown(){
+
+ val mutableList : List = listOf("Hello", "Baeldung")
+ val set: ImmutableSet = ImmutableSet.builder()
+ .add("I","am","immutable")
+ .addAll(mutableList)
+ .build()
+
+ assertEquals(setOf("Hello", "Baeldung", "I", "am", "immutable"), set)
+
+ ee.expect(UnsupportedOperationException::class.java)
+
+ (set as MutableSet).add("Oops")
+
+ }
+
+
+}
\ No newline at end of file