code: func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error {
  	blob, err := s.Raw()
  	if err != nil {
  		return err
  	}
  	var dec rlpStorageLog
  	err = rlp.DecodeBytes(blob, &dec)
  	if err == nil {
  		*l = LogForStorage{
  			Address: dec.Address,
  			Topics:  dec.Topics,
  			Data:    dec.Data,
  		}
  	} else {
  		// Try to decode log with previous definition.
  		var dec legacyRlpStorageLog
  		err = rlp.DecodeBytes(blob, &dec)
  		if err == nil {
  			*l = LogForStorage{
  				Address: dec.Address,
  				Topics:  dec.Topics,
  				Data:    dec.Data,
  			}
  		}
  	}
  	return err
  }
docs: // DecodeRLP implements rlp.Decoder.
  //
  // Note some redundant fields(e.g. block number, tx hash etc) will be assembled later.