public function listBySecondaryKey($secondaryKey)
    {
        $list = array();

        foreach ($this->values as $primaryKey => $valuesBySecondaryKey) {
            if (isset($valuesBySecondaryKey[$secondaryKey])) {
                $list[$primaryKey] = $valuesBySecondaryKey[$secondaryKey];
            }
        }

        if (!$list) {
            throw new OutOfBoundsException(sprintf(
                'The key "%s" does not exist.',
                $secondaryKey
            ));
        }

        return $list;
    }