code: function _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {
  	      var out = [];
  	      if (isPresent(opt_scheme)) {
  	          out.push(opt_scheme + ':');
  	      }
  	      if (isPresent(opt_domain)) {
  	          out.push('//');
  	          if (isPresent(opt_userInfo)) {
  	              out.push(opt_userInfo + '@');
  	          }
  	          out.push(opt_domain);
  	          if (isPresent(opt_port)) {
  	              out.push(':' + opt_port);
  	          }
  	      }
  	      if (isPresent(opt_path)) {
  	          out.push(opt_path);
  	      }
  	      if (isPresent(opt_queryData)) {
  	          out.push('?' + opt_queryData);
  	      }
  	      if (isPresent(opt_fragment)) {
  	          out.push('#' + opt_fragment);
  	      }
  	      return out.join('');
  	  }
docs: The code below is adapted from Traceur: https://github.com/google/traceur-compiler/blob/9511c1dafa972bf0de1202a8a863bad02f0f95a8/src/runtime/url.js 
  Builds a URI string from already-encoded parts.
  
  No encoding is performed.  Any component may be omitted as either null or
  undefined.
  
  @param opt_scheme The scheme such as 'http'.
  @param opt_userInfo The user name before the '@'.
  @param opt_domain The domain such as 'www.google.com', already
  URI-encoded.
  @param opt_port The port number.
  @param opt_path The path, already URI-encoded.  If it is not
  empty, it must begin with a slash.
  @param opt_queryData The URI-encoded query data.
  @param opt_fragment The URI-encoded fragment identifier.
  @return The fully combined URI.