# File lib/rexml/source.rb, line 134
    def initialize(arg, block_size=500, encoding=nil)
      @er_source = @source = arg
      @to_utf = false

      # Determining the encoding is a deceptively difficult issue to resolve.
      # First, we check the first two bytes for UTF-16.  Then we
      # assume that the encoding is at least ASCII enough for the '>', and
      # we read until we get one of those.  This gives us the XML declaration,
      # if there is one.  If there isn't one, the file MUST be UTF-8, as per
      # the XML spec.  If there is one, we can determine the encoding from
      # it.
      @buffer = ""
      str = @source.read( 2 )
      if encoding
        self.encoding = encoding
      elsif 0xfe == str[0] && 0xff == str[1]
        @line_break = "\000>"
      elsif 0xff == str[0] && 0xfe == str[1]
        @line_break = ">\000"
      elsif 0xef == str[0] && 0xbb == str[1]
        str += @source.read(1)
        str = '' if (0xbf == str[2])
        @line_break = ">"
      else
        @line_break = ">"
      end
      super str+@source.readline( @line_break )
    end