========================================================================
Test an empty class
========================================================================

.class public LA/BC;
.super Ljava/lang/Object;
.source ""

---

(class_definition
  (class_directive
    (access_modifiers
      (access_modifier))
    (class_identifier
      (identifier)
      (identifier)))
  (super_directive
    (class_identifier
      (identifier)
      (identifier)
      (identifier)))
  (source_directive
    (string)))



========================================================================
Test a class with a source file
========================================================================

.class public LA/BC;
.super Ljava/lang/Object;
.source "SourceFile.java"

---

(class_definition
  (class_directive
    (access_modifiers
      (access_modifier))
    (class_identifier
      (identifier)
      (identifier)))
  (super_directive
    (class_identifier
      (identifier)
      (identifier)
      (identifier)))
  (source_directive
    (string
      (string_fragment))))



========================================================================
Test a class that implements an interface
========================================================================

.class public LA/BC;
.super Ljava/lang/Object;
.source ""

.implements LD/EF;

---

(class_definition
  (class_directive
    (access_modifiers
      (access_modifier))
    (class_identifier
      (identifier)
      (identifier)))
  (super_directive
    (class_identifier
      (identifier)
      (identifier)
      (identifier)))
  (source_directive
    (string))
  (implements_directive
    (class_identifier
      (identifier)
      (identifier))))



========================================================================
Test a class that implements multiple interfaces
========================================================================

.class public LA/BC;
.super Ljava/lang/Object;
.source ""

.implements LD/EF;
.implements LG/HI;

---

(class_definition
  (class_directive
    (access_modifiers
      (access_modifier))
    (class_identifier
      (identifier)
      (identifier)))
  (super_directive
    (class_identifier
      (identifier)
      (identifier)
      (identifier)))
  (source_directive
    (string))
  (implements_directive
    (class_identifier
      (identifier)
      (identifier)))
  (implements_directive
    (class_identifier
      (identifier)
      (identifier))))



========================================================================
Test a class with a non valid Java character
========================================================================

.class public LA/-BC;
.super Ljava/lang/Object;
.source ""

---

(class_definition
  (class_directive
    (access_modifiers
      (access_modifier))
    (class_identifier
      (identifier)
      (identifier)))
  (super_directive
    (class_identifier
      (identifier)
      (identifier)
      (identifier)))
  (source_directive
    (string)))



========================================================================
Test a class without an access modifier
========================================================================

.class LA/-BC;
.super Ljava/lang/Object;
.source ""

---

(class_definition
  (class_directive
    (class_identifier
      (identifier)
      (identifier)))
  (super_directive
    (class_identifier
      (identifier)
      (identifier)
      (identifier)))
  (source_directive
    (string)))
