//Set as Immutable
def list1 = ["A", "B", "C"].asImmutable()
def list2 = ["D", "E", "F"].asImmutable()
//Supports Immutablity
try {list1 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
try {list2 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
//Desired result using "inject"
def result = list2.inject(list1){init, val -> [init] << val}.flatten()
assert result == ['A', 'B', 'C', 'D', 'E', 'F']
//Immutable Test
assert list1 == ["A", "B", "C"]
assert list2 == ["D", "E", "F"]
//Supports Immutablity after operation
try {list1 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
try {list2 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}