anchor.diff:    if fChild2 <> nil then fChild2.Free;
   
     inherited;
  +end;
  +
  +
  +function TBin.CanFit(aItem: TIndexItem): Boolean;
  +begin
  +  Result := (aItem.X * aItem.Y < fNotFit);
  +end;
  +
  +
  +procedure TBin.DidNotFit(aItem: TIndexItem);
  +begin
  +  fNotFit := Min(fNotFit, aItem.X * aItem.Y);
   end;
   
   
  
positive.code:   B: TBin;
  begin
    //Check all Bins (older Bins may still have space for small items)
    for I := Max(fBins.Count - 5, 0) to fBins.Count - 1 do
    begin
      //Try to insert into a bin
      B := TBin(fBins[I]).Insert(aItem);
      if B <> nil then
        Exit;
    end;
  
    //Create new Bin
  
negative.code:     function Width: Word;
      function Height: Word;
      procedure GetAllItems(var aItems: TBinItem);
  
      procedure DidNotFit(aItem: TIndexItem);
      function CanFit(aItem: TIndexItem): Boolean;
    end;
  
    TBinManager = class
  