# File lib/model/base.rb, line 341
      def self.extract_fieldset_and_options arguments
        orig_args = arguments
        fieldset = :default
        options = { # default options
          :visited_classes => [],
          :fields => []
        }
        if arguments.size > 2 || (arguments.size == 2 && !arguments[0].is_a?(Symbol))
          raise ArgumentError, "Don't know how to handle #{arguments.inspect}"
        elsif arguments.size == 2 && arguments[0].is_a?(Symbol)
          fieldset = arguments.shift
          if arguments[0].is_a?(Array)
            options.update({
              :fields => arguments[0]
            })
          elsif arguments[0].is_a?(Hash)
            options.update(arguments[0])
          end
        elsif arguments.size == 1 && (arguments[0].is_a?(Symbol) || arguments[0].is_a?(String))
          fieldset = arguments.shift.to_sym
        elsif arguments.size == 1 && arguments[0].is_a?(Hash)
          fieldset = arguments[0].delete(:fieldset) || :default
          options.update(arguments[0])
        end
        [fieldset, options]
      end