Fix WindowsAclViews test failures

There are some test failures on the 32-bit platforms.
It seems the tests were having some issues serialzing and deserialzing
SIDs correctly. This does not appear to be a 32-bit issue, so much
as a GC issue. It looks like the SIDs were getting garbage collected
because the only reference to them was a serialized Pointer in the
ACE.

This change adds caching of SIDs in a HashMap to the tests to avoid
serializing and deserializing of SIDs.

Code Review: https://codereview.appspot.com/132800043/
diff --git a/test/com/google/enterprise/adaptor/fs/TestWindowsAclViews.java b/test/com/google/enterprise/adaptor/fs/TestWindowsAclViews.java
index 478593d..4247cb1 100644
--- a/test/com/google/enterprise/adaptor/fs/TestWindowsAclViews.java
+++ b/test/com/google/enterprise/adaptor/fs/TestWindowsAclViews.java
@@ -39,6 +39,7 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -47,6 +48,9 @@
  */
 public class TestWindowsAclViews {
 
+  // Store the SIDs in a map to avoid serializing and deserializing them.
+  static HashMap<Long, AccountSid> sidMap = new HashMap<Long, AccountSid>();
+    
   @Rule
   public final TemporaryFolder temp = new TemporaryFolder();
 
@@ -154,6 +158,7 @@
       sid.write();
       // See ACCESS_ACEStructure(Pointer p) constructor for mystery offsets.
       memory.setPointer(4 + 4, sid.getPointer());
+      sidMap.put(Pointer.nativeValue(sid.getPointer()), sid);
       ace = new Ace(memory);
       assertEquals(ace.getSID().sid, sid.getPointer());
       return ace;
@@ -255,7 +260,7 @@
 
     @Override
     Account getAccountBySid(WinNT.PSID sid) throws Win32Exception {
-      return new AccountSid(sid.sid).getAccount();
+      return sidMap.get(Pointer.nativeValue(sid.sid)).getAccount();
     }
   }
 }