final void fetchAttributes(int[] styleableIDs, TypedArray result) {
   result.reset();
   if (m_attributes == null || m_resourceIDs == null) {
     return;
   }
   boolean needStrings = false;
   for (int i = 0, e = styleableIDs.length; i != e; ++i) {
     int id = styleableIDs[i];
     for (int o = 0; o != m_attributes.length; o += ATTRIBUTE_LENGHT) {
       int name = m_attributes[o + ATTRIBUTE_IX_NAME];
       if (name >= m_resourceIDs.length || m_resourceIDs[name] != id) {
         continue;
       }
       int valueType = m_attributes[o + ATTRIBUTE_IX_VALUE_TYPE];
       int valueData;
       int assetCookie;
       if (valueType == TypedValue.TYPE_STRING) {
         valueData = m_attributes[o + ATTRIBUTE_IX_VALUE_STRING];
         assetCookie = -1;
         needStrings = true;
       } else {
         valueData = m_attributes[o + ATTRIBUTE_IX_VALUE_DATA];
         assetCookie = 0;
       }
       result.addValue(i, valueType, valueData, assetCookie, id, 0);
     }
   }
   if (needStrings) {
     result.setStrings(m_strings);
   }
 }