public static void materializePrimitiveDescriptionBody(NamedDescription description) {
    { boolean nativeP = description.nativeRelation() != null;
      Symbol name = (nativeP ? Symbol.internSymbolInModule(description.nativeRelation().name(), description.nativeRelation().homeModule(), true) : description.descriptionName());
      List variabletypes = description.ioVariableTypes;
      int arity = variabletypes.length();
      Cons tree = null;
      Cons variables = Stella.NIL;
      Cons arguments = Stella.NIL;

      { IntegerIntervalIterator i = Stella.interval(1, arity);
        Symbol name000 = null;
        Cons iter000 = Logic.SYSTEM_DEFINED_ARGUMENT_NAMES;
        Cons collect000 = null;

        for (;i.nextP() &&
                  (!(iter000 == Stella.NIL)); iter000 = iter000.rest) {
          name000 = ((Symbol)(iter000.value));
          if (collect000 == null) {
            {
              collect000 = Cons.cons(name000, Stella.NIL);
              if (variables == Stella.NIL) {
                variables = collect000;
              }
              else {
                Cons.addConsToEndOfConsList(variables, collect000);
              }
            }
          }
          else {
            {
              collect000.rest = Cons.cons(name000, Stella.NIL);
              collect000 = collect000.rest;
            }
          }
        }
      }
      arguments = Cons.copyConsList(variables);
      if (nativeP &&
          (arity > 1)) {
        variables.firstSetter(Cons.list$(Cons.cons(Logic.SYM_STELLA_ISA, Cons.cons(variables.value, Cons.cons(Cons.cons(Surrogate.typeToSymbol(((Surrogate)(variabletypes.first()))), Stella.NIL), Stella.NIL)))));
      }
      tree = Cons.list$(Cons.cons(Logic.SYM_LOGIC_KAPPA, Cons.cons(variables, Cons.cons(Cons.cons(Cons.cons(name, arguments.concatenate(Stella.NIL, Stella.NIL)), Stella.NIL), Stella.NIL))));
      { Object old$LogicDialect$000 = Logic.$LOGIC_DIALECT$.get();
        Object old$Logicvariabletable$000 = Logic.$LOGICVARIABLETABLE$.get();
        Object old$Termunderconstruction$000 = Logic.$TERMUNDERCONSTRUCTION$.get();
        Object old$Evaluationmode$000 = Logic.$EVALUATIONMODE$.get();
        Object old$Context$000 = Stella.$CONTEXT$.get();

        try {
          Native.setSpecial(Logic.$LOGIC_DIALECT$, Logic.KWD_KIF);
          Native.setSpecial(Logic.$LOGICVARIABLETABLE$, Stella.NIL);
          Native.setSpecial(Logic.$TERMUNDERCONSTRUCTION$, tree);
          Native.setSpecial(Logic.$EVALUATIONMODE$, Logic.KWD_DESCRIPTION);
          Native.setSpecial(Stella.$CONTEXT$, description.homeContext);
          { Description sacrificialdescription = Logic.evaluateDescriptionTerm(tree, false);

            description.ioVariables = sacrificialdescription.ioVariables;
            description.proposition = sacrificialdescription.proposition;
            sacrificialdescription.deletedPSetter(true);
          }

        } finally {
          Stella.$CONTEXT$.set(old$Context$000);
          Logic.$EVALUATIONMODE$.set(old$Evaluationmode$000);
          Logic.$TERMUNDERCONSTRUCTION$.set(old$Termunderconstruction$000);
          Logic.$LOGICVARIABLETABLE$.set(old$Logicvariabletable$000);
          Logic.$LOGIC_DIALECT$.set(old$LogicDialect$000);
        }
      }
    }
  }