private static WindowsFileAttributes fromFileAttributeData(long address,int reparseTag){
  int fileAttrs=unsafe.getInt(address + OFFSETOF_FILE_ATTRIBUTE_DATA_ATTRIBUTES);
  long creationTime=unsafe.getLong(address + OFFSETOF_FILE_ATTRIBUTE_DATA_CREATETIME);
  long lastAccessTime=unsafe.getLong(address + OFFSETOF_FILE_ATTRIBUTE_DATA_LASTACCESSTIME);
  long lastWriteTime=unsafe.getLong(address + OFFSETOF_FILE_ATTRIBUTE_DATA_LASTWRITETIME);
  long size=((long)(unsafe.getInt(address + OFFSETOF_FILE_ATTRIBUTE_DATA_SIZEHIGH)) << 32) + (unsafe.getInt(address + OFFSETOF_FILE_ATTRIBUTE_DATA_SIZELOW) & 0xFFFFFFFFL);
  return new WindowsFileAttributes(fileAttrs,creationTime,lastAccessTime,lastWriteTime,size,reparseTag,0,0,0);
}

private static WindowsFileAttributes fromFileAttributeData ( long address , int reparseTag ) { int fileAttrs = unsafe . getInt ( address + OFFSETOF_FILE_ATTRIBUTE_DATA_ATTRIBUTES ) ; long creationTime = unsafe . getLong ( address + OFFSETOF_FILE_ATTRIBUTE_DATA_CREATETIME ) ; long lastAccessTime = unsafe . getLong ( address + OFFSETOF_FILE_ATTRIBUTE_DATA_LASTACCESSTIME ) ; long lastWriteTime = unsafe . getLong ( address + OFFSETOF_FILE_ATTRIBUTE_DATA_LASTWRITETIME ) ; long size = ( ( long ) ( unsafe . getInt ( address + OFFSETOF_FILE_ATTRIBUTE_DATA_SIZEHIGH ) ) << 32 ) + ( unsafe . getInt ( address + OFFSETOF_FILE_ATTRIBUTE_DATA_SIZELOW ) & 0xFFFFFFFFL ) ; return new WindowsFileAttributes ( fileAttrs , creationTime , lastAccessTime , lastWriteTime , size , reparseTag , 0 , 0 , 0 ) ; }
create a windowsfileattributes from a win32_file_attribute_data structure
