public abstract class android.content.pm.split.SplitDependencyLoader<E extends java.lang.Exception>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: android.content.pm.split.SplitDependencyLoader
  super_class: java.lang.Object
{
  private final android.util.SparseArray<int[]> mDependencies;
    descriptor: Landroid/util/SparseArray;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Landroid/util/SparseArray<[I>;

  protected void <init>(android.util.SparseArray<int[]>);
    descriptor: (Landroid/util/SparseArray;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.content.pm.split.SplitDependencyLoader this
        start local 1 // android.util.SparseArray dependencies
         0: .line 49
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 50
            aload 0 /* this */
            aload 1 /* dependencies */
            putfield android.content.pm.split.SplitDependencyLoader.mDependencies:Landroid/util/SparseArray;
         2: .line 51
            return
        end local 1 // android.util.SparseArray dependencies
        end local 0 // android.content.pm.split.SplitDependencyLoader this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Landroid/content/pm/split/SplitDependencyLoader<TE;>;
            0    3     1  dependencies  Landroid/util/SparseArray<[I>;
    Signature: (Landroid/util/SparseArray<[I>;)V
    MethodParameters:
              Name  Flags
      dependencies  

  protected void loadDependenciesForSplit() throws E;
    descriptor: (I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // android.content.pm.split.SplitDependencyLoader this
        start local 1 // int splitIdx
         0: .line 63
            aload 0 /* this */
            iload 1 /* splitIdx */
            invokevirtual android.content.pm.split.SplitDependencyLoader.isSplitCached:(I)Z
            ifeq 2
         1: .line 64
            return
         2: .line 68
      StackMap locals:
      StackMap stack:
            iload 1 /* splitIdx */
            ifne 6
         3: .line 69
            aload 0 /* this */
            iconst_0
            invokevirtual android.content.pm.split.SplitDependencyLoader.collectConfigSplitIndices:(I)[I
            astore 2 /* configSplitIndices */
        start local 2 // int[] configSplitIndices
         4: .line 70
            aload 0 /* this */
            iconst_0
            aload 2 /* configSplitIndices */
            iconst_m1
            invokevirtual android.content.pm.split.SplitDependencyLoader.constructSplit:(I[II)V
         5: .line 71
            return
        end local 2 // int[] configSplitIndices
         6: .line 75
      StackMap locals:
      StackMap stack:
            new android.util.IntArray
            dup
            invokespecial android.util.IntArray.<init>:()V
            astore 2 /* linearDependencies */
        start local 2 // android.util.IntArray linearDependencies
         7: .line 76
            aload 2 /* linearDependencies */
            iload 1 /* splitIdx */
            invokevirtual android.util.IntArray.add:(I)V
         8: .line 83
      StackMap locals: android.util.IntArray
      StackMap stack:
            aload 0 /* this */
            getfield android.content.pm.split.SplitDependencyLoader.mDependencies:Landroid/util/SparseArray;
            iload 1 /* splitIdx */
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            checkcast int[]
            astore 3 /* deps */
        start local 3 // int[] deps
         9: .line 84
            aload 3 /* deps */
            ifnull 12
            aload 3 /* deps */
            arraylength
            ifle 12
        10: .line 85
            aload 3 /* deps */
            iconst_0
            iaload
            istore 1 /* splitIdx */
        11: .line 86
            goto 13
        12: .line 87
      StackMap locals: int[]
      StackMap stack:
            iconst_m1
            istore 1 /* splitIdx */
        13: .line 90
      StackMap locals:
      StackMap stack:
            iload 1 /* splitIdx */
            iflt 17
            aload 0 /* this */
            iload 1 /* splitIdx */
            invokevirtual android.content.pm.split.SplitDependencyLoader.isSplitCached:(I)Z
            ifeq 15
        14: .line 91
            goto 17
        15: .line 94
      StackMap locals:
      StackMap stack:
            aload 2 /* linearDependencies */
            iload 1 /* splitIdx */
            invokevirtual android.util.IntArray.add:(I)V
        end local 3 // int[] deps
        16: .line 80
            goto 8
        17: .line 98
      StackMap locals:
      StackMap stack:
            iload 1 /* splitIdx */
            istore 3 /* parentIdx */
        start local 3 // int parentIdx
        18: .line 99
            aload 2 /* linearDependencies */
            invokevirtual android.util.IntArray.size:()I
            iconst_1
            isub
            istore 4 /* i */
        start local 4 // int i
        19: goto 25
        20: .line 100
      StackMap locals: int int
      StackMap stack:
            aload 2 /* linearDependencies */
            iload 4 /* i */
            invokevirtual android.util.IntArray.get:(I)I
            istore 5 /* idx */
        start local 5 // int idx
        21: .line 101
            aload 0 /* this */
            iload 5 /* idx */
            invokevirtual android.content.pm.split.SplitDependencyLoader.collectConfigSplitIndices:(I)[I
            astore 6 /* configSplitIndices */
        start local 6 // int[] configSplitIndices
        22: .line 102
            aload 0 /* this */
            iload 5 /* idx */
            aload 6 /* configSplitIndices */
            iload 3 /* parentIdx */
            invokevirtual android.content.pm.split.SplitDependencyLoader.constructSplit:(I[II)V
        23: .line 103
            iload 5 /* idx */
            istore 3 /* parentIdx */
        end local 6 // int[] configSplitIndices
        end local 5 // int idx
        24: .line 99
            iinc 4 /* i */ -1
      StackMap locals:
      StackMap stack:
        25: iload 4 /* i */
            ifge 20
        end local 4 // int i
        26: .line 105
            return
        end local 3 // int parentIdx
        end local 2 // android.util.IntArray linearDependencies
        end local 1 // int splitIdx
        end local 0 // android.content.pm.split.SplitDependencyLoader this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   27     0                this  Landroid/content/pm/split/SplitDependencyLoader<TE;>;
            0   27     1            splitIdx  I
            4    6     2  configSplitIndices  [I
            7   27     2  linearDependencies  Landroid/util/IntArray;
            9   16     3                deps  [I
           18   27     3           parentIdx  I
           19   26     4                   i  I
           21   24     5                 idx  I
           22   24     6  configSplitIndices  [I
    Exceptions:
      throws java.lang.Exception
    Signature: (I)V^TE;
    MethodParameters:
          Name  Flags
      splitIdx  

  private int[] collectConfigSplitIndices(int);
    descriptor: (I)[I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.content.pm.split.SplitDependencyLoader this
         0: .line 111
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tEmptyArray cannot be resolved to a variable\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.content.pm.split.SplitDependencyLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/content/pm/split/SplitDependencyLoader<TE;>;
    MethodParameters:
          Name  Flags
      splitIdx  

  protected abstract boolean isSplitCached(int);
    descriptor: (I)Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      splitIdx  

  protected abstract void constructSplit(int, int[], ) throws E;
    descriptor: (I[II)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    Signature: (I[II)V^TE;
    MethodParameters:
                    Name  Flags
      splitIdx            
      configSplitIndices  
      parentSplitIdx      

  private static int[] append(int[], int);
    descriptor: ([II)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // int[] src
        start local 1 // int elem
         0: .line 144
            aload 0 /* src */
            ifnonnull 2
         1: .line 145
            iconst_1
            newarray 10
            dup
            iconst_0
            iload 1 /* elem */
            iastore
            areturn
         2: .line 147
      StackMap locals:
      StackMap stack:
            aload 0 /* src */
            aload 0 /* src */
            arraylength
            iconst_1
            iadd
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 2 /* dst */
        start local 2 // int[] dst
         3: .line 148
            aload 2 /* dst */
            aload 0 /* src */
            arraylength
            iload 1 /* elem */
            iastore
         4: .line 149
            aload 2 /* dst */
            areturn
        end local 2 // int[] dst
        end local 1 // int elem
        end local 0 // int[] src
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0   src  [I
            0    5     1  elem  I
            3    5     2   dst  [I
    MethodParameters:
      Name  Flags
      src   
      elem  

  public static android.util.SparseArray<int[]> createDependenciesFromPackage(android.content.pm.PackageParser$PackageLite);
    descriptor: (Landroid/content/pm/PackageParser$PackageLite;)Landroid/util/SparseArray;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // android.content.pm.PackageParser$PackageLite pkg
         0: .line 157
            new android.util.SparseArray
            dup
            invokespecial android.util.SparseArray.<init>:()V
            astore 1 /* splitDependencies */
        start local 1 // android.util.SparseArray splitDependencies
         1: .line 160
            aload 1 /* splitDependencies */
            iconst_0
            iconst_1
            newarray 10
            dup
            iconst_0
            iconst_m1
            iastore
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
         2: .line 164
            iconst_0
            istore 2 /* splitIdx */
        start local 2 // int splitIdx
         3: goto 18
         4: .line 165
      StackMap locals: android.util.SparseArray int
      StackMap stack:
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.isFeatureSplits:[Z
            iload 2 /* splitIdx */
            baload
            ifne 6
         5: .line 167
            goto 17
         6: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.usesSplitNames:[Ljava/lang/String;
            iload 2 /* splitIdx */
            aaload
            astore 4 /* splitDependency */
        start local 4 // java.lang.String splitDependency
         7: .line 173
            aload 4 /* splitDependency */
            ifnull 15
         8: .line 174
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            aload 4 /* splitDependency */
            invokestatic java.util.Arrays.binarySearch:([Ljava/lang/Object;Ljava/lang/Object;)I
            istore 5 /* depIdx */
        start local 5 // int depIdx
         9: .line 175
            iload 5 /* depIdx */
            ifge 13
        10: .line 176
            new android.content.pm.split.SplitDependencyLoader$IllegalDependencyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Split '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            iload 2 /* splitIdx */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 177
            ldc "' requires split '"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* splitDependency */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "', which is missing."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 176
            invokespecial android.content.pm.split.SplitDependencyLoader$IllegalDependencyException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 179
      StackMap locals: android.content.pm.PackageParser$PackageLite android.util.SparseArray int top java.lang.String int
      StackMap stack:
            iload 5 /* depIdx */
            iconst_1
            iadd
            istore 3 /* targetIdx */
        end local 5 // int depIdx
        start local 3 // int targetIdx
        14: .line 180
            goto 16
        end local 3 // int targetIdx
        15: .line 182
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* targetIdx */
        start local 3 // int targetIdx
        16: .line 184
      StackMap locals: android.content.pm.PackageParser$PackageLite android.util.SparseArray int int java.lang.String
      StackMap stack:
            aload 1 /* splitDependencies */
            iload 2 /* splitIdx */
            iconst_1
            iadd
            iconst_1
            newarray 10
            dup
            iconst_0
            iload 3 /* targetIdx */
            iastore
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
        end local 4 // java.lang.String splitDependency
        end local 3 // int targetIdx
        17: .line 164
      StackMap locals:
      StackMap stack:
            iinc 2 /* splitIdx */ 1
      StackMap locals:
      StackMap stack:
        18: iload 2 /* splitIdx */
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            arraylength
            if_icmplt 4
        end local 2 // int splitIdx
        19: .line 191
            iconst_0
            istore 2 /* splitIdx */
        start local 2 // int splitIdx
        20: goto 42
        21: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.isFeatureSplits:[Z
            iload 2 /* splitIdx */
            baload
            ifeq 23
        22: .line 194
            goto 41
        23: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.configForSplit:[Ljava/lang/String;
            iload 2 /* splitIdx */
            aaload
            astore 4 /* configForSplit */
        start local 4 // java.lang.String configForSplit
        24: .line 200
            aload 4 /* configForSplit */
            ifnull 37
        25: .line 201
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            aload 4 /* configForSplit */
            invokestatic java.util.Arrays.binarySearch:([Ljava/lang/Object;Ljava/lang/Object;)I
            istore 5 /* depIdx */
        start local 5 // int depIdx
        26: .line 202
            iload 5 /* depIdx */
            ifge 30
        27: .line 203
            new android.content.pm.split.SplitDependencyLoader$IllegalDependencyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Split '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            iload 2 /* splitIdx */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        28: .line 204
            ldc "' targets split '"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* configForSplit */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "', which is missing."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        29: .line 203
            invokespecial android.content.pm.split.SplitDependencyLoader$IllegalDependencyException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 207
      StackMap locals: android.content.pm.PackageParser$PackageLite android.util.SparseArray int top java.lang.String int
      StackMap stack:
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.isFeatureSplits:[Z
            iload 5 /* depIdx */
            baload
            ifne 35
        31: .line 208
            new android.content.pm.split.SplitDependencyLoader$IllegalDependencyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Split '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            iload 2 /* splitIdx */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        32: .line 209
            ldc "' declares itself as configuration split for a non-feature split '"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        33: .line 210
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            iload 5 /* depIdx */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        34: .line 208
            invokespecial android.content.pm.split.SplitDependencyLoader$IllegalDependencyException.<init>:(Ljava/lang/String;)V
            athrow
        35: .line 212
      StackMap locals:
      StackMap stack:
            iload 5 /* depIdx */
            iconst_1
            iadd
            istore 3 /* targetSplitIdx */
        end local 5 // int depIdx
        start local 3 // int targetSplitIdx
        36: .line 213
            goto 38
        end local 3 // int targetSplitIdx
        37: .line 214
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* targetSplitIdx */
        start local 3 // int targetSplitIdx
        38: .line 216
      StackMap locals: android.content.pm.PackageParser$PackageLite android.util.SparseArray int int java.lang.String
      StackMap stack:
            aload 1 /* splitDependencies */
            iload 3 /* targetSplitIdx */
        39: .line 217
            aload 1 /* splitDependencies */
            iload 3 /* targetSplitIdx */
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            checkcast int[]
            iload 2 /* splitIdx */
            iconst_1
            iadd
            invokestatic android.content.pm.split.SplitDependencyLoader.append:([II)[I
        40: .line 216
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
        end local 4 // java.lang.String configForSplit
        end local 3 // int targetSplitIdx
        41: .line 191
      StackMap locals:
      StackMap stack:
            iinc 2 /* splitIdx */ 1
      StackMap locals:
      StackMap stack:
        42: iload 2 /* splitIdx */
            aload 0 /* pkg */
            getfield android.content.pm.PackageParser$PackageLite.splitNames:[Ljava/lang/String;
            arraylength
            if_icmplt 21
        end local 2 // int splitIdx
        43: .line 221
            new java.util.BitSet
            dup
            invokespecial java.util.BitSet.<init>:()V
            astore 2 /* bitset */
        start local 2 // java.util.BitSet bitset
        44: .line 222
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        45: aload 1 /* splitDependencies */
            invokevirtual android.util.SparseArray.size:()I
            istore 4 /* size */
        start local 4 // int size
        46: goto 59
        47: .line 223
      StackMap locals: android.content.pm.PackageParser$PackageLite android.util.SparseArray java.util.BitSet int int
      StackMap stack:
            aload 1 /* splitDependencies */
            iload 3 /* i */
            invokevirtual android.util.SparseArray.keyAt:(I)I
            istore 5 /* splitIdx */
        start local 5 // int splitIdx
        48: .line 225
            aload 2 /* bitset */
            invokevirtual java.util.BitSet.clear:()V
        49: .line 226
            goto 57
        50: .line 228
      StackMap locals: int
      StackMap stack:
            aload 2 /* bitset */
            iload 5 /* splitIdx */
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 52
        51: .line 229
            new android.content.pm.split.SplitDependencyLoader$IllegalDependencyException
            dup
            ldc "Cycle detected in split dependencies."
            invokespecial android.content.pm.split.SplitDependencyLoader$IllegalDependencyException.<init>:(Ljava/lang/String;)V
            athrow
        52: .line 233
      StackMap locals:
      StackMap stack:
            aload 2 /* bitset */
            iload 5 /* splitIdx */
            invokevirtual java.util.BitSet.set:(I)V
        53: .line 236
            aload 1 /* splitDependencies */
            iload 5 /* splitIdx */
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            checkcast int[]
            astore 6 /* deps */
        start local 6 // int[] deps
        54: .line 237
            aload 6 /* deps */
            ifnull 55
            aload 6 /* deps */
            iconst_0
            iaload
            goto 56
      StackMap locals: int[]
      StackMap stack:
        55: iconst_m1
      StackMap locals:
      StackMap stack: int
        56: istore 5 /* splitIdx */
        end local 6 // int[] deps
        57: .line 226
      StackMap locals:
      StackMap stack:
            iload 5 /* splitIdx */
            iconst_m1
            if_icmpne 50
        end local 5 // int splitIdx
        58: .line 222
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        59: iload 3 /* i */
            iload 4 /* size */
            if_icmplt 47
        end local 4 // int size
        end local 3 // int i
        60: .line 240
            aload 1 /* splitDependencies */
            areturn
        end local 2 // java.util.BitSet bitset
        end local 1 // android.util.SparseArray splitDependencies
        end local 0 // android.content.pm.PackageParser$PackageLite pkg
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   61     0                pkg  Landroid/content/pm/PackageParser$PackageLite;
            1   61     1  splitDependencies  Landroid/util/SparseArray<[I>;
            3   19     2           splitIdx  I
           14   15     3          targetIdx  I
           16   17     3          targetIdx  I
            7   17     4    splitDependency  Ljava/lang/String;
            9   14     5             depIdx  I
           20   43     2           splitIdx  I
           36   37     3     targetSplitIdx  I
           38   41     3     targetSplitIdx  I
           24   41     4     configForSplit  Ljava/lang/String;
           26   36     5             depIdx  I
           44   61     2             bitset  Ljava/util/BitSet;
           45   60     3                  i  I
           46   60     4               size  I
           48   58     5           splitIdx  I
           54   57     6               deps  [I
    Exceptions:
      throws android.content.pm.split.SplitDependencyLoader$IllegalDependencyException
    Signature: (Landroid/content/pm/PackageParser$PackageLite;)Landroid/util/SparseArray<[I>;
    MethodParameters:
      Name  Flags
      pkg   
}
Signature: <E:Ljava/lang/Exception;>Ljava/lang/Object;
SourceFile: "SplitDependencyLoader.java"
NestMembers:
  android.content.pm.split.SplitDependencyLoader$IllegalDependencyException
InnerClasses:
  public PackageLite = android.content.pm.PackageParser$PackageLite of android.content.pm.PackageParser
  public IllegalDependencyException = android.content.pm.split.SplitDependencyLoader$IllegalDependencyException of android.content.pm.split.SplitDependencyLoader