///////////////////////////////////////////////////////////////////
            // __use__.snippet.snippet.noop - [(__use__.snippet.snippet.expr1 - __use__.snippet.snippet.join)(__use__.snippet.snippet.expr0 - &__use__.snippet.snippet.join)(__use__.snippet.snippet.expr - &__use__.snippet.snippet.join)] - __use__.snippet.call - __use__.snippet.call.iftype
            ///////////////////////////////////////////////////////////////////

            public IEnumerator <ccr.ITask> RunHandler(DriveRequest message, dssp.DsspResponsePort <DriveResponse> responsePort)
            {
                _responsePort = responsePort;
                Increment();

                drive.DriveDistanceRequest request = new drive.DriveDistanceRequest();
                request.DriveDistanceStage = Microsoft.Robotics.Services.Drive.Proxy.DriveStage.InitialRequest;
                request.Power    = message.Power;
                request.Distance = message.Distance;

                Increment();
                Activate(
                    ccr.Arbiter.Choice(
                        GenericDifferentialDrivePort.DriveDistance(request),
                        OnDriveDistanceSuccess,
                        delegate(soap.Fault fault)
                {
                    base.FaultHandler(fault, @"GenericDifferentialDrivePort.DriveDistance(request)");
                    Decrement();
                }
                        )
                    );

                Decrement();

                yield return(WaitUntilComplete());
            }
        public dssp.DsspResponsePort <DriveResponse> Drive(DriveRequest body)
        {
            Drive message = new Drive();

            message.Body = body;

            this.Post(message);

            return(message.ResponsePort);
        }