================================================================================
classes/class2a
================================================================================

class Person {
  name: String = "X"
  age: Int = 40
  friends: Set
  address: Address
}

class Address {
  street: String = "Howdy St"
}

pigeon = new Person {
  name = "Pigeon Who"
  age = 30
  friends = super.friends + List(
    new Person {
      name = "Emma"
    }
    // add another once we have sets with deterministic iteration order
  )
  address {
    street = "Pigeon St."
  }
}

--------------------------------------------------------------------------------

(module
  (clazz
    (identifier)
    (classBody
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier))))
        (slStringLiteral))
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier))))
        (intLiteral))
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier)))))
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier)))))))
  (clazz
    (identifier)
    (classBody
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier))))
        (slStringLiteral))))
  (classProperty
    (identifier)
    (newExpr
      (type
        (qualifiedIdentifier
          (identifier)))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))
        (objectProperty
          (identifier)
          (intLiteral))
        (objectProperty
          (identifier)
          (binaryExpr
            (propertyCallExpr
              (identifier))
            (methodCallExpr
              (identifier)
              (argumentList
                (newExpr
                  (type
                    (qualifiedIdentifier
                      (identifier)))
                  (objectBody
                    (objectProperty
                      (identifier)
                      (slStringLiteral))))
                (lineComment)))))
        (objectProperty
          (identifier)
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))))))))
