anchor.diff:    bit: UInt8;
     flag: Boolean;
     id: TCustomID;
  -
   begin
     SetLength(ADest, 0);
     SetLength(ADest, ACount);
  -
     real_count := 0;
  -
     for byte_idx := 0 to AMaskSize - 1 do
     begin
       mask_byte := FSrc.ReadByte;
  -
       for bit in [0..7] do
       begin
         flag := (mask_byte and (1 shl bit)) > 0;
  
positive.code:   end
    else
    begin
       Result := ACallback(index);
    end;
  end;
  
  function TMapReaderH3m.ReadID(ACallback: TIdToString; ASize: Integer
    ): AnsiString;
  var
    id : TCustomID;
  begin
  
negative.code:       end;
      end;
    end;
    SetLength(ADest, real_count);
  end;
  
  procedure TMapReaderH3m.ReadBitmask(ADest: TStrings; AMaskSize: SizeInt;
    ACount: SizeInt; ACallback: TIdToString; Negate: Boolean);
  var
    tmp: array of TCustomID;
    iter: TCustomID;
  begin
    ADest.Clear;
    SetLength(tmp, 0);
    ReadBitmask(tmp, AMaskSize, ACount, Negate);
    for iter in tmp do
    begin
      ADest.Add(ACallback(iter));
    end;
  end;
  
  procedure TMapReaderH3m.ReadBitmask(ADest: TLogicalIDCondition;
  