# File lib/git/object.rb, line 253
    def self.new(base, objectish, type = nil, is_tag = false)
      if is_tag
        sha = base.lib.tag_sha(objectish)
        if sha == ''
          raise Git::GitTagNameDoesNotExist.new(objectish)
        end
        return Git::Object::Tag.new(base, sha, objectish)
      end
      
      type ||= base.lib.object_type(objectish)
      klass =
        case type
        when /blob/   then Blob   
        when /commit/ then Commit
        when /tree/   then Tree
        end
      klass.new(base, objectish)
    end