private void WriteHandleHrefList(Member[] members, string listSource)
{
Writer.WriteLine("int isObjectIndex = 0;");
Writer.Write("foreach (object obj in ");
Writer.Write(listSource);
Writer.WriteLine(") {");
Writer.Indent++;
Writer.WriteLine("bool isReferenced = true;");
Writer.Write("bool isObject = (bool)");
Writer.Write(listSource);
Writer.WriteLine("IsObject[isObjectIndex++];");
Writer.WriteLine("object refObj = isObject ? obj : GetTarget((string)obj);");
Writer.WriteLine("if (refObj == null) continue;");
Writer.Write(typeof(Type).FullName);
Writer.WriteLine(" refObjType = refObj.GetType();");
Writer.WriteLine("string refObjId = null;");
WriteMemberElementsIf(members, null, "isReferenced = false;", "refObj");
Writer.WriteLine("if (isObject && isReferenced) Referenced(refObj); // need to mark this obj as ref'd since we didn't do GetTarget");
Writer.Indent--;
Writer.WriteLine("}");
}