code: public static UUID convertDotNetBytesToUUID(byte[] dotNetBytes)
  	{
  		if(dotNetBytes == null || dotNetBytes.length != GUIDSIZE)
  		{
  			return new UUID(0l, 0l);
  		}
  		
  		byte[] reOrderedBytes = new byte[GUIDSIZE];
  		for(int i=0; i<GUIDSIZE; i++)
  		{
  			int indexInReorderedBytes;
  			switch(i)
  			{
  				case 0:
  					indexInReorderedBytes = 3;
  					break;
  				case 1:
  					indexInReorderedBytes = 2;
  					break;
  				case 2:
  					indexInReorderedBytes = 1;
  					break;
  				case 3:
  					indexInReorderedBytes = 0;
  					break;
  				case 4:
  					indexInReorderedBytes = 5;
  					break;
  				case 5:
  					indexInReorderedBytes = 4;
  					break;
  				case 6:
  					indexInReorderedBytes = 7;
  					break;
  				case 7:
  					indexInReorderedBytes = 6;
  					break;
  				default:
  					indexInReorderedBytes = i;
  			}
  			
  			reOrderedBytes[indexInReorderedBytes] = dotNetBytes[i];
  		}
  		
  		ByteBuffer buffer = ByteBuffer.wrap(reOrderedBytes);
  		long mostSignificantBits = buffer.getLong();
  		long leastSignificantBits = buffer.getLong();
  		return new UUID(mostSignificantBits, leastSignificantBits);
  	}
docs: First 4 bytes are in reverse order, 5th and 6th bytes are in reverse order, 7th and 8th bytes are also in reverse order