public static void retractSynonymDemon(Proposition self) {
    { Stella_Object term = Logic.valueOf((self.arguments.theArray)[0]);
      Stella_Object synonym = null;
      Surrogate synonymname = null;

      { Proposition prop = null;
        Iterator iter000 = Logic.allTrueDependentPropositions(term, Logic.SGT_PL_KERNEL_KB_SYNONYM, false);

        while (iter000.nextP()) {
          prop = ((Proposition)(iter000.value));
          synonym = Logic.valueOf((prop.arguments.theArray)[1]);
          if (Stella_Object.isaP(synonym, Logic.SGT_LOGIC_LOGIC_OBJECT)) {
            synonymname = ((LogicObject)(synonym)).surrogateValueInverse;
            synonymname.surrogateValue = synonym;
          }
          { Proposition object000 = prop;
            TruthValue value000 = null;
            Stella_Object oldValue000 = object000.truthValue;
            Stella_Object newValue000 = Stella_Object.updateInContext(oldValue000, value000, object000.homeContext, false);

            if (!((oldValue000 != null) &&
                (oldValue000.primaryType() == Logic.SGT_STELLA_CS_VALUE))) {
              object000.truthValue = newValue000;
            }
          }
        }
      }
    }
  }