    # File temp/source.rb, line 9
        def SourceFactory::create_from(arg)
          if arg.kind_of? String
            Source.new(arg)
          elsif arg.respond_to? :read and
                arg.respond_to? :readline and
                arg.respond_to? :nil? and
                arg.respond_to? :eof?
            IOSource.new(arg)
          elsif arg.kind_of? Source
            arg
          else
            raise "#{source.class} is not a valid input stream.  It must walk \n"+
            "like either a String, IO, or Source."
          end
        end