code: public void reindex() {
          JSONObject ob;
  
          try {
              ob = findKeysInBucketAsJSON();
          }
          catch( PersistenceException e ) {
              std.warn("Unable to re-index: " + e.getMessage(), e);
              return;
          }
          if( ob.has("keys") ) {
              try {
                  JSONArray keys = ob.getJSONArray("keys");
  
                  for( int i=0; i<keys.length(); i++ ) {
                      String key = keys.getString(i);
                      try {
                          T item = get(key);
  
                          if( item != null ) {
                              reindex(item);
                          }
                      }
                      catch( Throwable t ) {
                          std.warn("Unable to re-index: " + t.getMessage(), t);
                      }
                  }
              }
              catch( Throwable t ) {
                  std.warn("Unable to re-index: " + t.getMessage(), t);
              }
          }
      }
docs: /*
  private JSONString findKeysInBucket() throws PersistenceException {
  return new JSONString() {
  @Override
  public String toJSONString() {
  try {
  JSONObject ob = findKeysInBucketAsJSON();
  JSONArray keys = ob.getJSONArray("keys");
  
  if( keys.length() < 1 ) {
  return null;
  }
  StringBuilder b = new StringBuilder();
  
  b.append("[");
  for( int i=0; i<keys.length(); i++ ) {
  b.append("[");
  b.append("\"");
  b.append(getBucket());
  b.append("\",\"");
  b.append(keys.getString(i));
  b.append("\"");
  b.append("],");
  }
  b.append("]");
  return b.toString();
  }
  catch( Exception e ) {
  throw new RuntimeException(e);
  }
  }
  };
  }