public VirtualMachineResult <T> Start <T>(string nazwaMetody, params object[] parametet)
        {
            Thread = new ThreadOfControl()
            {
                WirtualnaMaszyna = this
            };
            start(nazwaMetody, parametet);
            if (Thread.Status == VirtualMachineState.Hibernated)
            {
                return(new VirtualMachineResult <T>()
                {
                    State = Thread.Status
                });
            }

            T ret;

            if (typeof(T) == typeof(bool))
            {
                dynamic r = Thread.Result;
                ret = Convert.ToBoolean(r);
            }
            else
            {
                ret = (T)Thread.Result;
            }
            var result = new VirtualMachineResult <T>()
            {
                State = Thread.Status, Result = ret
            };

            return(result);
        }
        public VirtualMachineResult <T> Resume <T>(object hibernateResumeParameter = null)
        {
            Thread.AktualnaMetoda.PushObject(hibernateResumeParameter);
            Thread.AktualnaMetoda.NumerWykonywanejInstrukcji++;
            Thread.Status = VirtualMachineState.Executing;
            Thread.AktualnaMetoda.CzyWykonywacInstrukcje = true;

            Thread.Execute();
            if (Thread.Status == VirtualMachineState.Hibernated)
            {
                return(new VirtualMachineResult <T>()
                {
                    State = Thread.Status
                });
            }

            var ret    = (T)Thread.Result;
            var result = new VirtualMachineResult <T>()
            {
                State = Thread.Status, Result = ret
            };

            return(result);
        }