throws Throwable
  public boolean eql(Value rValue)    throws Throwable  {    if (rValue == null)      return false;    else if (getSize() != rValue.getSize())      return false;    rValue = rValue.toValue();    if (! (rValue instanceof ArrayValue))      return false;    ArrayValue rArray = (ArrayValue) rValue;    Iterator<Map.Entry<Value,Value>> iterA = entrySet().iterator();    Iterator<Map.Entry<Value,Value>> iterB = rArray.entrySet().iterator();    while (iterA.hasNext() && iterB.hasNext()) {      Map.Entry<Value,Value> entryA = iterA.next();      Map.Entry<Value,Value> entryB = iterB.next();      if (! entryA.getKey().eql(entryB.getKey()))        return false;      if (! entryA.getValue().eql(entryB.getValue()))        return false;    }    if (iterA.hasNext() || iterB.hasNext())      return false;    else      return true;  }