# File lib/hashery/open_hash.rb, line 72
    def open!(*methods)
      # Only select string and symbols, any other type of key is allowed,
      # it just won't be accessible via dynamic methods.
      methods = methods.select{ |x| String === x || Symbol === x }
      if methods.any?{ |m| m.to_s.start_with?('__') }
        raise ArgumentError, "cannot open shadow methods"
      end
      # only public methods need be made protected
      methods = methods.map{ |x| x.to_sym }
      methods = methods & public_methods(true).map{ |x| x.to_sym }
      if @safe
        raise ArgumentError, "cannot set public method" unless methods.empty?
      else
        (class << self; self; end).class_eval{ protected *methods }
      end
      methods
    end