# File lib/rufus/treechecker.rb, line 234
      def check(sexp)

        if sexp.is_a?(Symbol) and m = @excluded_symbols[sexp]

          raise SecurityError.new(m)

        elsif sexp.is_a?(Array)

          # accepted patterns are evaluated before excluded patterns
          # if one is found the excluded patterns are skipped

          pats = @accepted_patterns[sexp.first] || []
          return false if pats.find { |pat| check_pattern(sexp, pat) }

          pats = @excluded_patterns[sexp.first] || []

          pats.each do |pat, msg|
            raise SecurityError.new(msg) if check_pattern(sexp, pat)
          end
        end

        true
      end