public function getRules($subjectModel) {
        if ($this->type === 'hasMany') {
            return array($this->oppositeRule);
        }
        if ($this->type === 'hasAndBelongsToMany') {
            $bindingModel = $this->getBindingModel();
            $relations = $bindingModel->relations->getRelations();
            $rules = array_keys($relations);

            /* 	Now sort egocentrically, because current sorting is alphabetical
            (since $relations is an associative array) */
            $firstRel = current($relations);
            if ($firstRel->model !== $subjectModel) {
                $rules = array_reverse($rules);
            }

            if ($this->isHomo()
                && ($rules[0] !== $subjectModel && $rules[1] === $subjectModel)
            ) {
                // Make sure that the custom named relation always comes second.
                // This is part of egocentrism.
                $rules = array_reverse($rules);
            }
            return $rules;
        }
        return array($this->name);
    }