public MetastoreCursor openCursor(Set<String> fields) throws MSException {
   HeldValue<MetastoreCursor> retValue = new HeldValue<MetastoreCursor>();
   // make the actual async call
   this.table.openCursor(fields, retValue, null);
   retValue.waitCallback();
   return retValue.getValue();
 }
  public void remove(String key, Version version) throws MSException {
    HeldValue<Void> retValue = new HeldValue<Void>();

    // make the actual async call
    this.table.remove(key, version, retValue, null);

    retValue.waitCallback();
  }
  public Version put(String key, Value value, Version version) throws MSException {
    HeldValue<Version> retValue = new HeldValue<Version>();

    // make the actual async call
    this.table.put(key, value, version, retValue, null);

    retValue.waitCallback();
    return retValue.getValue();
  }