public static TruePropositionsIterator allDirectlyLinkedSubcollections(Stella_Object self) {
    { LogicObject renamed_Object = null;
      TruthValue truthvalue = null;
      Iterator iterator = null;

      { Surrogate testValue000 = Stella_Object.safePrimaryType(self);

        if (testValue000 == Logic.SGT_STELLA_CONS) {
          { Cons self000 = ((Cons)(self));

            renamed_Object = ((LogicObject)(self000.value));
            truthvalue = ((TruthValue)(self000.rest.value));
          }
        }
        else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_LOGIC_OBJECT)) {
          { LogicObject self000 = ((LogicObject)(self));

            renamed_Object = self000;
          }
        }
        else {
          { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

            stream000.nativeStream.print("`" + testValue000 + "' is not a valid case option");
            throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
          }
        }
      }
      if (Stella_Object.isaP(renamed_Object, Logic.SGT_LOGIC_DESCRIPTION)) {
        Description.deriveDeferredSatelliteRules(((Description)(renamed_Object)));
      }
      iterator = Logic.allDirectlyLinkedObjects(renamed_Object, Logic.SGT_PL_KERNEL_KB_SUBSET_OF, !((Boolean)(Logic.$REVERSEPOLARITYp$.get())).booleanValue());
      if (Surrogate.subtypeOfP(Stella_Object.safePrimaryType(iterator), Logic.SGT_LOGIC_DIRECTLY_LINKED_OBJECTS_ITERATOR)) {
        { DirectlyLinkedObjectsIterator iterator000 = ((DirectlyLinkedObjectsIterator)(iterator));

          if (truthvalue != null) {
            iterator000.rootTruthValue = truthvalue;
          }
          return (iterator000);
        }
      }
      else {
        return (null);
      }
    }
  }