sig
  type error =
      Invalid_scope
    | Invalid_class_flags
    | Duplicate_extends
    | Duplicate_implements
    | Invalid_constant_value
    | Invalid_annotation
    | Code_too_large
    | Unable_compile
    | Duplicate_label of string
    | Undefined_label of string
    | Invalid_offset
    | Invalid_parameter
    | Invalid_flag of string
    | Flag_expected
    | Constant_out_of_bounds
    | Instruction_waited
    | Invalid_class
    | Invalid_field_flags
    | Invalid_field_name
    | Invalid_field_type
    | Invalid_field_directive
    | Invalid_return_type
    | Invalid_constructor_return_type
    | Invalid_constructor_flags
    | Invalid_initializer_signature
    | Invalid_initializer_flags
    | Invalid_method_flags
    | Invalid_method_directive
    | Exception_class_name_waited
    | Invalid_inner_class
    | Invalid_outer_class
    | Invalid_inner_name
    | Invalid_inner_class_flags
    | Invalid_method
    | Invalid_class_signature
    | Invalid_field_signature
    | Invalid_method_signature
    | Invalid_local_variable_type
    | Invalid_local_variable_signature
    | Invalid_attribute_arguments
    | Unknown_attribute
    | Invalid_directive_arguments
    | Invalid_directive
    | Syntax_error
    | Lexer_error of Lexer.error
    | ClassDefinition_error of ClassDefinition.error
    | ClassFile_error of ClassFile.error
    | Method_error of Method.error
    | Field_error of Field.error
    | Attribute_error of Attribute.error
    | Instruction_error of Instruction.error
    | ByteCode_error of ByteCode.error
    | Annotation_error of Annotation.error
    | AccessFlag_error of AccessFlag.error
    | LdcConstraint_error of LdcConstraint.error
    | ConstantPool_error of ConstantPool.error
    | Signature_error of Signature.error
    | Descriptor_error of Descriptor.error
    | Name_error of Name.error
    | Version_error of Version.error
    | Invalid_stack_frame
    | Internal_inner_class
    | Internal_pushback
    | Optimization_error of string
    | Several_frames_at_offset of Utils.u2
    | Unable_to_compute_stack_frames of string
  exception Exception of int * Assembler.error
  val string_of_error : Assembler.error -> string
  type destination = Stream of OutputStream.t | Path of string
  val assemble :
    ?version:Version.t ->
    ?compute_stacks:bool ->
    ?optimize:bool ->
    ?class_loader:ClassLoader.t ->
    InputStream.t -> Assembler.destination -> Name.for_class
end