void createRoot(Cache cache)
      throws TimeoutException, CacheWriterException, RegionExistsException {
    Region root = null;

    // Validate the attributes before creating the root region
    attrs.inheritAttributes(cache);
    attrs.setIndexes(indexes);
    attrs.prepareForValidation();

    extensionPoint.beforeCreate(cache);

    try {
      root = ((InternalCache) cache).basicCreateRegion(name,
          new AttributesFactory(attrs).create());
    } catch (RegionExistsException ex) {
      root = ex.getRegion();
      setMutableAttributes(root);
    } catch (RegionDestroyedException ex) {
      // Region was concurrently destroyed.
      cache.getLogger().warning(
          String.format("Region was globally destroyed during cache initialization: %s",
              name));
      // do nothing
    }
    if (root != null) {
      fillIn(root);
    }
  }
Creates a root {@link Region} in a given <code>Cache</code> based on the description provided
by this <code>RegionCreation</code>.
geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/RegionCreation.java