object Test {
  final val bippy1 = 1
  final lazy val bippy2 = 2

  lazy val lv = scala.util.Random.nextInt()

  class X(final var x: Int)  {
    final var var1: Int = 0
    final private var var2: Int = 0
    final private[this] var var3: Int = 0

    final val val1: Int = 1
    final private val val2: Int = 1
    final private[this] val val3: Int = 1

    final lazy val lval1: Int = 2
    final private lazy val lval2: Int = 2
    final private[this] lazy val lval3: Int = 2
  }
  case class Y(final var x: Int, final private var y: Int, final val z1: Int, final private val z2: Int) { }

  def f = new X(0).x += 1
  def main(args: Array[String]) {
    f
    val s = new X(0)
    s.x += 1
    println(s.x)

    // under -Xcheckinit there's an additional $init$ field
    (classOf[X].getDeclaredFields map ("" + _)).sorted.filter(_ != "private volatile byte Test$X.bitmap$init$0") foreach println
    (classOf[Y].getDeclaredFields map ("" + _)).sorted foreach println
  }
}
