public static LocationList getPermutation( final List<LocationList> variations, long variationi  ) {
		if (( null == variations ) || ( 0 == variations.size() )) return null;
		if ( 0 > variationi ) return null;
		long numVariations = getPermutationCount( variations );
		if ( variationi >= numVariations ) return null;
				
		LocationList locations = new LocationList();
		// Choose one location variation from each list.
		// for ( int listi = variations.size() - 1; listi >= 0; listi-- ) {
		for ( int listi = 0; listi < variations.size(); listi++ ) {
			LocationList enharmonics = variations.get( listi );
			// System.out.println( "Enharmonics " + listi + "=" + enharmonics );
			if (( null != enharmonics ) && ( 0 < enharmonics.size() )) {
			   locations.add( 0, enharmonics.get( (int) (variationi % (long) enharmonics.size()) ) );
			   variationi /= (long) enharmonics.size();
			}			
		}		
		return locations;
	}