private function composeSnapItem($customerId, $parentId, $dsChanged, $snap)
    {
        $result = new ESnap();
        $result->setCustomerRef($customerId);
        $result->setParentRef($parentId);
        $result->setDate($dsChanged);
        if ($customerId == $parentId) {
            /* this is root node customer */
            $newDepth = Cfg::INIT_DEPTH;
            $newPath = Cfg::DTPS;
        } else {
            /* this is NOT root node customer */
            if (!isset($snap[$parentId])) {
                $breakPoint = 'inconsistency detected'; // this is code for debug only
            }
            /** @var ESnap $parent */
            $parent = $snap[$parentId];
            $newDepth = $parent->getDepth() + 1;
            $newPath = $parent->getPath() . $parentId . Cfg::DTPS;
        }
        $result->setDepth($newDepth);
        $result->setPath($newPath);
        return $result;
    }