public boolean sameAs(RegionAttributes other) {
    if (!equal(cacheListeners, Arrays.asList(other.getCacheListeners()))) {
      throw new RuntimeException(
          "CacheListeners are not the same");
    }
    if (!equal(entryIdleTimeout, other.getEntryIdleTimeout())) {
      throw new RuntimeException(
          "EntryIdleTimeout is not the same");
    }
    if (!equal(customEntryIdleTimeout, other.getCustomEntryIdleTimeout())) {
      throw new RuntimeException(String.format(
          "CustomEntryIdleTimeout is not the same. this %s, other: %s", customEntryIdleTimeout,
          other.getCustomEntryIdleTimeout()));
    }
    if (!equal(entryTimeToLive, other.getEntryTimeToLive())) {
      throw new RuntimeException(
          "EntryTimeToLive is not the same");
    }
    if (!equal(customEntryTimeToLive, other.getCustomEntryTimeToLive())) {
      throw new RuntimeException(
          "CustomEntryTimeToLive is not the same");
    }
    if (!equal(partitionAttributes, other.getPartitionAttributes())) {
      throw new RuntimeException(
          String.format("PartitionAttributes are not the same. this: %s, other: %s",
              this, other.getPartitionAttributes()));
    }
    if (!equal(membershipAttributes, other.getMembershipAttributes())) {
      throw new RuntimeException(
          "Membership Attributes are not the same");
    }
    if (!equal(subscriptionAttributes, other.getSubscriptionAttributes())) {
      throw new RuntimeException(
          "Subscription Attributes are not the same");
    }
    if (!equal(evictionAttributes, other.getEvictionAttributes())) {
      throw new RuntimeException(
          String.format("Eviction Attributes are not the same: this: %s other: %s",
              evictionAttributes, other.getEvictionAttributes()));
    }
    if (diskStoreName == null) {
      // only compare the DWA, diskDirs and diskSizes when disk store is not configured
      if (!equal(diskWriteAttributes, other.getDiskWriteAttributes())) {
        throw new RuntimeException(
            "DistWriteAttributes are not the same");
      }
      if (!equal(diskDirs, other.getDiskDirs())) {
        throw new RuntimeException(
            "Disk Dirs are not the same");
      }
      if (!equal(diskSizes, other.getDiskDirSizes())) {
        throw new RuntimeException(
            "Disk Dir Sizes are not the same");
      }
    }
    if (!equal(diskStoreName, other.getDiskStoreName())) {
      throw new RuntimeException(
          String.format("DiskStore is not the same: this: %s other: %s",
              diskStoreName, other.getDiskStoreName()));
    }
    if (isDiskSynchronous != other.isDiskSynchronous()) {
      throw new RuntimeException(
          "Disk Synchronous write is not the same.");
    }
    if (dataPolicy != other.getDataPolicy()) {
      throw new RuntimeException(
          String.format("Data Policies are not the same: this: %s other: %s",
              getDataPolicy(), other.getDataPolicy()));
    }
    if (earlyAck != other.getEarlyAck()) {
      throw new RuntimeException(
          "Early Ack is not the same");
    }
    if (enableSubscriptionConflation != other.getEnableSubscriptionConflation()) {
      throw new RuntimeException(
          "Enable Subscription Conflation is not the same");
    }
    if (enableAsyncConflation != other.getEnableAsyncConflation()) {
      throw new RuntimeException(
          "Enable Async Conflation is not the same");
    }
    if (initialCapacity != other.getInitialCapacity()) {
      throw new RuntimeException(
          "initial Capacity is not the same");
    }
    if (!equal(keyConstraint, other.getKeyConstraint())) {
      throw new RuntimeException(
          "Key Constraints are not the same");
    }
    if (!equal(valueConstraint, other.getValueConstraint())) {
      throw new RuntimeException(
          "Value Constraints are not the same");
    }
    if (loadFactor != other.getLoadFactor()) {
      throw new RuntimeException(
          "Load Factors are not the same");
    }
    if (!equal(regionIdleTimeout, other.getRegionIdleTimeout())) {
      throw new RuntimeException(
          "Region Idle Timeout is not the same");
    }
    if (!equal(scope, getScope())) {
      throw new RuntimeException(
          "Scope is not the same");
    }
    if (statisticsEnabled != other.getStatisticsEnabled()) {
      throw new RuntimeException(
          String.format("Statistics enabled is not the same: this: %s other: %s",
              statisticsEnabled,
              other.getStatisticsEnabled()));
    }
    if (ignoreJTA != other.getIgnoreJTA()) {
      throw new RuntimeException(
          "Ignore JTA is not the same");
    }
    if (concurrencyLevel != other.getConcurrencyLevel()) {
      throw new RuntimeException(
          "ConcurrencyLevel is not the same");
    }
    if (concurrencyChecksEnabled != other.getConcurrencyChecksEnabled()) {
      throw new RuntimeException(
          "ConcurrencyChecksEnabled is not the same");
    }
    if (indexMaintenanceSynchronous != other.getIndexMaintenanceSynchronous()) {
      throw new RuntimeException(
          "Index Maintenance Synchronous is not the same");
    }
    if (!equal(poolName, other.getPoolName())) {
      throw new RuntimeException(
          "poolName is not the same: " + poolName + " != " + other.getPoolName());
    }
    if (!equal(cacheLoader, other.getCacheLoader())) {
      throw new RuntimeException("CacheLoader are not the same");
    }
    if (!equal(cacheWriter, other.getCacheWriter())) {
      throw new RuntimeException("CacheWriter is not the same");
    }
    if (multicastEnabled != other.getMulticastEnabled()) {
      String s = "MulticastEnabled is not the same: " + multicastEnabled + "!="
          + other.getMulticastEnabled();
      throw new RuntimeException(s);
    }
    if (cloningEnabled != other.getCloningEnabled()) {
      throw new RuntimeException(
          String.format("Cloning enabled is not the same: this: %s other: %s",
              cloningEnabled,
              other.getCloningEnabled()));
    }
    if (!equal(compressor, other.getCompressor())) {
      throw new RuntimeException("Compressors are not the same.");
    }
    if (offHeap != other.getOffHeap()) {
      throw new RuntimeException(
          "EnableOffHeapMemory is not the same");
    }
    return true;
  }
Returns whether or not this <code>RegionAttributesCreation</code> is equivalent to another
<code>RegionAttributes</code>.
geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/RegionAttributesCreation.java