@Override
  public Object netSearch(final boolean doNetLoad) throws CacheLoaderException, TimeoutException {

    if (region.getAttributes().getScope().isLocal()) {
      throw new CacheLoaderException(NET_SEARCH_LOCAL);
    }

    boolean removeSearcher = false;
    if (searcher == null) {
      searcher = SearchLoadAndWriteProcessor.getProcessor();
      removeSearcher = true;
    }

    try {
      if (removeSearcher) {
        searcher.initialize((LocalRegion) region, key, aCallbackArgument);
      }
      Object obj = null;

      if (netSearchAllowed) {
        obj = searcher.doNetSearch();
        if (searcher.resultIsSerialized()) {
          obj = EntryEventImpl.deserialize((byte[]) obj);
        }
      }
      if (doNetLoad && obj == null && netLoadAllowed) {
        obj = searcher.doNetLoad();
        if (searcher.resultIsSerialized()) {
          obj = EntryEventImpl.deserialize((byte[]) obj);
        }
      }
      // Note it is possible for netsearch to not be allowed
      // but netload to be allowed.
      // For example on replicated regions we say don't bother netsearching
      // but we do need to check for netLoaders
      return obj;
    } finally {
      if (removeSearcher) {
        searcher.remove();
      }
    }
  }
Searchs other caches for the value to be loaded. If the cache is part of a distributed caching
system, <code>netSearch</code> will try to locate the requested value in any other cache within
the system. If the search is successful, a reference to a local copy of the value is returned.
If there is no value for this entry present in the system, and doNetLoad is true, GemFire looks
for and invokes <code>CacheLoaders</code> in other nodes in the system. The net load will
invoke one loader at a time until a loader either returns a non-null value, or throws an
exception. If the object is not found <code>null</code> is returned.

@param doNetLoad if true, and there is no valid value found for this entry in the system, then
       look for and invoke loaders on other nodes.
@return the requested value or null if not found
@throws TimeoutException if the netSearch times out before getting a response from another
        cache
geode-core/src/main/java/org/apache/geode/internal/cache/LoaderHelperImpl.java