public static function get(string $override = "", array $params = [], array $query = []): Collection
    {
        // Get a reference to the type of Endpoint calling this function.
        $class = get_called_class();

        // Set any flags here for special cases!
        $excludeId = false;

        // IF no override path has been provided...
        if($override === "")
        {
            // THEN instantiate an AnnotationReader for this class AND check for the important parameters.
            $annotations = new AnnotationReader($class);
            $endpoints = $annotations->getClassAnnotation("endpoints");
            $excludeId = $annotations->hasClassAnnotation("excludeId");
            //$singular = $annotations->hasParameter("singular");

            // Make certain we have found a valid set of GET annotations, or throw an error!
            if (!array_key_exists("get", $endpoints) || $endpoints["get"] === "")
                throw new \Exception("[MVQN\REST\Endpoints\Endpoint] An '@Endpoint { \"get\": \"/examples\" }' annotation on the class must " .
                    "be declared in order to resolve this endpoint'");

            // Interpolate the URL patterns against any provided parameters.
            $endpoint = Patterns::interpolateUrl($endpoints["get"], $params);
        }
        else
        {
            // Interpolate the overridden URL pattern against any provided parameters.
            $endpoint = Patterns::interpolateUrl($override, $params);
            //$endpoint = $override;
        }

        // Append any provided suffixes to the URL (i.e. query string).
        if($query !== [])
        {
            $pairs = [];

            foreach($query as $key => $value)
                $pairs[] = "$key=$value";

            $endpoint .= "?".implode("&", $pairs);
        }

        // Attempt to GET the specified Endpoint.
        $response = RestClient::get($endpoint);

        // IF the response is empty...
        if($response === [])
            // THEN return an empty collection, as we got nothing back!
            return new Collection($class, []);

        // 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'!");

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

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

        // Handle shifting any single object responses into a single indexed array for further processing.
        $response = Arrays::is_assoc($response) ? [ $response ] : $response;

        // Create a collection to store the object versions of the response.
        $endpoints = new Collection($class);

        // Loop through each resulting object...
        foreach($response as $object)
        {
            $classObject = new $class($object);

            // Remove the ID property, if the '@excludeId' annotation was set on this class.
            if($excludeId)
                unset($classObject->id);

            // Add the newly instantiated Endpoint to the collection.
            $endpoints->push($classObject);
        }

        // Finally, return the collection of Endpoints!
        return $endpoints;
    }