class Tryouts::Tryout

def dream(*args, &definition)

NOTE: This method is DSL-only. It's not intended to be used in OO syntax.
def dream(*args, &definition) 
  if args.empty?
    dobj = Tryouts::Drill::Dream.from_block definition
  else
    args = args.size == 1 ? [args.first] : args.reverse
    dobj = Tryouts::Drill::Dream.new(*args)
  end
  @dream_catcher.push dobj
  dobj
end