================================================================================
modules/extendModule1
================================================================================

extends "library.pkl"

class Teacher extends Person {
  subjects: List<String(!isEmpty)>
}

pigeon = (super.pigeon) {
  name = "PIGEON"
}

parrot: Teacher = new Teacher {
  name = "Parrot"
  subjects = List("Fire making", "Stone age")
}

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

(module
  (moduleHeader
    (extendsOrAmendsClause
      (stringConstant)))
  (clazz
    (identifier)
    (classExtendsClause
      (qualifiedIdentifier
        (identifier)))
    (classBody
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier))
            (typeArgumentList
              (type
                (type
                  (qualifiedIdentifier
                    (identifier)))
                (unaryExpr
                  (variableExpr
                    (identifier))))))))))
  (classProperty
    (identifier)
    (objectLiteral
      (parenthesizedExpr
        (propertyCallExpr
          (identifier)))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral)))))
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (qualifiedIdentifier
          (identifier))))
    (newExpr
      (type
        (qualifiedIdentifier
          (identifier)))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))
        (objectProperty
          (identifier)
          (methodCallExpr
            (identifier)
            (argumentList
              (slStringLiteral)
              (slStringLiteral))))))))
