* @return Cons
   */
  public Cons remove(Stella_Object value) {
    { Cons self = this;

      { Cons cons = self;
        Cons previouscons = null;

        if (!(cons == Stella.NIL)) {
          if (!(cons.rest == Stella.NIL)) {
            previouscons = cons;
            cons = cons.rest;
            while (!(cons == Stella.NIL)) {
              if (Stella_Object.eqlP(cons.value, value)) {
                {
                  previouscons.rest = cons.rest;
                  cons = cons.rest;
                }
              }
              else {
                {
                  previouscons = cons;
                  cons = cons.rest;
                }
              }
            }
          }
          if (Stella_Object.eqlP(self.value, value)) {
            if (self.rest == Stella.NIL) {
              return (Stella.NIL);
            }
            cons = self.rest;
            self.value = cons.value;
            self.rest = cons.rest;
          }
        }
        return (self);
      }
    }
  }