The ObjectFiller is able to detect circulare references. You can configure the ObjectFiller to ignore the circular references or throw an exception when a circular reference occurs. By default ObjectFiller.NET stops creating new instances in a circular reference after one loop and leave the property null.
In the following example the class "Parent" has a List<Children> and the class Children has a again a Parent - this is called a circular reference. 
The ObjectFiller.NET detects that and doesn't fill the circular object anymore!
When .Setup().OnCircularReference().ThrowException(true); with the true flag is called, ObjectFiller will raise an exception instead of just ignore the circular reference.
public class Children
{
  public Parent Parent { get; set; }
}
public class Parent
{
  public List<Children> Childrens { get; set; }
}
public class HelloFiller
{
  public void FillPerson()
  {
    Filler<Parent> pFiller = new Filler<Parent>();
    pFiller.Setup()
      .OnCircularReference().ThrowException(false);
    Parent filledParent = pFiller.Create();
  }
}
