The main advantage of Lincheck is that it provides a simple and declarative way to write concurrent tests. Instead of describing how to perform the test, you specify what to test by declaring all the operations to examine along with the required correctness contract (linearizability is the default one) and restrictions (e.g. "single-consumer" for queues).
During the workshop, the work steps of the tool will be explained, and without diving deep into the internals of implementation, Maria will provide sample projects corresponding to various concurrent problems and guide you through solving them using Lincheck. Those projects will be in Kotlin, but as Kotlin is very concise and easy-to-follow there will be no problem to transfer this usage experience to any other JVM-based language (e.g. Java, Scala..).