Fix Circular Reference Check

82959bd Refactory circulare reference check to use register pattern in combination with SplObjectStorage