protected void doTestCycAccess6(CycAccess cycAccess) {
    long startMilliseconds = System.currentTimeMillis();

    // Test sending a constant to Cyc.
    try {
      CycList command = new CycList();
      command.add(makeCycSymbol("identity"));
      command.add(collection);

      Object obj = cycAccess.converseObject(command);
      assertNotNull(obj);
      assertTrue(obj instanceof CycConstant);
      assertEquals(obj, collection);
    } catch (Throwable e) {
      fail(e.toString());
    }

    // Test isBackchainRequired, isBackchainEncouraged, isBackchainDiscouraged, isBackchainForbidden
    try {
      if (!cycAccess.isOpenCyc()) {
        CycConstant keRequirement = cycAccess.getKnownConstantByGuid(
                KE_REQUIREMENT_GUID_STRING);
        assertTrue(cycAccess.isBackchainRequired(keRequirement, baseKB));
        assertTrue(!cycAccess.isBackchainEncouraged(keRequirement, baseKB));
        assertTrue(!cycAccess.isBackchainDiscouraged(keRequirement, baseKB));
        assertTrue(!cycAccess.isBackchainForbidden(keRequirement, baseKB));

        CycConstant nearestIsa = cycAccess.getKnownConstantByGuid(NEAREST_ISA_GUID_STRING);
        assertTrue(!cycAccess.isBackchainRequired(nearestIsa, baseKB));
        assertTrue(!cycAccess.isBackchainEncouraged(nearestIsa, baseKB));
        assertTrue(!cycAccess.isBackchainDiscouraged(nearestIsa, baseKB));
        assertTrue(cycAccess.isBackchainForbidden(nearestIsa, baseKB));
      }
    } catch (Throwable e) {
      e.printStackTrace();
      fail(e.toString());
    }

    // isWellFormedFormula
    try {
      assertTrue(cycAccess.isWellFormedFormula(cycAccess.makeCycSentence(
              "(#$genls #$Dog #$Animal)")));


      // Not true, but still well formed.
      assertTrue(cycAccess.isWellFormedFormula(cycAccess.makeCycSentence(
              "(#$genls #$Dog #$Plant)")));
      assertTrue(cycAccess.isWellFormedFormula(cycAccess.makeCycSentence(
              "(#$genls ?X #$Animal)")));
      assertTrue(!cycAccess.isWellFormedFormula(
              cycAccess.makeCycSentence("(#$genls #$Dog #$Brazil)")));
      assertTrue(!cycAccess.isWellFormedFormula(
              cycAccess.makeCycSentence("(#$genls ?X #$Brazil)")));
    } catch (Throwable e) {
      e.printStackTrace();
      fail(e.toString());
    }

    // isEvaluatablePredicate
    try {
      assertTrue(cycAccess.isEvaluatablePredicate(different));

      CycConstant doneBy = cycAccess.getKnownConstantByGuid(DONE_BY_GUID_STRING);
      assertTrue(!cycAccess.isEvaluatablePredicate(
              doneBy));
    } catch (Throwable e) {
      e.printStackTrace();
      fail(e.toString());
    }

    // hasSomePredicateUsingTerm
    try {
      if (!cycAccess.isOpenCyc()) {
        CycConstant algeria = cycAccess.getKnownConstantByGuid(
                ALGERIA_GUID_STRING);
        CycConstant percentOfRegionIs = cycAccess.getKnownConstantByGuid(
                PERCENT_OF_REGION_IS_GUID_STRING);
        CycConstant ciaWorldFactbook1995Mt = cycAccess.getKnownConstantByGuid(
                CIA_WORLD_FACTBOOK_1995_MT_GUID_STRING);

        assertTrue(cycAccess.hasSomePredicateUsingTerm(
                percentOfRegionIs,
                algeria,
                1,
                ciaWorldFactbook1995Mt));

        assertTrue(cycAccess.hasSomePredicateUsingTerm(
                percentOfRegionIs,
                algeria,
                1,
                CycAccess.inferencePSC));
        assertTrue(!cycAccess.hasSomePredicateUsingTerm(
                percentOfRegionIs,
                algeria,
                2,
                ciaWorldFactbook1995Mt));
      }
    } catch (Throwable e) {
      e.printStackTrace();
      fail(e.toString());
    }

    // Test common constants.
    try {
      assertEquals(cycAccess.getConstantByName("and"), and);
      assertEquals(cycAccess.getConstantByName("BaseKB"), baseKB);
      assertEquals(cycAccess.getConstantByName("BinaryPredicate"), binaryPredicate);
      assertEquals(cycAccess.getConstantByName("comment"), comment);
      assertEquals(cycAccess.getConstantByName("different"), different);
      assertEquals(cycAccess.getConstantByName("elementOf"), elementOf);
      assertEquals(cycAccess.getConstantByName("genlMt"), genlMt);
      assertEquals(cycAccess.getConstantByName("genls"), genls);
      assertEquals(cycAccess.getConstantByName("isa"), isa);
      assertEquals(cycAccess.getConstantByName("numericallyEquals"), numericallyEqual);
      assertEquals(cycAccess.getConstantByName("or"), or);
      assertEquals(cycAccess.getConstantByName("PlusFn"), plusFn);

      resetCycConstantCaches();

      assertEquals(cycAccess.getConstantByName("and"), and);
      assertEquals(cycAccess.getConstantByName("BaseKB"), baseKB);
      assertEquals(cycAccess.getConstantByName("BinaryPredicate"), binaryPredicate);
      assertEquals(cycAccess.getConstantByName("comment"), comment);
      assertEquals(cycAccess.getConstantByName("different"), different);
      assertEquals(cycAccess.getConstantByName("elementOf"), elementOf);
      assertEquals(cycAccess.getConstantByName("genlMt"), genlMt);
      assertEquals(cycAccess.getConstantByName("genls"), genls);
      assertEquals(cycAccess.getConstantByName("isa"), isa);
      assertEquals(cycAccess.getConstantByName("numericallyEquals"), numericallyEqual);
      assertEquals(cycAccess.getConstantByName("or"), or);
      assertEquals(cycAccess.getConstantByName("PlusFn"), plusFn);
    } catch (Throwable e) {
      fail(e.toString());
    }

    long endMilliseconds = System.currentTimeMillis();
    System.out.println("  " + (endMilliseconds - startMilliseconds) + " milliseconds");
  }