public Cache create()
      throws TimeoutException, CacheWriterException, GatewayException, RegionExistsException {
    return internalCacheBuilder.create();
  }
Creates a new cache that uses the configured distributed system. If a connected distributed
system already exists it will be used if it is compatible with the properties on this factory.
Otherwise a a distributed system will be created with the configured properties. If a cache
already exists it will be returned.
<p>
If the cache does need to be created it will also be initialized from cache.xml if it exists.

@return the created or already existing singleton cache

@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.
@since GemFire 6.5
geode-core/src/main/java/org/apache/geode/cache/CacheFactory.java