throws Throwable
  public Value array_intersect_key(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 interArray = new ArrayValueImpl();    for (Map.Entry<Value, Value> entry : array.entrySet()) {      boolean keyFound = false;      Value entryKey = entry.getKey();      for (int k = 0; k < arrays.length; k++) {        if (! (arrays[k] instanceof ArrayValue)) {          env.warning("Argument #" + (k + 2) + " is not an array");          return NullValue.NULL;        }        if (k > 0 && ! keyFound)          break;        keyFound =          ((ArrayValue) arrays[k]).containsKey(entryKey) != NullValue.NULL;      }      if (keyFound)        interArray.put(entryKey, entry.getValue());    }    return interArray;  }