class Gem::StubSpecification

def data

def data
  unless @data
    begin
      saved_lineno = $.
      Gem.open_file loaded_from, OPEN_MODE do |file|
        file.readline # discard encoding line
        stubline = file.readline
        if stubline.start_with?(PREFIX)
          extline = file.readline
          extensions =
            if extline.delete_prefix!(PREFIX)
              extline.chomp!
              extline.split "\0"
            else
              StubLine::NO_EXTENSIONS
            end
          stubline.chomp! # readline(chomp: true) allocates 3x as much as .readline.chomp!
          @data = StubLine.new stubline, extensions
        end
      rescue EOFError
      end
    ensure
      $. = saved_lineno
    end
  end
  @data ||= to_spec
end