public static void parseOneVariableDeclaration(Stella_Object vdec, List localdeclarations) {
    { Symbol variablename = null;
      Cons isatree = null;
      PatternVariable variable = null;

      { Surrogate testValue000 = Stella_Object.safePrimaryType(vdec);

        if (testValue000 == Logic.SGT_STELLA_CONS) {
          { Cons vdec000 = ((Cons)(vdec));

            variablename = ((Symbol)(vdec000.rest.value));
            isatree = vdec000;
          }
        }
        else if (Surrogate.subtypeOfSymbolP(testValue000)) {
          { Symbol vdec000 = ((Symbol)(vdec));

            variablename = vdec000;
          }
        }
        else {
          { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

            stream000.nativeStream.print("`" + testValue000 + "' is not a valid case option");
            throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
          }
        }
      }
      { PatternVariable v = null;
        Cons iter000 = localdeclarations.theConsList;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          v = ((PatternVariable)(iter000.value));
          if (v.skolemName == variablename) {
            variable = v;
          }
        }
      }
      if (variable == null) {
        variable = Logic.createVariable(null, variablename, true);
      }
      Skolem.pushLogicVariableBinding(variable);
      localdeclarations.insertLast(variable);
      if (isatree != null) {
        { Proposition proposition = Logic.buildTopLevelProposition(isatree, false);

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

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

                try {
                  Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                  stream001.nativeStream.println("ERROR: Error in declarations.");
                  Logic.helpSignalPropositionError(stream001, Logic.KWD_ERROR);

                } finally {
                  Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
                }
              }
              throw ((PropositionError)(PropositionError.newPropositionError(stream001.theStringReader()).fillInStackTrace()));
            }
          }
          if (proposition.kind == Logic.KWD_ISA) {
            KeyValueList.setDynamicSlotValue(proposition.dynamicSlots, Logic.SYM_LOGIC_VARIABLE_TYPEp, Stella.TRUE_WRAPPER, null);
            Skolem.updateSkolemType(((Skolem)((proposition.arguments.theArray)[0])), ((Surrogate)(proposition.operator)));
            Native.setSpecial(Logic.$VARIABLETYPEPROPOSITIONS$, Cons.cons(proposition, ((Cons)(Logic.$VARIABLETYPEPROPOSITIONS$.get()))));
          }
        }
      }
    }
  }