Can not vtkImageData::SafeDownCast from vtkDataSet

Hello,

I’m having the following problem.
I can’t get vtkImageData from vtkDataSet:

vtkDataSet* output = vtkDataSet::GetData(outputVector->GetInformationObject(i));
output->ShallowCopy(imageData);

imageData->Print(std::cout); // print vtkImageData details
output->Print(std::cout); // print vtkPolyData details

if (vtkImageData::SafeDownCast( imageData ) == nullptr) throw std::runtime_error("OK"); // this is OK
if (vtkImageData::SafeDownCast( output ) == nullptr) throw std::runtime_error("ERROR"); // this raises exception

Why ShallowCopy (I also try DeepCopy) of vtkImageData to vtkDataSet changes type of my data to vtkPolyData? Can someone please help me?