sealed class Expr {
  class Const : Expr {
    val number: Double
      field = number
      get

    constructor(number: Double) /* primary */ {
      super/*Expr*/()
      /* <init>() */

    }

  }

  class Sum : Expr {
    val e1: Expr
      field = e1
      get

    val e2: Expr
      field = e2
      get

    constructor(e1: Expr, e2: Expr) /* primary */ {
      super/*Expr*/()
      /* <init>() */

    }

  }

  object NotANumber : Expr {
    private constructor() /* primary */ {
      super/*Expr*/()
      /* <init>() */

    }

  }

  protected constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

