sig
  type t = java'lang'ThreadGroup java_instance
  val make : ?parent:ThreadGroup.t -> JavaString.t -> ThreadGroup.t
  val active_count : ThreadGroup.t -> java_int
  val active_group_count : ThreadGroup.t -> java_int
  val destroy : ThreadGroup.t -> unit
  val get_max_priority : ThreadGroup.t -> java_int
  val get_name : ThreadGroup.t -> JavaString.t
  val get_parent : ThreadGroup.t -> ThreadGroup.t
  val interrupt : ThreadGroup.t -> unit
  val is_daemon : ThreadGroup.t -> bool
  val is_destroyed : ThreadGroup.t -> bool
  val parent_of : ThreadGroup.t -> ThreadGroup.t -> bool
  val set_daemon : ThreadGroup.t -> bool -> unit
  val set_max_priority : ThreadGroup.t -> java_int -> unit
  val enumerate_threads :
    ThreadGroup.t ->
    ?recurse:bool ->
    java'lang'Thread java_instance JavaReferenceArray.t -> int32
  val enumerate_groups :
    ThreadGroup.t ->
    ?recurse:bool ->
    java'lang'ThreadGroup java_instance JavaReferenceArray.t -> int32
  val null : ThreadGroup.t
  external is_null : ThreadGroup.t -> bool = "java is_null"
  external is_not_null : ThreadGroup.t -> bool = "java is_not_null"
  val wrap : ThreadGroup.t -> ThreadGroup.t option
  val unwrap : ThreadGroup.t option -> ThreadGroup.t
end