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

  }

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

    }

    val number: Double
      field = number
      get

  }

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

    }

    val e1: Expr
      field = e1
      get

    val e2: Expr
      field = e2
      get

  }

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

    }

  }

}
