Code Duplication    Length = 19-19 lines in 2 locations

src/EnumSet.php 2 locations

@@ 377-395 (lines=19) @@
374
     * @param EnumSet ...$others Other EnumSet(s) of the same enumeration to produce the union
375
     * @return EnumSet
376
     */
377
    public function union(...$others)
378
    {
379
        $bitset = $this->bitset;
380
        foreach ($others as $other) {
381
            if (!$other instanceof self || $this->enumeration !== $other->enumeration) {
382
                throw new InvalidArgumentException(sprintf(
383
                    'Others should be an instance of %s of the same enumeration as this %s',
384
                    __CLASS__,
385
                    $this->enumeration
386
                ));
387
            }
388
389
            $bitset |= $other->bitset;
390
        }
391
392
        $clone = clone $this;
393
        $clone->bitset = $bitset;
394
        return $clone;
395
    }
396
397
    /**
398
     * Produce a new set with enumerators common to both this and other (this & other)
@@ 405-423 (lines=19) @@
402
     * @param EnumSet ...$others Other EnumSet(s) of the same enumeration to produce the union
403
     * @return EnumSet
404
     */
405
    public function intersect(...$others)
406
    {
407
        $bitset = $this->bitset;
408
        foreach ($others as $other) {
409
            if (!$other instanceof self || $this->enumeration !== $other->enumeration) {
410
                throw new InvalidArgumentException(sprintf(
411
                    'Others should be an instance of %s of the same enumeration as this %s',
412
                    __CLASS__,
413
                    $this->enumeration
414
                ));
415
            }
416
417
            $bitset &= $other->bitset;
418
        }
419
420
        $clone = clone $this;
421
        $clone->bitset = $bitset;
422
        return $clone;
423
    }
424
425
    /**
426
     * Produce a new set with enumerators in this but not in other (this - other)