code: func (t *Tag) Tree() (*Tree, error) {
  	switch t.TargetType {
  	case plumbing.CommitObject:
  		c, err := t.Commit()
  		if err != nil {
  			return nil, err
  		}
  
  		return c.Tree()
  	case plumbing.TreeObject:
  		return GetTree(t.s, t.Target)
  	default:
  		return nil, ErrUnsupportedObject
  	}
  }
docs: // Tree returns the tree pointed to by the tag. If the tag points to a commit
  // object the tree of that commit will be returned. If the tag does not point
  // to a commit or tree object ErrUnsupportedObject will be returned.