public InternalCache create()
      throws TimeoutException, CacheWriterException, GatewayException, RegionExistsException {
    synchronized (InternalCacheBuilder.class) {
      InternalDistributedSystem internalDistributedSystem = findInternalDistributedSystem()
          .orElseGet(this::createInternalDistributedSystem);
      return create(internalDistributedSystem);
    }
  }
@see CacheFactory#create()

@throws CacheXmlException If a problem occurs while parsing the declarative caching XML file.
@throws TimeoutException If a {@link Region#put(Object, Object)} times out while initializing
        the cache.
@throws CacheWriterException If a {@code CacheWriterException} is thrown while initializing the
        cache.
@throws GatewayException If a {@code GatewayException} is thrown while initializing the cache.
@throws RegionExistsException If the declarative caching XML file describes a region that
        already exists (including the root region).
@throws IllegalStateException if cache already exists and is not compatible with the new
        configuration.
@throws AuthenticationFailedException if authentication fails.
@throws AuthenticationRequiredException if the distributed system is in secure mode and this
        new member is not configured with security credentials.
geode-core/src/main/java/org/apache/geode/internal/cache/InternalCacheBuilder.java