Просто пример, который делал для чата.

## Код:
```
MODULE ListsObxOp;

   IMPORT ListsOp, Rnd := ObxRandom, Log;

   TYPE
      MyData = POINTER TO RECORD
         x: INTEGER
      END;

      MyAddOp = RECORD (ListsOp.AddOp)
         this*: MyData
      END;

      MyForEachOp = RECORD (ListsOp.ForEachOp)
         this*: MyData
      END;

   PROCEDURE (VAR op: MyForEachOp) Do (OUT break: BOOLEAN);
   BEGIN
      Log.Int(op.this.x); Log.Ln;
   END Do;

   PROCEDURE Test*;
      VAR
         i: INTEGER;
         list: ListsOp.List;
         addOperation: MyAddOp;
         forEachOperation: MyForEachOp;
   BEGIN
      list := ListsOp.New();
      i := 0;
      WHILE i < 10 DO
         NEW(addOperation.this);
         addOperation.this.x := SHORT(ENTIER(Rnd.Uniform() * 5000));
         list.Do(addOperation);
         INC(i);
      END;
      list.Do(forEachOperation)
   END Test;

END ListsObxOp.

 ListsObxOp.Test
```
