public function getRevisions( array $identifyingInfoArray ) {
		$entityIdStrings = array();
		$siteLinksStringMapping = array();

		foreach( $identifyingInfoArray as $someInfo ) {
			if( $someInfo instanceof EntityId ) {
				$entityIdStrings[] = $someInfo->getSerialization();
			} elseif ( $someInfo instanceof SiteLink ) {
				$siteLinksStringMapping[ $someInfo->getSiteId() ][] = $someInfo->getPageName();
			} elseif( is_string( $someInfo ) ) {
				$entityIdStrings[] = $someInfo;
			} else {
				throw new InvalidArgumentException( 'Unexpected $identifyingInfoArray in RevisionsGetter::getRevisions' );
			}
		}

		// The below makes as few requests as possible to get the Revisions required!
		$gotRevisionsFromIds = false;
		$revisions = new Revisions();
		if( !empty( $siteLinksStringMapping ) ) {
			foreach( $siteLinksStringMapping as $site => $siteLinkStrings ) {
				$params = array( 'sites' => $site );
				if( !$gotRevisionsFromIds && !empty( $entityIdStrings ) ) {
					$params['ids'] = implode( '|', $entityIdStrings );
					$gotRevisionsFromIds = true;
				}
				$params['titles'] = implode( '|', $siteLinkStrings );
				$result = $this->api->getRequest( new SimpleRequest( 'wbgetentities', $params ) );
				$resultRevisions = $this->newRevisionsFromResult( $result['entities'] );
				$revisions->addRevisions( $resultRevisions );

			}
		} else {
			$params = array( 'ids' => implode( '|', $entityIdStrings ) );
			$result = $this->api->getRequest( new SimpleRequest( 'wbgetentities', $params ) );
			$resultRevisions = $this->newRevisionsFromResult( $result['entities'] );
			$revisions->addRevisions( $resultRevisions );
		}

		return $revisions;
	}