public static Cons normalizeDefconceptArguments(Cons arguments) {
    { Stella_Object name = arguments.value;
      Cons parameters = null;
      Symbol selfvariable = Logic.SYM_LOGIC_pSELF;
      Cons supers = Stella.NIL;
      Cons impliesrules = Stella.NIL;

      if (!(Stella_Object.symbolP(name))) {
        { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

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

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

            } finally {
              Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
            }
          }
          throw ((PropositionError)(PropositionError.newPropositionError(stream000.theStringReader()).fillInStackTrace()));
        }
      }
      if (Stella_Object.consP(arguments.rest.value)) {
        parameters = ((Cons)(arguments.rest.value));
      }
      if (parameters != null) {
        if (Stella_Object.consP(parameters.value)) {
          parameters = ((Cons)(parameters.value));
        }
        if (parameters == Stella.NIL) {
          supers = Stella.NIL;
        }
        else if (Logic.questionMarkSymbolP(parameters.value)) {
          selfvariable = ((Symbol)(parameters.value));
          supers = parameters.rest;
        }
        else if (Stella_Object.symbolP(parameters.value)) {
          supers = parameters;
        }
        else {
          { OutputStringStream stream001 = OutputStringStream.newOutputStringStream();

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

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                stream001.nativeStream.println("ERROR: Illegal parameter list: `" + arguments.rest.value + "'.");
                Logic.helpSignalPropositionError(stream001, Logic.KWD_ERROR);

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$001);
              }
            }
            throw ((PropositionError)(PropositionError.newPropositionError(stream001.theStringReader()).fillInStackTrace()));
          }
        }
        { Stella_Object renamed_Super = null;
          Cons iter000 = supers;

          for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
            renamed_Super = iter000.value;
            impliesrules = Cons.cons(Logic.KWD_eg, impliesrules);
            impliesrules = Cons.cons(Cons.cons(renamed_Super, Cons.cons(selfvariable, Stella.NIL)), impliesrules);
          }
        }
        impliesrules = impliesrules.reverse();
        arguments.rest = Cons.cons(Cons.cons(Cons.cons(selfvariable, Cons.cons(name, Stella.NIL)), Stella.NIL), impliesrules.concatenate(arguments.rest.rest.concatenate(Stella.NIL, Stella.NIL), Stella.NIL));
      }
      else if (arguments.rest == Stella.NIL) {
        arguments.rest = Cons.cons(Cons.cons(Cons.cons(selfvariable, Cons.cons(name, Stella.NIL)), Stella.NIL), Stella.NIL);
      }
      else if (Stella_Object.keywordP(arguments.rest.value)) {
        arguments.rest.rest = Cons.cons(arguments.rest.value, arguments.rest.rest.concatenate(Stella.NIL, Stella.NIL));
        arguments.secondSetter(Cons.cons(Cons.cons(selfvariable, Cons.cons(name, Stella.NIL)), Stella.NIL));
      }
      return (arguments);
    }
  }