public function getFirstProperty(...$properties)
    {
        /** @var ProfiledNamesList $properties */
        $properties = ProfiledNamesFactory::createFromArguments(func_get_args());

        // Prepare a default exception
        $exception = new OutOfBoundsException(
            OutOfBoundsException::NO_MATCHING_PROPERTIES_STR,
            OutOfBoundsException::NO_MATCHING_PROPERTIES
        );

        // Run through all properties
        foreach ($properties as $property) {
            try {
                return (array)$this->getProperty($property->name, $property->profile);
            } catch (OutOfBoundsException $exception) {
                continue;
            }
        }

        throw $exception;
    }