code: func (_PublicResolver *PublicResolverFilterer) WatchContentChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverContentChanged, node [][32]byte) (event.Subscription, error) {
  
  	var nodeRule []interface{}
  	for _, nodeItem := range node {
  		nodeRule = append(nodeRule, nodeItem)
  	}
  
  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ContentChanged", nodeRule)
  	if err != nil {
  		return nil, err
  	}
  	return event.NewSubscription(func(quit <-chan struct{}) error {
  		defer sub.Unsubscribe()
  		for {
  			select {
  			case log := <-logs:
  				// New log arrived, parse the event and forward to the user
  				event := new(PublicResolverContentChanged)
  				if err := _PublicResolver.contract.UnpackLog(event, "ContentChanged", log); err != nil {
  					return err
  				}
  				event.Raw = log
  
  				select {
  				case sink <- event:
  				case err := <-sub.Err():
  					return err
  				case <-quit:
  					return nil
  				}
  			case err := <-sub.Err():
  				return err
  			case <-quit:
  				return nil
  			}
  		}
  	}), nil
  }
docs: // WatchContentChanged is a free log subscription operation binding the contract event 0x0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc.
  //
  // Solidity: event ContentChanged(node indexed bytes32, hash bytes32)