public static void DumpFeedbacksToConsole(this IHasFeedback source, bool getCurrentStates)
        {
            var feedbacks = source.Feedbacks.OrderBy(x => x.Type);

            if (feedbacks != null)
            {
                Debug.Console(0, source, "\n\nAvailable feedbacks:");
                foreach (var f in feedbacks)
                {
                    string val = "";
                    if (getCurrentStates)
                    {
                        if (f is BoolFeedback)
                        {
                            val = " = " + f.BoolValue;
                        }
                        else if (f is IntFeedback)
                        {
                            val = " = " + f.IntValue;
                        }
                        else if (f is StringFeedback)
                        {
                            val = " = " + f.StringValue;
                        }

                        //switch (f.Type)
                        //{
                        //    case eCueType.Bool:
                        //        val = " = " + f.BoolValue;
                        //        break;
                        //    case eCueType.Int:
                        //        val = " = " + f.IntValue;
                        //        break;
                        //    case eCueType.String:
                        //        val = " = " + f.StringValue;
                        //        break;
                        //    //case eOutputType.Other:
                        //    //    break;
                        //}
                    }
                    Debug.Console(0, "{0,-8} {1}{2}", f.GetType(),
                                  (string.IsNullOrEmpty(f.Cue.Name) ? "-none-" : f.Cue.Name), val);
                }
            }
            else
            {
                Debug.Console(0, source, "No available outputs:");
            }
        }
        public static void DumpFeedbacksToConsole(this IHasFeedback source, bool getCurrentStates)
        {
            CType t = source.GetType();
            // get the properties and set them into a new collection of NameType wrappers
            var props = t.GetProperties().Select(p => new PropertyNameType(p, t));



            var feedbacks = source.Feedbacks.OrderBy(x => x.Type);

            if (feedbacks != null)
            {
                Debug.Console(0, source, "\n\nAvailable feedbacks:");
                foreach (var f in feedbacks)
                {
                    string val  = "";
                    string type = "";
                    if (getCurrentStates)
                    {
                        if (f is BoolFeedback)
                        {
                            val  = f.BoolValue.ToString();
                            type = "boolean";
                        }
                        else if (f is IntFeedback)
                        {
                            val  = f.IntValue.ToString();
                            type = "integer";
                        }
                        else if (f is StringFeedback)
                        {
                            val  = f.StringValue;
                            type = "string";
                        }
                    }
                    Debug.Console(0, "{0,-12} {1, -25} {2}", type,
                                  (string.IsNullOrEmpty(f.Cue.Name) ? "-no name-" : f.Cue.Name), val);
                }
            }
            else
            {
                Debug.Console(0, source, "No available outputs:");
            }
        }