================================================================================
mappings/default
================================================================================

class Person {
  name: String
  age: Int
}

res1: Mapping<String, Person> = new {
  default {
    age = 42
  }
  ["pigeon"] {
    name = "Pigeon"
  }
  ["parrot"] {
    name = "Parrot"
    age = 50
  }
}

res2 = (res1) {
  default {
    age = 45
  }
}

res3: Mapping<String, Person> = new {
  default { key ->
    name = key
  }
  ["pigeon"] {
    age = 40
  }
  ["parrot"] {
    name = "PARROT"
    age = 50
  }
  ["susan"] {
    name = super.name + "!!!"
    age = 60
  }
}

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

(module
  (clazz
    (identifier)
    (classBody
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier)))))
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier)))))))
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (qualifiedIdentifier
          (identifier))
        (typeArgumentList
          (type
            (qualifiedIdentifier
              (identifier)))
          (type
            (qualifiedIdentifier
              (identifier))))))
    (newExpr
      (objectBody
        (objectProperty
          (identifier)
          (objectBody
            (objectProperty
              (identifier)
              (intLiteral))))
        (objectEntry
          (slStringLiteral)
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))))
        (objectEntry
          (slStringLiteral)
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))
            (objectProperty
              (identifier)
              (intLiteral)))))))
  (classProperty
    (identifier)
    (objectLiteral
      (parenthesizedExpr
        (variableExpr
          (identifier)))
      (objectBody
        (objectProperty
          (identifier)
          (objectBody
            (objectProperty
              (identifier)
              (intLiteral)))))))
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (qualifiedIdentifier
          (identifier))
        (typeArgumentList
          (type
            (qualifiedIdentifier
              (identifier)))
          (type
            (qualifiedIdentifier
              (identifier))))))
    (newExpr
      (objectBody
        (objectProperty
          (identifier)
          (objectBody
            (objectBodyParameters
              (typedIdentifier
                (identifier)))
            (objectProperty
              (identifier)
              (variableExpr
                (identifier)))))
        (objectEntry
          (slStringLiteral)
          (objectBody
            (objectProperty
              (identifier)
              (intLiteral))))
        (objectEntry
          (slStringLiteral)
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))
            (objectProperty
              (identifier)
              (intLiteral))))
        (objectEntry
          (slStringLiteral)
          (objectBody
            (objectProperty
              (identifier)
              (binaryExpr
                (propertyCallExpr
                  (identifier))
                (slStringLiteral)))
            (objectProperty
              (identifier)
              (intLiteral))))))))
