private string GetVariableDescription(IVariable variable)
        {
            StringBuilder sb                    = new StringBuilder();
            var           parentFunction        = variable.Parent as Function;
            var           parentStruct          = variable.Parent as Struct;
            var           parentLibraryFunction = variable.Parent as HllFunction;
            var           parentFunctype        = variable.Parent as FunctionType;

            if (parentFunction != null)
            {
                var variable_ = variable as Variable;
                if (variable.Index >= parentFunction.ParameterCount)
                {
                    sb.Append("Local Variable ");
                    sb.Append(variable.ToString());
                    sb.Append(" for function ");
                    sb.Append(parentFunction.GetActiveName());
                }
                else
                {
                    sb.Append("Function Parameter ");
                    sb.Append(variable.ToString());
                    sb.Append(" for function ");
                    sb.Append(parentFunction.GetActiveName());
                }
            }
            else if (parentStruct != null)
            {
                sb.Append("Struct Member ");
                sb.Append(variable.ToString());
                sb.Append(" for struct ");
                sb.Append(parentStruct.GetActiveName());
            }
            else if (parentLibraryFunction != null)
            {
                sb.Append("Function Parameter ");
                sb.Append(variable.ToString());
                sb.Append(" for library function ");
                sb.Append(parentLibraryFunction.GetActiveName());
            }
            else if (parentFunctype != null)
            {
                sb.Append("Function Parameter ");
                sb.Append(variable.ToString());
                sb.Append(" for Functype ");
                sb.Append(parentFunctype.GetActiveName());
            }
            else
            {
                if (variable is Function)
                {
                    sb.Append("Function ");
                    sb.Append(variable.ToString());
                }
                else if (variable is Struct)
                {
                    sb.Append("Struct ");
                    sb.Append(variable.GetActiveName());
                }
                else if (variable is HllFunction)
                {
                    sb.Append("Library Function ");
                    sb.Append(variable.ToString());
                }
                else if (variable is FunctionType)
                {
                    sb.Append("Functype ");
                    sb.Append(variable.ToString());
                }
                else if (variable is Global)
                {
                    sb.Append("Global Variable ");
                    sb.Append(variable.ToString());
                }
                else
                {
                    sb.Append("Variable ");
                    sb.Append(variable.ToString());
                }
            }
            return(sb.ToString());
        }