code: func (s *Single) RemoveNode(v quad.Value) error {
  	gv := s.qs.ValueOf(v)
  	if gv == nil {
  		return graph.ErrNodeNotExists
  	}
  	del := graph.NewRemover(s)
  	defer del.Close()
  
  	total := 0
  	// TODO(dennwc): QuadStore may remove node without iterations. Consider optional interface for this.
  	for _, d := range []quad.Direction{quad.Subject, quad.Predicate, quad.Object, quad.Label} {
  		r := graph.NewResultReader(s.qs, s.qs.QuadIterator(d, gv))
  		n, err := quad.Copy(del, r)
  		r.Close()
  		if err != nil {
  			return err
  		}
  		total += n
  	}
  	if err := del.Flush(); err != nil {
  		return err
  	}
  	if total == 0 {
  		return graph.ErrNodeNotExists
  	}
  	return nil
  }
docs: // RemoveNode removes all quads with the given value.
  //
  // It returns ErrNodeNotExists if node is missing.