# File lib/librarian/dsl/target.rb, line 64
      def source(name, param = nil, options = nil, &block)
        if !(Hash === name) && [Array, Hash, Proc].any?{|c| c === param} && !options && !block
          define_source_shortcut(name, param)
        elsif !(Hash === name) && !param && !options
          source = source_shortcuts[name]
          scope_or_directive(block) do
            @source = source
            @sources = @sources.dup << source
          end
        else
          name, param, options = *normalize_source_options(name, param, options || {})
          source = source_from_params(name, param, options)
          scope_or_directive(block) do
            @source = source
            @sources = @sources.dup << source
          end
        end
      end