public function group(string $logical = ValuesGroup::GROUP_LOGICAL_AND): self
    {
        $builder = new self($logical, $this->fieldSet, $this);
        $this->valuesGroup->addGroup($builder->getGroup());

        return $builder;
    }
public function group(string $logical = ValuesGroup::GROUP_LOGICAL_AND): self
    {
        $builder = new self($logical, $this->fieldSet, $this);
        $this->valuesGroup->addGroup($builder->getGroup());

        return $builder;
    }
public function group ( string $ logical = ValuesGroup :: GROUP_LOGICAL_AND ) : self { $ builder = new self ( $ logical , $ this -> fieldSet , $ this ) ; $ this -> valuesGroup -> addGroup ( $ builder -> getGroup ( ) ) ; return $ builder ; }
Create a new ValuesGroup and returns the object instance.

Afterwards the group can be expended with fields or subgroups:

```
->group()
->field('name')
->...
->end() // return back to the ValuesGroup.
->end() // return back to the parent ValuesGroup
```

@param string $logical eg. one of the following ValuesGroup class constants value:
GROUP_LOGICAL_OR or GROUP_LOGICAL_AND
Create a new ValuesGroup and returns the object instance .