abstract contract ContractRegistryAccess {
  IContractRegistry internal _contractRegistry;

  constructor(IContractRegistry contractRegistry_) {
    _contractRegistry = contractRegistry_;
  }

  /**
   *  @notice Get a contract address by bytes32 name
   *  @param _name bytes32 contract name
   *  @dev contract name should be a keccak256 hash of the name string, e.g. `keccak256("ContractName")`
   *  @return contract address
   */
  function _getContract(bytes32 _name) internal view virtual returns (address) {
    return _contractRegistry.getContract(_name);
  }
}
/**
 *  @notice Provides an internal `_getContract` helper function to access the `ContractRegistry`
 */
function _getContract(bytes32 _name) internal view virtual returns (address) {
  return _contractRegistry.getContract(_name);
}

/**
 *  @notice Get a contract address by bytes32 name
 *  @param _name bytes32 contract name
 *  @dev contract name should be a keccak256 hash of the name string, e.g. `keccak256("ContractName")`
 *  @return contract address
 */