public function remove($tag, $target = TimePoint::TARGET_ALL, $type = TimePoint::TYPE_ALL)
    {
        $tags = is_array($tag) ? $tag : [$tag];
        $removed = 0;
        foreach ($this->points as $idx => $point) {
            if ($point->match($tags, $target, $type)) {
                unset($this->points[$idx]);
                $removed++;
            }
        }
        return $removed;
    }