public static void unfinalizeClassAndSubclasses(Stella_Class renamed_Class) {
    if (!renamed_Class.classFinalizedP) {
      return;
    }
    Stella_Class.removeDirectSupersBackLinks(renamed_Class);
    { List subs = renamed_Class.classDirectSubs.copy();

      { Surrogate subtype = null;
        Cons iter000 = subs.theConsList;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          subtype = ((Surrogate)(iter000.value));
          if (((Stella_Class)(subtype.surrogateValue)) != null) {
            Stella_Class.unfinalizeClassAndSubclasses(((Stella_Class)(subtype.surrogateValue)));
          }
        }
      }
      subs.free();
    }
    { Surrogate alias = null;
      Cons iter001 = renamed_Class.classSynonyms().theConsList;

      for (;!(iter001 == Stella.NIL); iter001 = iter001.rest) {
        alias = ((Surrogate)(iter001.value));
        if (((Stella_Class)(alias.surrogateValue)) == renamed_Class) {
          alias.surrogateValue = null;
        }
      }
    }
    Stella_Class.uninheritSuperclasses(renamed_Class);
    Stella_Class.unfinalizeClassSlots(renamed_Class);
    Stella_Class.rememberUnfinalizedClass(renamed_Class, false);
    renamed_Class.classFinalizedP = false;
  }