code: func (ens *ENS) SetContentHash(name string, hash []byte) (*types.Transaction, error) {
  	node := EnsNode(name)
  
  	resolver, err := ens.getResolver(node)
  	if err != nil {
  		return nil, err
  	}
  
  	opts := ens.TransactOpts
  	opts.GasLimit = 200000
  
  	// IMPORTANT: The old contract is deprecated. This code should be removed latest on June 1st 2019
  	supported, err := resolver.SupportsInterface(contentHash_Interface_Id)
  	if err != nil {
  		return nil, err
  	}
  
  	if !supported {
  		resolver, err := ens.getFallbackResolver(node)
  		if err != nil {
  			return nil, err
  		}
  		opts := ens.TransactOpts
  		opts.GasLimit = 200000
  		var b [32]byte
  		copy(b[:], hash)
  		return resolver.Contract.SetContent(&opts, node, b)
  	}
  
  	// END DEPRECATED CODE
  	return resolver.Contract.SetContenthash(&opts, node, hash)
  }
docs: // SetContentHash sets the content hash associated with a name. Only works if the caller
  // owns the name, and the associated resolver implements a `setContenthash` function.