/**
  * @param Bytes $bytes
  * @return ByteCollection
  */
 public static function allocateBytes(Bytes $bytes)
 {
     $byteCollection = new ByteCollection();
     while ($bytes->numberOfBytes() !== 0) {
         $largestPossible = self::findLargestUnitOfMeasurementPossible($bytes);
         $byteCollection->add($largestPossible);
         $bytes = $bytes->subtract($largestPossible->bytes());
     }
     return $byteCollection;
 }
 /**
  * @test
  * @dataProvider listOfAddingUnits
  * @param Bytes $unit1
  * @param Bytes $unit2
  * @param Bytes $expected
  */
 public function shouldBeAdded(Bytes $unit1, Bytes $unit2, Bytes $expected)
 {
     $actual = $unit1->add($unit2);
     $this->assertEquals($expected->numberOfBytes(), $actual->numberOfBytes());
 }