
% Kotlin
\lstdefinelanguage{Kotlin}{
  comment=[l]{//},
  commentstyle={\color{gray}\ttfamily},
  emph={filter, first, firstOrNull, forEach, lazy, map, mapNotNull, println},
  emphstyle={\color{OrangeRed}},
  identifierstyle=\color{black},
  keywords={!in, !is, abstract, actual, annotation, as, as?, break, by, 
		catch, class, companion, const, constructor, continue, crossinline, 
		data, delegate, do, dynamic, else, enum, expect, external, false, 
		field, file, final, finally, for, fun, get, if, import, in, infix, 
		init, inline, inner, interface, internal, is, lateinit, noinline, 
		null, object, open, operator, out, override, package, param, private, 
		property, protected, public, receiveris, reified, return, return@, 
		sealed, set, setparam, super, suspend, tailrec, this, throw, true, 
		try, typealias, typeof, val, var, vararg, when, where, while},
  keywordstyle={\color{NavyBlue}\bfseries},
  morecomment=[s]{/*}{*/},
  morestring=[b]",
  morestring=[s]{"""*}{*"""},
  ndkeywords={@Deprecated, @JvmField, @JvmName, @JvmOverloads, @JvmStatic, 
		@JvmSynthetic, Array, Byte, Double, Float, Int, Integer, Iterable, 
		Long, Runnable, Short, String, Any, Unit, Nothing},
  ndkeywordstyle={\color{BurntOrange}\bfseries},
  sensitive=true,
  stringstyle={\color{ForestGreen}\ttfamily},
}