module Kernel

def describe desc, *additional_desc, &block # :doc:

:doc:
def describe desc, *additional_desc, &block # :doc:
  stack = Minitest::Spec.describe_stack
  is_spec_class = Class === self && kind_of?(Minitest::Spec::DSL)
  name  = [stack.last, desc, *additional_desc]
  name.prepend self if stack.empty? && is_spec_class
  sclas =
    stack.last                 \
    || (is_spec_class && self) \
    || Minitest::Spec.spec_type(desc, *additional_desc)
  cls = sclas.create name.compact.join("::"), desc
  stack.push cls
  cls.class_eval(&block)
  stack.pop
  cls
end