================================================================================
annotation/annotation1
================================================================================

/// doc comment
/// doc comment
@Ann
@Ann2 { x = "foo" }
@Ann3 {
  x = "foo"
  y = 1
}
module some.mod

/// doc comment
/// doc comment
@Ann
@Ann2 { x = "foo" }
@Ann3 {
  x = "foo"
  y = 1
}
class SomeClass {
  /// doc comment
  /// doc comment
  @Ann
  @Ann2 { x = "foo" }
  @Ann3 {
    x = "foo"
    y = 1
  }
  function someMethod() = "hi"

  /// doc comment
  /// doc comment
  @Ann
  @Ann2 { x = "foo" }
  @Ann3 {
    x = "foo"
    y = 1
  }
  someProperty: String = "hi"
}

/// doc comment
/// doc comment
@Ann
@Ann2 { x = "foo" }
@Ann3 {
  x = "foo"
  y = 1
}
function someMethod() = "hi"

/// doc comment
/// doc comment
@Ann
@Ann2 { x = "foo" }
@Ann3 {
  x = "foo"
  y = 1
}
someProperty: String = "hi"

class Ann extends Annotation

class Ann2 extends Annotation {
  x: String
}

class Ann3 extends Annotation {
  x: String
  y: Int
}

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

(module
  (lineComment)
  (lineComment)
  (moduleHeader
    (annotation
      (qualifiedIdentifier
        (identifier)))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))
        (objectProperty
          (identifier)
          (intLiteral))))
    (moduleClause
      (qualifiedIdentifier
        (identifier)
        (identifier))))
  (lineComment)
  (lineComment)
  (clazz
    (annotation
      (qualifiedIdentifier
        (identifier)))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))
        (objectProperty
          (identifier)
          (intLiteral))))
    (identifier)
    (classBody
      (lineComment)
      (lineComment)
      (classMethod
        (annotation
          (qualifiedIdentifier
            (identifier)))
        (annotation
          (qualifiedIdentifier
            (identifier))
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))))
        (annotation
          (qualifiedIdentifier
            (identifier))
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))
            (objectProperty
              (identifier)
              (intLiteral))))
        (methodHeader
          (identifier)
          (parameterList))
        (slStringLiteral))
      (lineComment)
      (lineComment)
      (classProperty
        (annotation
          (qualifiedIdentifier
            (identifier)))
        (annotation
          (qualifiedIdentifier
            (identifier))
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))))
        (annotation
          (qualifiedIdentifier
            (identifier))
          (objectBody
            (objectProperty
              (identifier)
              (slStringLiteral))
            (objectProperty
              (identifier)
              (intLiteral))))
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier))))
        (slStringLiteral))))
  (lineComment)
  (lineComment)
  (classMethod
    (annotation
      (qualifiedIdentifier
        (identifier)))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))
        (objectProperty
          (identifier)
          (intLiteral))))
    (methodHeader
      (identifier)
      (parameterList))
    (slStringLiteral))
  (lineComment)
  (lineComment)
  (classProperty
    (annotation
      (qualifiedIdentifier
        (identifier)))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))))
    (annotation
      (qualifiedIdentifier
        (identifier))
      (objectBody
        (objectProperty
          (identifier)
          (slStringLiteral))
        (objectProperty
          (identifier)
          (intLiteral))))
    (identifier)
    (typeAnnotation
      (type
        (qualifiedIdentifier
          (identifier))))
    (slStringLiteral))
  (clazz
    (identifier)
    (classExtendsClause
      (qualifiedIdentifier
        (identifier))))
  (clazz
    (identifier)
    (classExtendsClause
      (qualifiedIdentifier
        (identifier)))
    (classBody
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier)))))))
  (clazz
    (identifier)
    (classExtendsClause
      (qualifiedIdentifier
        (identifier)))
    (classBody
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier)))))
      (classProperty
        (identifier)
        (typeAnnotation
          (type
            (qualifiedIdentifier
              (identifier))))))))
