def exclude_class_tinkering (*args)

      @current_set.exclude_pattern(
        [ :sclass ], 'opening the metaclass of an instance is forbidden')

      Array(args.last[:except]).each { |e|
        expand_class(e).each do |c|
          @current_set.accept_pattern([ :class, :any, c ])
        end
      } if args.last.is_a?(Hash)

      @current_set.exclude_pattern(
        [ :class ], 'defining a class is forbidden')
    end
def exclude_class_tinkering (*args)

      @current_set.exclude_pattern(
        [ :sclass ], 'opening the metaclass of an instance is forbidden')

      Array(args.last[:except]).each { |e|
        expand_class(e).each do |c|
          @current_set.accept_pattern([ :class, :any, c ])
        end
      } if args.last.is_a?(Hash)

      @current_set.exclude_pattern(
        [ :class ], 'defining a class is forbidden')
    end
Bans the definition and the [re]opening of classes

 a list of exceptions (classes) can be passed. Subclassing those
 exceptions is permitted.

     exclude_class_tinkering :except => [ String, Array ]