public ConstantPoolInfo ReadConstantPoolInfo() { ConstantPoolInfo result = new ConstantPoolInfo(); result.IntArrayCapacity = ReadU30(); for (uint i = 1; i < result.IntArrayCapacity; i++) { result.SetIntAt(ReadS32(), i); } result.UIntArrayCapacity = ReadU30(); for (uint i = 1; i < result.UIntArrayCapacity; i++) { result.SetUIntAt(ReadU30(), i); } result.DoubleArrayCapacity = ReadU30(); for (uint i = 1; i < result.DoubleArrayCapacity; i++) { result.SetDoubleAt(ReadDouble(), i); } result.StringArrayCapacity = ReadU30(); for (uint i = 1; i < result.StringArrayCapacity; i++) { result.SetStringAt(new StringInfo(i, ReadString()), i); } result.NamespaceArrayCapacity = ReadU30(); for (uint i = 1; i < result.NamespaceArrayCapacity; i++) { NamespaceInfo namespaceInfo = new NamespaceInfo(result, i); namespaceInfo.Kind = (NamespaceKind)ReadByte(); namespaceInfo.Name = result.GetStringAt(ReadU30()); result.SetNamespaceAt(namespaceInfo, i); } result.NamespaceSetArrayCapacity = ReadU30(); for (uint i = 1; i < result.NamespaceSetArrayCapacity; i++) { NamespaceSetInfo namespaceSetInfo = new NamespaceSetInfo(i); namespaceSetInfo.NamespaceArray = new NamespaceInfo[ReadU30()]; for (int j = 0; j < namespaceSetInfo.NamespaceArray.Length; j++) { namespaceSetInfo.NamespaceArray[j] = result.GetNamespaceAt(ReadU30()); } result.SetNamespaceSetAt(namespaceSetInfo, i); } result.MultinameArrayCapacity = ReadU30(); for (uint i = 1; i < result.MultinameArrayCapacity; i++) { result.SetMultinameAt(ReadMultinameInfo(result, i), i); } return(result); }