type
  TEventCount = class
  private
  protected
  public
    constructor Create;
    destructor Destroy; override;
    function Advance: integer;
    function Read: integer;
    procedure Await(WaitCount: integer);
  published
  end;

  TSequencer = class
  private
  protected
  public
    constructor Create;
    destructor Destroy; override;
    function Ticket: integer;
  published
  end;