sig
  type t = {
    access_flags : AccessFlag.for_package list;
    name : Name.for_package;
    attributes : Attribute.for_package list;
  }
  val equal : PackageDefinition.t -> PackageDefinition.t -> bool
  val compare : PackageDefinition.t -> PackageDefinition.t -> int
  val hash : PackageDefinition.t -> int
  type error =
      Invalid_package_name
    | Too_many of string
    | Version_error of Version.error
    | Invalid_package_definition
  exception Exception of PackageDefinition.error
  val string_of_error : PackageDefinition.error -> string
  val decode : ClassFile.t -> PackageDefinition.t
  val encode : ?version:Version.t -> PackageDefinition.t -> ClassFile.t
end