public static Proposition buildIsaProposition(Cons tree) {
    Logic.verifyNumberOfPropositionArguments(tree, 2);
    { Proposition proposition = Logic.createProposition(Logic.SYM_STELLA_ISA, 1);
      Surrogate type = null;
      Stella_Object symbol = tree.rest.rest.value;

      { Surrogate testValue000 = Stella_Object.safePrimaryType(symbol);

        if (Surrogate.subtypeOfSurrogateP(testValue000)) {
          { Surrogate symbol000 = ((Surrogate)(symbol));

            type = symbol000;
          }
        }
        else if (Surrogate.subtypeOfSymbolP(testValue000)) {
          { Symbol symbol000 = ((Symbol)(symbol));

            type = Symbol.symbolToSurrogate(symbol000);
          }
        }
        else {
          { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

            { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                stream000.nativeStream.println("ERROR: Illegal token where symbol expected: `" + symbol + "'.");
                Logic.helpSignalPropositionError(stream000, Logic.KWD_ERROR);

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
              }
            }
            throw ((PropositionError)(PropositionError.newPropositionError(stream000.theStringReader()).fillInStackTrace()));
          }
        }
      }
      { NamedDescription renamed_Class = Logic.getDescription(type);

        if (renamed_Class == null) {
          { OutputStringStream stream001 = OutputStringStream.newOutputStringStream();

            { Object old$PrintreadablyP$001 = Stella.$PRINTREADABLYp$.get();

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                stream001.nativeStream.println("ERROR: No class is associated with the term `" + type.symbolName + "'.");
                Logic.helpSignalPropositionError(stream001, Logic.KWD_ERROR);

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$001);
              }
            }
            throw ((PropositionError)(PropositionError.newPropositionError(stream001.theStringReader()).fillInStackTrace()));
          }
        }
        if (!NamedDescription.classDescriptionP(renamed_Class)) {
          { OutputStringStream stream002 = OutputStringStream.newOutputStringStream();

            { Object old$PrintreadablyP$002 = Stella.$PRINTREADABLYp$.get();

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                stream002.nativeStream.println("ERROR: Term `" + type.symbolName + "' found where class expected..");
                Logic.helpSignalPropositionError(stream002, Logic.KWD_ERROR);

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$002);
              }
            }
            throw ((PropositionError)(PropositionError.newPropositionError(stream002.theStringReader()).fillInStackTrace()));
          }
        }
      }
      proposition.operator = type;
      (proposition.arguments.theArray)[0] = (Logic.evaluateTypedArgument(tree.rest.value, type));
      return (proposition);
    }
  }