protected function selfToArray(Array $filter = array())
    {
        $filter = array_flip($filter);
        $hasFilter = count($filter) > 0;
        $values = array();
        foreach ($this as $key => $value) {
            if (!$hasFilter || isset($filter[$key])) {
                $values[$key] = $this->$key;
            }
        }
        return $values;
    }