code: func (v Vector) Update(id ShortID) Vector {
  	for i := range v.Counters {
  		if v.Counters[i].ID == id {
  			// Update an existing index
  			v.Counters[i].Value++
  			return v
  		} else if v.Counters[i].ID > id {
  			// Insert a new index
  			nv := make([]Counter, len(v.Counters)+1)
  			copy(nv, v.Counters[:i])
  			nv[i].ID = id
  			nv[i].Value = 1
  			copy(nv[i+1:], v.Counters[i:])
  			return Vector{Counters: nv}
  		}
  	}
  	// Append a new index
  	return Vector{Counters: append(v.Counters, Counter{ID: id, Value: 1})}
  }
docs: // The Vector type represents a version vector. The zero value is a usable
  // version vector. The vector has slice semantics and some operations on it
  // are "append-like" in that they may return the same vector modified, or v
  // new allocated Vector with the modified contents.
  // Counter represents a single counter in the version vector.
  // Update returns a Vector with the index for the specific ID incremented by
  // one. If it is possible, the vector v is updated and returned. If it is not,
  // a copy will be created, updated and returned.