protected function getFieldsByVisibility($hidden, $recursive)
{
$fields = array();
$hidden = (bool)$hidden;
foreach ($this->fields as $field) {
if ($field instanceof FieldGroup && $recursive) {
$fields = array_merge($fields, $field->getFieldsByVisibility($hidden, $recursive));
} else if ($hidden === $field->isHidden()) {
$fields[] = $field;
}
}
return $fields;
}