throws Throwable
  public Value array_diff_assoc(Env env, ArrayValue array, Value []arrays)    throws Throwable  {    if (array == null)      return NullValue.NULL;    if (arrays.length < 1) {      env.warning("Wrong parameter count for array_diff()");      return NullValue.NULL;    }    ArrayValue diffArray = new ArrayValueImpl();    for (Map.Entry<Value, Value> entry : array.entrySet()) {      boolean valueFound = false;      Value entryValue = entry.getValue();      Value entryKey = entry.getKey();      for (int k = 0; k < arrays.length && ! valueFound; k++) {        if (! (arrays[k] instanceof ArrayValue)) {          env.warning("Argument #" + (k + 2) + " is not an array");          return NullValue.NULL;        }        valueFound =          ((ArrayValue) arrays[k]).contains(entryValue).eq(entryKey);      }      if (! valueFound)        diffArray.put(entryKey, entryValue);    }    return diffArray;  }