protected override string GetDescriptionForPointer(IPointerScope scope)
		{
			if (scope.ElementType != null)
				return GetSimpleDescription(scope.ElementType)+"*";
			return "void*";
		}
		protected virtual string GetDescriptionForPointer(IPointerScope scope)
		{
			string s = "";
			if (scope.ElementType != null)
			{
				if (!typs.Contains(scope))
				{
					typs.Push(scope);
					s = "^"+GetSimpleDescription(scope.ElementType);
				}
				else 
				s = "";
			}
			else
			s = "pointer";
			if (typs.Count > 0)
				typs.Pop();
			return s;
		}