Code Duplication    Length = 18-18 lines in 2 locations

src/EnumSet.php 2 locations

@@ 351-368 (lines=18) @@
348
     * @param EnumSet ...$others Other EnumSet(s) of the same enumeration to produce the union
349
     * @return EnumSet
350
     */
351
    public function union(EnumSet ...$others)
352
    {
353
        $bitset = $this->bitset;
354
        foreach ($others as $other) {
355
            if ($this->enumeration !== $other->enumeration) {
356
                throw new InvalidArgumentException(sprintf(
357
                    'Others should be of the same enumeration as this %s',
358
                    $this->enumeration
359
                ));
360
            }
361
362
            $bitset |= $other->bitset;
363
        }
364
365
        $clone = clone $this;
366
        $clone->bitset = $bitset;
367
        return $clone;
368
    }
369
370
    /**
371
     * Produce a new set with enumerators common to both this and other (this & other)
@@ 375-392 (lines=18) @@
372
     * @param EnumSet ...$others Other EnumSet(s) of the same enumeration to produce the union
373
     * @return EnumSet
374
     */
375
    public function intersect(EnumSet ...$others)
376
    {
377
        $bitset = $this->bitset;
378
        foreach ($others as $other) {
379
            if ($this->enumeration !== $other->enumeration) {
380
                throw new InvalidArgumentException(sprintf(
381
                    'Others should be of the same enumeration as this %s',
382
                    $this->enumeration
383
                ));
384
            }
385
386
            $bitset &= $other->bitset;
387
        }
388
389
        $clone = clone $this;
390
        $clone->bitset = $bitset;
391
        return $clone;
392
    }
393
394
    /**
395
     * Produce a new set with enumerators in this but not in other (this - other)