code: func (dec *Reader) ReadQuad() (quad.Quad, error) {
  	dec.line = dec.line[:0]
  	var line []byte
  	for {
  		for {
  			l, pre, err := dec.r.ReadLine()
  			if err != nil {
  				return quad.Quad{}, err
  			}
  			dec.line = append(dec.line, l...)
  			if !pre {
  				break
  			}
  		}
  		if line = bytes.TrimSpace(dec.line); len(line) != 0 && line[0] != '#' {
  			break
  		}
  		dec.line = dec.line[:0]
  	}
  	var (
  		q   quad.Quad
  		err error
  	)
  	if dec.raw {
  		q, err = ParseRaw(string(line))
  	} else {
  		q, err = Parse(string(line))
  	}
  	if err != nil {
  		return quad.Quad{}, fmt.Errorf("failed to parse %q: %v", dec.line, err)
  	}
  	if !q.IsValid() {
  		return dec.ReadQuad()
  	}
  	return q, nil
  }
docs: // ReadQuad returns the next valid N-Quad as a quad.Quad, or an error.