// End.
		
		
        private void process(Filter.Step step)
        {
            Type type = typeof(Filter);
            // this prohibit debugging
            /* 
            MethodInfo Filtermethod = type.GetMethod(step.ToString());
            Filtermethod.Invoke(null, new object[]{state});
             */
            DateTime ExecutionStartTime;
            DateTime ExecutionStopTime;
            TimeSpan ExecutionTime;
            ExecutionStartTime = DateTime.Now;

            switch (step)
            {
                case Filter.Step.CopyColor:
                    Filter.CopyColor(state);
                    break;
                case Filter.Step.PaintWhite:
                    Filter.PaintWhite(state);
                    break;
                case Filter.Step.PaintGreen:
                    Filter.PaintGreen(state);
                    break;
                case Filter.Step.CopyDepth:
                    Filter.CopyDepth(state);
                    break;
                case Filter.Step.Crop:
                    Filter.Crop(state);
                    break;
                case Filter.Step.MatchColors:
                    Filter.MatchColors(state);
                    break;
                case Filter.Step.ShowOverlay:
                    Filter.ShowOverlay(state);
                    break;
                case Filter.Step.EnableFeatureExtract:
                    Filter.EnableFeatureExtract(state);
                    break;
                case Filter.Step.FeatureExtractOnEnable:
                    Filter.FeatureExtractOnEnable(state);
                    break;
                case Filter.Step.EnablePredict:
                    Filter.EnablePredict(state);
                    break;
                case Filter.Step.PerPixelClassificationOnEnable:
                    Filter.PerPixelClassificationOnEnable(state);
                    break;
                case Filter.Step.PoolingOnPerPixelClassification:
                    Filter.PoolingOnPerPixelClassification(state);
                    break;
                case Filter.Step.RestoreBitmap:
                    Filter.RestoreBitmap(state);
                    break;
                case Filter.Step.CheckpointCurrentBitmap:
                    Filter.CheckpointCurrentBitmap(state);
                    break;
            
            }
            ExecutionStopTime = DateTime.Now;
            ExecutionTime = ExecutionStopTime - ExecutionStartTime;
            Console.WriteLine("Use {0} ms for step: {1}", ExecutionTime.TotalMilliseconds.ToString(), step.ToString());            
        }
        // End.
		
		
        private void process(Filter.Step step)
        {
            Type type = typeof(Filter);
            MethodInfo Filtermethod = type.GetMethod(step.ToString());
            Filtermethod.Invoke(null, new object[]{state});
        }