traditionally , unix systems have one file per time zone . we have one big data file , which is just a concatenation of regular time zone files . to allow random access into this big data file , we also have an index . we read the index at startup , and keep it in memory so we can binary search by id when we need time zone data . the format of this file is , i believe , android 's own , and undocumented . all this code assumes strings are us-ascii . concode_field_sep int[] byteOffsets concode_elem_sep Object LOCK concode_elem_sep MemoryMappedFile ALL_ZONE_DATA concode_elem_sep String[] ids concode_elem_sep int[] rawUtcOffsets concode_elem_sep String INDEX_FILE_NAME concode_elem_sep String VERSION concode_elem_sep String ZONE_FILE_NAME concode_elem_sep String ZONE_DIRECTORY_NAME concode_field_sep String readVersion concode_elem_sep String getVersion concode_elem_sep MemoryMappedFile mapData concode_elem_sep TimeZone getTimeZone concode_elem_sep String[] getAvailableIDs concode_elem_sep String[] getAvailableIDs concode_elem_sep TimeZone getSystemDefault concode_elem_sep TimeZone makeTimeZone
void function ( ) { MemoryMappedFile loc0 = null ; try { loc0 = MemoryMappedFile . mmapRO ( INDEX_FILE_NAME ) ; readIndex ( loc0 ) ; } catch ( Exception loc1 ) { throw new AssertionError ( loc1 ) ; } finally { IoUtils . closeQuietly ( loc0 ) ; } }