protected function _compareEmployeeInfo(array &$emploeeDbGuidCache, array &$extendInfo = [], $employeeInfoLdap = null, $useBlockEmployee = false, $useBlockDepartment = false) {
		if (empty($employeeInfoLdap)) {
			return false;
		}

		$extendInfoDefault = [
			'employeeInfoLocal' => [],
			'employeeDbDnCache' => [],
			'departmentCache' => [],
			'defaultValueFields' => [],
			'deleteBindData' => [],
		];
		$extendInfo = array_intersect_key($extendInfo, $extendInfoDefault);
		$extendInfo += $extendInfoDefault;

		$guid = $employeeInfoLdap[CAKE_LDAP_LDAP_ATTRIBUTE_OBJECT_GUID];
		if (isset($emploeeDbGuidCache[$guid])) {
			$extendInfo['employeeInfoLocal'] = $emploeeDbGuidCache[$guid];
			unset($emploeeDbGuidCache[$guid]);
		} else {
			$extendInfo['employeeInfoLocal'] = [];
		}

		$employeeInfoLdap = $this->_prepareEmployeeData($employeeInfoLdap, $extendInfo, $useBlockDepartment);
		if ($employeeInfoLdap === false) {
			return false;
		}

		$diffInfo = Hash::diff($employeeInfoLdap, $extendInfo['employeeInfoLocal']);
		if (empty($diffInfo)) {
			if (!$useBlockEmployee || ($useBlockEmployee && !$employeeInfoLdap['Employee']['block'])) {
				return true;
			}
		}
		if ($useBlockEmployee) {
			$employeeInfoLdap['Employee']['block'] = false;
		}

		if (isset($employeeInfoLdap['Department'])) {
			if (empty($employeeInfoLdap['Department']['value'])) {
				unset($employeeInfoLdap['Department']);
			} elseif ($useBlockDepartment) {
				$employeeInfoLdap['Department']['block'] = false;
			}
		}

		$resultData = $employeeInfoLdap;

		return $resultData;
	}