public boolean skipAndClauseP(ControlFrame frame, Cons forbiddenvars) {
    { WhynotPartialMatch self = this;

      { boolean forbiddenvarsP = !(forbiddenvars == Stella.NIL);
        Proposition conjunct = ((Proposition)((frame.proposition.arguments.theArray)[(frame.argumentCursor)]));

        { boolean testValue000 = false;

          testValue000 = forbiddenvarsP;
          if (testValue000) {
            { boolean foundP000 = false;

              { Stella_Object var = null;
                Cons iter000 = Proposition.getUnboundVariables(conjunct);

                loop000 : for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
                  var = iter000.value;
                  if (forbiddenvars.memberP(var)) {
                    foundP000 = true;
                    break loop000;
                  }
                }
              }
              testValue000 = foundP000;
            }
          }
          if (!testValue000) {
            testValue000 = Proposition.dynamicallyEstimateGoalFanout(conjunct) > self.maxUnconstrainedFanout();
          }
          if (testValue000) {
            { ControlFrame result = ControlFrame.createDownFrame(frame, conjunct);

              ControlFrame.setFrameTruthValue(result, Logic.UNKNOWN_TRUTH_VALUE);
              if (result.partialMatchFrame == null) {
                ControlFrame.createAndLinkPartialMatchFrame(result, null);
              }
              result.partialMatchFrame.setFramePartialTruth(Logic.UNKNOWN_TRUTH_VALUE, 0.0, Stella.NULL_FLOAT, true);
              { PrimitiveStrategy self001 = PrimitiveStrategy.newPrimitiveStrategy();

                self001.inferenceRule = Logic.KWD_SKIPPED_CONJUNCT;
                self001.strategy = Logic.KWD_FAILURE;
                ControlFrame.recordGoalJustification(result, self001);
              }
              result.state = Logic.KWD_POPPED;
              (((Vector)(KeyValueList.dynamicSlotValue(frame.dynamicSlots, Logic.SYM_STELLA_ARGUMENTS, null))).theArray)[(frame.argumentCursor)] = result;
              frame.result = result;
              if (Stella_Object.traceKeywordP(Logic.KWD_GOAL_TREE)) {
                System.out.println("*** Skipping clause " + conjunct);
              }
              return (true);
            }
          }
        }
        return (false);
      }
    }
  }