def METHOD_NAME(self):
    if self.Image == None:
        self.PrintError('Error: No input image.')
    if self.MapRanges:
        if self.InputRange == [0.0,0.0]:
            self.InputRange = self.Image.GetScalarRange()
        if self.InputRange[1] == self.InputRange[0]:
            self.PrintError('Error: Input range has zero width. Cannot map values')
        self.Shift = -self.InputRange[0]
        self.Scale = (self.OutputRange[1] - self.OutputRange[0]) / (self.InputRange[1] - self.InputRange[0])
    shiftScale = vtk.vtkImageShiftScale()
    shiftScale.SetInputData(self.Image)
    shiftScale.SetShift(self.Shift)
    shiftScale.SetScale(self.Scale)
    if self.OutputType == 'double':
        shiftScale.SetOutputScalarTypeToDouble()
    elif self.OutputType == 'uchar':
        shiftScale.SetOutputScalarTypeToUnsignedChar()
    elif self.OutputType == 'char':
        shiftScale.SetOutputScalarTypeToChar()
    elif self.OutputType == 'ushort':
        shiftScale.SetOutputScalarTypeToUnsignedShort()
    elif self.OutputType == 'short':
        shiftScale.SetOutputScalarTypeToShort()
    elif self.OutputType == 'ulong':
        shiftScale.SetOutputScalarTypeToUnsignedLong()
    elif self.OutputType == 'long':
        shiftScale.SetOutputScalarTypeToLong()
    elif self.OutputType == 'uint':
        shiftScale.SetOutputScalarTypeToUnsignedInt()
    elif self.OutputType == 'int':
        shiftScale.SetOutputScalarTypeToInt()
    elif self.OutputType == 'float':
        shiftScale.SetOutputScalarTypeToFloat()
    if self.OutputType != 'unchanged':
        if self.ClampOverflowOn:
            shiftScale.ClampOverflowOn()
    shiftScale.ClampOverflowOff()
    shiftScale.Update()
    self.Image = shiftScale.GetOutput()
    if self.MapRanges and self.OutputRange[0] != 0.0:
        shiftScale2 = vtk.vtkImageShiftScale()
        shiftScale2.SetInputData(self.Image)
        shiftScale2.SetShift(self.OutputRange[0])
        shiftScale2.SetScale(1.0)
        shiftScale2.Update()
        self.Image = shiftScale2.GetOutput()