code: func (r *ReceiptForStorage) DecodeRLP(s *rlp.Stream) error {
  	// Retrieve the entire receipt blob as we need to try multiple decoders
  	blob, err := s.Raw()
  	if err != nil {
  		return err
  	}
  	// Try decoding from the newest format for future proofness, then the older one
  	// for old nodes that just upgraded. V4 was an intermediate unreleased format so
  	// we do need to decode it, but it's not common (try last).
  	if err := decodeStoredReceiptRLP(r, blob); err == nil {
  		return nil
  	}
  	if err := decodeV3StoredReceiptRLP(r, blob); err == nil {
  		return nil
  	}
  	return decodeV4StoredReceiptRLP(r, blob)
  }
docs: // DecodeRLP implements rlp.Decoder, and loads both consensus and implementation
  // fields of a receipt from an RLP stream.