public static function post(Endpoint $data, array $params = []): Endpoint
    {
        $class = get_called_class();

        // Instantiate an AnnotationReader for this class AND check for the important parameters.
        $annotations = new AnnotationReader($class);
        $endpoints = $annotations->getClassAnnotation("endpoints");

        $endpoint = array_key_exists("post", $endpoints) ? $endpoints["post"] : "";

        if($endpoint === "")
            throw new \Exception("[MVQN\REST\Endpoints\Endpoint] An annotation like '@endpoints { \"post\": \"/examples\" }' on the '$class' ".
                "class must be declared in order to resolve this endpoint'");

        // Interpolate the URL patterns against any provided parameters.
        $endpoint = Patterns::interpolateUrl($endpoint, $params);

        // Get an array of all Model properties, with any that do not belong in the POST method removed!
        $data = ($data !== null) ? $data->toArray("post") : [];

        // Attempt to POST the specified Endpoint.
        $response = RestClient::post($endpoint, $data);

        // IF the response is empty, something went VERY wrong!
        if($response === [])
        {
            throw new \Exception("WTF???");
            //return [];
        }

        // HANDLE ANY ERROR CODES HERE...
        if(array_key_exists("code", $response))
        {
            switch($response["code"])
            {
                case 401: throw new \Exception("[MVQN\REST\Endpoints\Endpoint] The REST Client was not authorized to make this request!");
                case 403: throw new \Exception("[MVQN\REST\Endpoints\Endpoint] The provided App Key does not have sufficient privileges!");
                case 404: throw new \Exception("[MVQN\REST\Endpoints\Endpoint] Endpoint '$endpoint' was not found for class '$class'!");
                case 422: throw new \Exception("[MVQN\REST\Endpoints\Endpoint] Data for endpoint '$endpoint' was improperly formatted!\n".
                    $response["message"]."\n".
                    json_encode($response["errors"], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
                );

                // TODO: Add other response codes, as they are encountered!

                default:  break; // Likely the key "code" from an actual Endpoint!
            }
        }

        // Finally, return the instantiated Endpoint!
        return new $class($response);
    }