code: private static ChaiProvider synchronizedProvider( final ChaiProvider theProvider )
      {
          if ( theProvider instanceof SynchronizedProvider )
          {
              return theProvider;
          }
          else
          {
              return ( ChaiProvider ) Proxy.newProxyInstance(
                      theProvider.getClass().getClassLoader(),
                      theProvider.getClass().getInterfaces(),
                      new SynchronizedProvider( theProvider ) );
          }
      }
docs: Returns a thread-safe "wrapped" {@code ChaiProvider}.  All ldap operations will be forced through a single
  lock and then sent to the backing provider.
  Depending on the ldap server and the configured timeouts, calling methods on a synchronized
  provider may result in significant blocking delays.
  
  @param theProvider The provider to be "wrapped" in a synchronized provider.
  @return A synchronized view of the specified provider