public function getDealerShedulesVersions($criteria = null, ConnectionInterface $con = null)
    {
        $partial = $this->collDealerShedulesVersionsPartial && !$this->isNew();
        if (null === $this->collDealerShedulesVersions || null !== $criteria  || $partial) {
            if ($this->isNew() && null === $this->collDealerShedulesVersions) {
                // return empty collection
                $this->initDealerShedulesVersions();
            } else {
                $collDealerShedulesVersions = ChildDealerShedulesVersionQuery::create(null, $criteria)
                    ->filterByDealerShedules($this)
                    ->find($con);

                if (null !== $criteria) {
                    if (false !== $this->collDealerShedulesVersionsPartial && count($collDealerShedulesVersions)) {
                        $this->initDealerShedulesVersions(false);

                        foreach ($collDealerShedulesVersions as $obj) {
                            if (false == $this->collDealerShedulesVersions->contains($obj)) {
                                $this->collDealerShedulesVersions->append($obj);
                            }
                        }

                        $this->collDealerShedulesVersionsPartial = true;
                    }

                    reset($collDealerShedulesVersions);

                    return $collDealerShedulesVersions;
                }

                if ($partial && $this->collDealerShedulesVersions) {
                    foreach ($this->collDealerShedulesVersions as $obj) {
                        if ($obj->isNew()) {
                            $collDealerShedulesVersions[] = $obj;
                        }
                    }
                }

                $this->collDealerShedulesVersions = $collDealerShedulesVersions;
                $this->collDealerShedulesVersionsPartial = false;
            }
        }

        return $this->collDealerShedulesVersions;
    }