public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration)
			{	
				var list = new List<Tuple<VariableInitializer, IVariable, VariableState>>();
				fieldStack.Push(list);

				foreach (var fieldDeclaration in ConvertToConstantIssue.CollectFields (this, typeDeclaration)) {
					if (fieldDeclaration.HasModifier(Modifiers.Const) || fieldDeclaration.HasModifier(Modifiers.Readonly))
						continue;
					if (fieldDeclaration.HasModifier(Modifiers.Public) || fieldDeclaration.HasModifier(Modifiers.Protected) || fieldDeclaration.HasModifier(Modifiers.Internal))
						continue;
					if (fieldDeclaration.Variables.Count() > 1)
						continue;
					var variable = fieldDeclaration.Variables.First();
					var rr = ctx.Resolve(fieldDeclaration.ReturnType);
					if (rr.Type.IsReferenceType == false) {
						// Value type:
						var def = rr.Type.GetDefinition();
						if (def != null && def.KnownTypeCode == KnownTypeCode.None) {
							// user-defined value type -- might be mutable
							continue;
						} else if (ctx.Resolve (variable.Initializer) is ConstantResolveResult) {
							// handled by ConvertToConstantIssue
							continue;
						}
					}

					var mr = ctx.Resolve(variable) as MemberResolveResult;
					if (mr == null)
						continue;
					list.Add(Tuple.Create(variable, mr.Member as IVariable, VariableState.None)); 
				}
				base.VisitTypeDeclaration(typeDeclaration);
				Collect();
				fieldStack.Pop();
			}
            public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration)
            {
                var list = new List <Tuple <VariableInitializer, IVariable> >();

                fieldStack.Push(list);
                foreach (var fieldDeclaration in ConvertToConstantIssue.CollectFields(this, typeDeclaration))
                {
                    if (!fieldDeclaration.HasModifier(Modifiers.Readonly))
                    {
                        continue;
                    }
//					var rr = ctx.Resolve(fieldDeclaration.ReturnType);

                    if (fieldDeclaration.Variables.Count() > 1)
                    {
                        continue;
                    }
                    if (!fieldDeclaration.Variables.First().Initializer.IsNull)
                    {
                        continue;
                    }
                    var variable = fieldDeclaration.Variables.First();
                    var mr       = ctx.Resolve(variable) as MemberResolveResult;
                    if (mr == null)
                    {
                        continue;
                    }
                    list.Add(Tuple.Create(variable, mr.Member as IVariable));
                }
                base.VisitTypeDeclaration(typeDeclaration);
                Collect();
                fieldStack.Pop();
            }