title: How do you deserialize immutable collection using Kryo?
body: <p>How do you deserialize immutable collection using <strong><a href="https://github.com/romix/scala-kryo-serialization">Kryo</a></strong> ? Do I need to register something in addition to what I've done ?</p>
  
  <p>Here is my sample code</p>
  
  <pre><code>import com.esotericsoftware.kryo.Kryo
  import com.esotericsoftware.kryo.io.Input
  import com.esotericsoftware.kryo.io.Output
  import com.romix.scala.serialization.kryo._
  
  val kryo = new Kryo
  
  // Serialization of Scala maps like Trees, etc
  kryo.addDefaultSerializer(classOf[scala.collection.Map[_,_]], classOf[ScalaMapSerializer])
  kryo.addDefaultSerializer(classOf[scala.collection.generic.MapFactory[scala.collection.Map]], classOf[ScalaMapSerializer])
  
  // Serialization of Scala sets
  kryo.addDefaultSerializer(classOf[scala.collection.Set[_]], classOf[ScalaSetSerializer])
  kryo.addDefaultSerializer(classOf[scala.collection.generic.SetFactory[scala.collection.Set]], classOf[ScalaSetSerializer])
  
  // Serialization of all Traversable Scala collections like Lists, Vectors, etc
  kryo.addDefaultSerializer(classOf[scala.collection.Traversable[_]], classOf[ScalaCollectionSerializer])
  
  val filename = "c:\\aaa.bin"
  val ofile = new FileOutputStream(filename)
  val output2 = new BufferedOutputStream(ofile)
  val output = new Output(output2)
  kryo.writeClassAndObject(output, List("Test1", "Test2"))
  output.close()
  
  val ifile = new FileInputStream(filename)
  val input = new Input(new BufferedInputStream(ifile))
  val deserialized = kryo.readClassAndObject(input)
  input.close()
  </code></pre>
  
  <p>It throws exception</p>
  
  <pre><code>Exception in thread "main" com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): scala.collection.immutable.$colon$colon
  </code></pre>