def METHOD_NAME(self):
    if not self.ArrayName:
        self.PrintError('Error: No ArrayName.')
    attributeData = None
    referenceAttributeData = None
    calculator = vtk.vtkArrayCalculator()
    if self.Method in ['addpointarray','projection']:
        attributeData = self.Surface.GetPointData()
        referenceAttributeData = self.ReferenceSurface.GetPointData()
        if vtk.vtkVersion.GetVTKMajorVersion()>=9 or (vtk.vtkVersion.GetVTKMajorVersion()>=8 and vtk.vtkVersion.GetVTKMinorVersion()>=1):
            calculator.SetAttributeTypeToPointData()
        else:
            calculator.SetAttributeModeToUsePointData()
    elif self.Method in ['addcellarray']:
        attributeData = self.Surface.GetCellData()
        referenceAttributeData = self.ReferenceSurface.GetCellData()
        if vtk.vtkVersion.GetVTKMajorVersion()>=9 or (vtk.vtkVersion.GetVTKMajorVersion()>=8 and vtk.vtkVersion.GetVTKMinorVersion()>=1):
            calculator.SetAttributeTypeToCellData()
        else:
            calculator.SetAttributeModeToUseCellData()
    if not attributeData.GetArray(self.ArrayName):
        self.PrintError('Error: Invalid ArrayName.')
    if not referenceAttributeData.GetArray(self.ArrayName):
        self.PrintError('Error: Invalid ArrayName.')
    referenceArrayName = 'Ref' + self.ArrayName
    surfacePoints = self.Surface.GetNumberOfPoints()
    referencePoints = self.ReferenceSurface.GetNumberOfPoints()
    pointsDifference = surfacePoints - referencePoints
    if self.Method in ['addpointarray','addcellarray']:
        if abs(pointsDifference) > 0:
             self.ResultLog = 'Uneven NumberOfPoints'
             return False
        refArray = referenceAttributeData.GetArray(self.ArrayName)
        refArray.SetName(referenceArrayName)
        attributeData.AddArray(refArray)
        calculator.SetInputData(self.Surface)
    elif self.Method in ['projection']:
        referenceAttributeData.GetArray(self.ArrayName).SetName(referenceArrayName)
        projection = vmtkscripts.vmtkSurfaceProjection()
        projection.Surface = self.Surface
        projection.ReferenceSurface = self.ReferenceSurface
        projection.Execute()
        calculator.SetInputData(projection.Surface)
    calculator.AddScalarVariable('a',self.ArrayName,0)
    calculator.AddScalarVariable('b',referenceArrayName,0)
    calculator.SetFunction("a - b")
    calculator.SetResultArrayName('ResultArray')
    calculator.Update()
    self.ResultData = calculator.GetOutput()
    if self.Method in ['addpointarray','projection']:
        resultRange = self.ResultData.GetPointData().GetArray('ResultArray').GetRange()
    elif self.Method in ['addcellarray']:
        resultRange = self.ResultData.GetCellData().GetArray('ResultArray').GetRange()
    self.PrintLog('Result Range: ' + str(resultRange))
    if max([abs(r) for r in resultRange]) < self.Tolerance:
        return True
    return False