private IEnumerable<Instruction> ParseNonEmptyElement()
{
yield return Inject.StartOfObject(instructionStream.Current.XamlType);
var parentType = instructionStream.Current.XamlType;
if (parentType.NeedsConstructionParameters)
{
foreach (var instruction in InjectNodesForTypeThatRequiresInitialization()) { yield return instruction; }
}
else
{
SetNextInstruction();
foreach (var instruction in ParseMembersOfObject()) { yield return instruction; }
if (parentType.IsCollection)
{
foreach (var instruction in ParseItemsOfCollection()) { yield return instruction; }
}
else
{
foreach (var instruction in ParseContentPropertyIfAny(parentType)) { yield return instruction; }
}
SkipTextNodes();
foreach (var instruction in ParseNestedProperties(parentType)) { yield return instruction; }
}
yield return Inject.EndOfObject();
ReadEndTag();
}