function split(uri) {
    // See @return comment -- never null.
    return /** @type {!Array.<string|undefined>} */ (
        uri.match(splitRe));
  }
Splits a URI into its component parts.

Each component can be accessed via the component indices; for example:
<pre>
goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];
</pre>

@param {string} uri The URI string to examine.
@return {!Array.<string|undefined>} Each component still URI-encoded.
    Each component that is present will contain the encoded value, whereas
    components that are not present will be undefined or empty, depending
    on the browser's regular expression implementation.  Never null, since
    arbitrary strings may still look like path names.