// Path: src/performance/java/com/lmax/disruptor/support/FunctionEvent.java
// public final class FunctionEvent
// {
//     private long operandOne;
//     private long operandTwo;
//     private long stepOneResult;
//     private long stepTwoResult;
// 
//     public long getOperandOne()
//     {
//         return operandOne;
//     }
// 
//     public void setOperandOne(final long operandOne)
//     {
//         this.operandOne = operandOne;
//     }
// 
//     public long getOperandTwo()
//     {
//         return operandTwo;
//     }
// 
//     public void setOperandTwo(final long operandTwo)
//     {
//         this.operandTwo = operandTwo;
//     }
// 
//     public long getStepOneResult()
//     {
//         return stepOneResult;
//     }
// 
//     public void setStepOneResult(final long stepOneResult)
//     {
//         this.stepOneResult = stepOneResult;
//     }
// 
//     public long getStepTwoResult()
//     {
//         return stepTwoResult;
//     }
// 
//     public void setStepTwoResult(final long stepTwoResult)
//     {
//         this.stepTwoResult = stepTwoResult;
//     }
// 
//     public final static EventFactory<FunctionEvent> EVENT_FACTORY = new EventFactory<FunctionEvent>()
//     {
//         public FunctionEvent newInstance()
//         {
//             return new FunctionEvent();
//         }
//     };
// }


import com.lmax.disruptor.support.FunctionEvent;
import com.lmax.disruptor.support.FunctionEventHandler;
import com.lmax.disruptor.support.FunctionQueueProcessor;
import com.lmax.disruptor.support.FunctionStep;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.*;

        for (long i = 0; i < ITERATIONS; i++)
        {
            long stepOneResult = i + operandTwo--;
            long stepTwoResult = stepOneResult + 3;

            if ((stepTwoResult & 4L) == 4L)
            {
                ++temp;
            }
        }

        expectedResult = temp;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////

    private final BlockingQueue<long[]> stepOneQueue = new LinkedBlockingQueue<long[]>(BUFFER_SIZE);
    private final BlockingQueue<Long> stepTwoQueue = new LinkedBlockingQueue<Long>(BUFFER_SIZE);
    private final BlockingQueue<Long> stepThreeQueue = new LinkedBlockingQueue<Long>(BUFFER_SIZE);

    private final FunctionQueueProcessor stepOneQueueProcessor =
        new FunctionQueueProcessor(FunctionStep.ONE, stepOneQueue, stepTwoQueue, stepThreeQueue, ITERATIONS - 1);
    private final FunctionQueueProcessor stepTwoQueueProcessor =
        new FunctionQueueProcessor(FunctionStep.TWO, stepOneQueue, stepTwoQueue, stepThreeQueue, ITERATIONS - 1);
    private final FunctionQueueProcessor stepThreeQueueProcessor =
        new FunctionQueueProcessor(FunctionStep.THREE, stepOneQueue, stepTwoQueue, stepThreeQueue, ITERATIONS - 1);

    ///////////////////////////////////////////////////////////////////////////////////////////////

// Path: src/performance/java/com/lmax/disruptor/support/FunctionEvent.java
// public final class FunctionEvent
// {
//     private long operandOne;
//     private long operandTwo;
//     private long stepOneResult;
//     private long stepTwoResult;
// 
//     public long getOperandOne()
//     {
//         return operandOne;
//     }
// 
//     public void setOperandOne(final long operandOne)
//     {
//         this.operandOne = operandOne;
//     }
// 
//     public long getOperandTwo()
//     {
//         return operandTwo;
//     }
// 
//     public void setOperandTwo(final long operandTwo)
//     {
//         this.operandTwo = operandTwo;
//     }
// 
//     public long getStepOneResult()
//     {
//         return stepOneResult;
//     }
// 
//     public void setStepOneResult(final long stepOneResult)
//     {
//         this.stepOneResult = stepOneResult;
//     }
// 
//     public long getStepTwoResult()
//     {
//         return stepTwoResult;
//     }
// 
//     public void setStepTwoResult(final long stepTwoResult)
//     {
//         this.stepTwoResult = stepTwoResult;
//     }
// 
//     public final static EventFactory<FunctionEvent> EVENT_FACTORY = new EventFactory<FunctionEvent>()
//     {
//         public FunctionEvent newInstance()
//         {
//             return new FunctionEvent();
//         }
//     };
// }


// Path: src/performance/java/com/lmax/disruptor/OnePublisherToThreeProcessorPipelineThroughputTest.java
import com.lmax.disruptor.support.FunctionEvent;
import com.lmax.disruptor.support.FunctionEventHandler;
import com.lmax.disruptor.support.FunctionQueueProcessor;
import com.lmax.disruptor.support.FunctionStep;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.*;


        for (long i = 0; i < ITERATIONS; i++)
        {
            long stepOneResult = i + operandTwo--;
            long stepTwoResult = stepOneResult + 3;

            if ((stepTwoResult & 4L) == 4L)
            {
                ++temp;
            }
        }

        expectedResult = temp;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////

    private final BlockingQueue<long[]> stepOneQueue = new LinkedBlockingQueue<long[]>(BUFFER_SIZE);
    private final BlockingQueue<Long> stepTwoQueue = new LinkedBlockingQueue<Long>(BUFFER_SIZE);
    private final BlockingQueue<Long> stepThreeQueue = new LinkedBlockingQueue<Long>(BUFFER_SIZE);

    private final FunctionQueueProcessor stepOneQueueProcessor =
        new FunctionQueueProcessor(FunctionStep.ONE, stepOneQueue, stepTwoQueue, stepThreeQueue, ITERATIONS - 1);
    private final FunctionQueueProcessor stepTwoQueueProcessor =
        new FunctionQueueProcessor(FunctionStep.TWO, stepOneQueue, stepTwoQueue, stepThreeQueue, ITERATIONS - 1);
    private final FunctionQueueProcessor stepThreeQueueProcessor =
        new FunctionQueueProcessor(FunctionStep.THREE, stepOneQueue, stepTwoQueue, stepThreeQueue, ITERATIONS - 1);

    ///////////////////////////////////////////////////////////////////////////////////////////////

    private final RingBuffer<FunctionEvent> ringBuffer =