public function assertPopulateData(array $data, array $required) : void
    {
        // Check if the provided data has less entries, than the
        // required
        if (count($data) < count($required)) {
            throw new Exception(sprintf('Cannot populate %s, incorrect amount of properties given', get_class($this)));
        }

        // Check that all of the required are present
        foreach ($required as $requiredKey) {
            if( ! isset($data[$requiredKey])){
                throw new Exception(sprintf('Cannot populate %s, missing %s', get_class($this), $requiredKey));
            }
        }
    }