public List<Tuple> readSync(
      Pattern pattern, String restriction, String key, long timeout, Provider provider)
      throws TupleSpaceException, TupleSpaceSecurityException {

    List<Tuple> tuples = new ArrayList<Tuple>();

    switch (provider) {
      case LOCAL:
        tuples = localDomain.readSync(pattern, restriction, key, timeout);
        break;
      case INFRA:
        tuples = infraDomain.readSync(pattern, restriction, key, timeout);
        break;
      case ADHOC:
        tuples = adhocDomain.readSync(pattern, restriction, key, timeout);
        break;
      case ALL:
        tuples = localDomain.readSync(pattern, restriction, key, timeout);
        tuples.addAll(infraDomain.readSync(pattern, restriction, key, timeout));
        tuples.addAll(adhocDomain.readSync(pattern, restriction, key, timeout));
        break;
      default: // ANY provider
        tuples = localDomain.readSync(pattern, restriction, key, timeout);

        if (tuples == null || tuples.size() == 0) {
          tuples = infraDomain.readSync(pattern, restriction, key, timeout);

          if (tuples == null || tuples.size() == 0) {
            tuples = adhocDomain.readSync(pattern, restriction, key, timeout);
          }
        }
        break;
    }
    return tuples;
  }