# File lib/git/object.rb, line 272
      def 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)
        else
          if !type
            type = base.lib.object_type(objectish) 
          end
        end
        
        klass =
          case type
          when /blob/:   Blob   
          when /commit/: Commit
          when /tree/:   Tree
          end
        klass::new(base, objectish)
      end