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()); }