/**
   * Evaluates the expression.
   *
   * @param env the calling environment.
   * @return the expression value.
   */
  @Override
  public Value eval(Env env) {
    Value qThis = env.getThis();

    BiancaClass cls = qThis.getBiancaClass();

    if (cls == null) {
      env.error(getLocation(), L.l("no calling class found"));

      return NullValue.NULL;
    }

    Value[] values = evalArgs(env, _args);

    env.pushCall(this, cls, values);

    try {
      return cls.callMethod(env, qThis, _methodName, _hash, values);
    } finally {
      env.popCall();
    }
  }