public static Iterator allClashingPropositions(Proposition self) {
    { Vector arguments = self.arguments;
      Stella_Object lastarg = arguments.last();
      Stella_Object backlinkedarg = null;

      arguments.lastSetter(null);
      backlinkedarg = Proposition.selectArgumentWithBacklinks(self, new Object[1]);
      arguments.lastSetter(lastarg);
      if (backlinkedarg == null) {
        return (Logic.EMPTY_PROPOSITIONS_ITERATOR);
      }
      { Cons pattern = Cons.cons(Logic.KWD_RELATION, Cons.cons(((Stella.NIL == null) ? Stella.NIL : Stella.NIL), Cons.cons(((Surrogate)(self.operator)), Cons.cons(Logic.valueOf(backlinkedarg), Stella.NIL))));
        SequenceIndex index = Logic.selectPropositions(pattern);

        if (SequenceIndex.emptyPropositionsIndexP(index, backlinkedarg, false)) {
          return (Logic.EMPTY_PROPOSITIONS_ITERATOR);
        }
        { ClashingPropositionsIterator self000 = ClashingPropositionsIterator.newClashingPropositionsIterator();

          self000.selectionPattern = pattern;
          self000.propositionCursor = index.allocateIterator();
          self000.referenceProposition = self;
          { ClashingPropositionsIterator value000 = self000;

            return (value000);
          }
        }
      }
    }
  }