code: package android.content.pm;
  
  import android.content.ComponentName;
  import android.content.IntentFilter;
  import android.os.Bundle;
  
  import java.util.ArrayList;
  
  /**
   * @author Lody
   */
  public class PackageParser {
  
      public static final int PARSE_IS_SYSTEM = 1;
  
      public static class IntentInfo extends IntentFilter {
          public boolean hasDefault;
          public int labelRes;
          public CharSequence nonLocalizedLabel;
          public int icon;
          public int logo;
          public int banner;
      }
  
      public static class Component<II extends IntentInfo> {
          public Package owner;
          public ArrayList<II> intents;
          public String className;
          public Bundle metaData;
  
          public ComponentName getComponentName() {
              return null;
          }
      }
  
      public final static class Activity extends Component<ActivityIntentInfo> {
          public ActivityInfo info;
      }
  
      public class Package {
          public final ArrayList<Activity> activities = new ArrayList<Activity>(0);
          public final ArrayList<Activity> receivers = new ArrayList<Activity>(0);
          public final ArrayList<Provider> providers = new ArrayList<Provider>(0);
          public final ArrayList<Service> services = new ArrayList<Service>(0);
          public final ArrayList<Instrumentation> instrumentation = new ArrayList<Instrumentation>(0);
          public final ArrayList<Permission> permissions = new ArrayList<Permission>(0);
          public final ArrayList<PermissionGroup> permissionGroups = new ArrayList<PermissionGroup>(0);
          public final ArrayList<String> requestedPermissions = new ArrayList<String>();
          public Signature[] mSignatures;
          public Bundle mAppMetaData;
          public Object mExtras;
          public String packageName;
          public int mPreferredOrder;
          public String mSharedUserId;
          public ArrayList<String> usesLibraries;
          public int mVersionCode;
          public ApplicationInfo applicationInfo;
          public String mVersionName;
  
          // Applications hardware preferences
          public ArrayList<ConfigurationInfo> configPreferences = null;
  
          // Applications requested features
          public ArrayList<FeatureInfo> reqFeatures = null;
          public int mSharedUserLabel;
      }
  
      public final class Service extends Component<ServiceIntentInfo> {
          public ServiceInfo info;
      }
  
      public final class Provider extends Component<ProviderIntentInfo> {
          public ProviderInfo info;
      }
  
      public final class Instrumentation extends Component<IntentInfo> {
          public InstrumentationInfo info;
      }
  
      public final class Permission extends Component<IntentInfo> {
          public PermissionInfo info;
      }
  
      public final class PermissionGroup extends Component<IntentInfo> {
          public PermissionGroupInfo info;
      }
  
      public class ActivityIntentInfo extends IntentInfo {
          public Activity activity;
      }
  
  
      public class ServiceIntentInfo extends IntentInfo {
          public Service service;
      }
  
      public class ProviderIntentInfo extends IntentInfo {
          public Provider provider;
      }
  }
  