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

    try {

      // List containing null is coerced to list containing NIL.
      String script = "(put-api-user-variable 'a '(nil 1))";
      Object responseObject = cycAccess.converseObject(script);
      assertEquals(nil, responseObject);

      script = "(get-api-user-variable 'a)";

      CycList responseList = cycAccess.converseList(script);
      assertEquals(cycAccess.makeCycList("(nil 1)"), responseList);

      if (!cycAccess.isOpenCyc()) {
        // rkfPhraseReader
        CycFort rkfEnglishLexicalMicrotheoryPsc = cycAccess.getKnownConstantByGuid(
                "bf6df6e3-9c29-11b1-9dad-c379636f7270");
        String text = "penguins";
        CycList parseExpressions = cycAccess.rkfPhraseReader(
                text,
                rkfEnglishLexicalMicrotheoryPsc,
                (CycFort)CycAccess.inferencePSC);
        CycList parseExpression = (CycList) parseExpressions.first();
        CycList spanExpression = (CycList) parseExpression.first();
        CycList terms = (CycList) parseExpression.second();

        // #$Penguin
        CycFort penguin = cycAccess.getKnownConstantByGuid(PENGUIN_GUID_STRING);
        assertTrue(terms.contains(penguin));

        // #$PittsburghPenguins
        CycFort pittsburghPenguins = cycAccess.getKnownConstantByGuid(
                PITTSBURGH_PENGUINS_GUID_STRING);
        assertTrue(terms.contains(pittsburghPenguins));

        // generateDisambiguationPhraseAndTypes
        CycList objects = new CycList();
        objects.add(penguin);
        objects.add(pittsburghPenguins);

        CycList disambiguationExpression = cycAccess.generateDisambiguationPhraseAndTypes(
                objects);
        System.out.println("disambiguationExpression\n" + disambiguationExpression);
        assertEquals(2, disambiguationExpression.size());

        CycList penguinDisambiguationExpression = (CycList) disambiguationExpression.first();
        System.out.println("penguinDisambiguationExpression\n" + penguinDisambiguationExpression);
        assertTrue(penguinDisambiguationExpression.contains("penguin"));

        CycList pittsburghPenguinDisambiguationExpression =
                (CycList) disambiguationExpression.second();
        System.out.println("pittsburghPenguinDisambiguationExpression\n" + pittsburghPenguinDisambiguationExpression);
        assertTrue(pittsburghPenguinDisambiguationExpression.contains("the Pittsburgh Penguins"));
        assertTrue(pittsburghPenguinDisambiguationExpression.contains("ice hockey team"));
      }
    } catch (Throwable e) {
      e.printStackTrace();
      fail(e.toString());
    }

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