code: func (VSCodeObjectCodec) ReadObject(stream *bufio.Reader, v interface{}) error {
  	var contentLength uint64
  	for {
  		line, err := stream.ReadString('\r')
  		if err != nil {
  			return err
  		}
  		b, err := stream.ReadByte()
  		if err != nil {
  			return err
  		}
  		if b != '\n' {
  			return fmt.Errorf(`jsonrpc2: line endings must be \r\n`)
  		}
  		if line == "\r" {
  			break
  		}
  		if strings.HasPrefix(line, "Content-Length: ") {
  			line = strings.TrimPrefix(line, "Content-Length: ")
  			line = strings.TrimSpace(line)
  			var err error
  			contentLength, err = strconv.ParseUint(line, 10, 32)
  			if err != nil {
  				return err
  			}
  		}
  	}
  	if contentLength == 0 {
  		return fmt.Errorf("jsonrpc2: no Content-Length header found")
  	}
  	return json.NewDecoder(io.LimitReader(stream, int64(contentLength))).Decode(v)
  }
docs: // ReadObject implements ObjectCodec.