* @param arg
   * @param module
   * @param environment
   * @return PlIterator
   */
  public static PlIterator getInferredBinaryPropositionValues(LogicObject relation, Stella_Object arg, Module module, Environment environment) {
    { Module mdl000 = module;
      Context cxt000 = mdl000;

      if (mdl000 == null) {
        mdl000 = ((Module)(Stella.$MODULE$.get()));
        cxt000 = ((Context)(Stella.$CONTEXT$.get()));
      }
      { Object old$Module$000 = Stella.$MODULE$.get();
        Object old$Context$000 = Stella.$CONTEXT$.get();

        try {
          Native.setSpecial(Stella.$MODULE$, mdl000);
          Native.setSpecial(Stella.$CONTEXT$, cxt000);
          environment = environment;
          synchronized (Logic.$POWERLOOM_LOCK$) {
            return (PLI.consToPlIterator(Logic.applyCachedRetrieve(Cons.list$(Cons.cons(PLI.SYM_PLI_pR, Cons.cons(PLI.SYM_PLI_pI, Cons.cons(PLI.SYM_PLI_pV, Cons.cons(Stella.NIL, Stella.NIL))))), Cons.list$(Cons.cons(PLI.SYM_PLI_pR, Cons.cons(PLI.SYM_PLI_pI, Cons.cons(PLI.SYM_PLI_pV, Cons.cons(Stella.NIL, Stella.NIL))))), Cons.consList(Cons.cons(relation, Cons.cons(arg, Cons.cons(null, Stella.NIL)))), Cons.consList(Stella.NIL), PLI.SYM_PLI_F_GET_INFERRED_BINARY_PROPOSITION_VALUES_QUERY_000, new Object[2])));
          }

        } finally {
          Stella.$CONTEXT$.set(old$Context$000);
          Stella.$MODULE$.set(old$Module$000);
        }
      }
    }
  }